Compare commits

..

3258 Commits

Author SHA1 Message Date
Daniel Stenberg
95a4b8db68 7.10.5 commit 2003-05-19 11:45:10 +00:00
Daniel Stenberg
663c1898a3 known AIX ipv6 problems 2003-05-16 10:57:53 +00:00
Daniel Stenberg
465de793e8 Skip any preceeding dots from the domain name of cookies when we keep them
in memory, only add it when we save the cookie. This makes all tailmatching
and domain string matching internally a lot easier.

This was also the reason for a remaining bug I introduced in my overhaul.
2003-05-15 22:28:19 +00:00
Daniel Stenberg
de9b76cef0 change the order of the in_addr_t tests, so that 'unsigned long' is tested
for first, as it seems to be what many systems use
2003-05-15 21:13:36 +00:00
Daniel Stenberg
1747a8d3d9 1. George Comninos' progress meter fix
2. I also added the pre-releases and dates to the log
2003-05-15 08:13:19 +00:00
Daniel Stenberg
1094e79749 documented CURLOPT_FTP_USE_EPRT 2003-05-14 09:03:51 +00:00
Daniel Stenberg
22569681bc George Comninos provided a fix that calls the progress meter when waiting
for FTP command responses take >1 second.
2003-05-14 06:31:00 +00:00
Daniel Stenberg
e615d117a0 Setup and use CURL_INADDR_NONE all over instead of INADDR_NONE. We setup
the define accordingly in the hostip.h header to work nicely all over.
2003-05-13 12:12:17 +00:00
Daniel Stenberg
a51258b6bb before using if2ip(), check if the address is an ip address and skip it if
it is.
2003-05-13 12:11:31 +00:00
Daniel Stenberg
8894bd07b6 libtool 1.4.2 is enough 2003-05-13 09:38:09 +00:00
Daniel Stenberg
ec45a9e825 fix comment 2003-05-13 09:37:45 +00:00
Daniel Stenberg
871358a6e5 before checking for network interfaces using if2ip(), check that the given
name isn't an ip address
2003-05-12 13:06:48 +00:00
Daniel Stenberg
2e2e0fba60 no more complaining when I have 1.5 and it tests for 1.4.2 2003-05-12 13:05:11 +00:00
Daniel Stenberg
4a5139e3f4 fixes from the last week+ 2003-05-12 12:49:22 +00:00
Daniel Stenberg
8f85933d7c Dan F clarified the CURLOPT_ENCODING description after his changes to
allow "" to enable all support formats.
2003-05-12 12:47:35 +00:00
Daniel Stenberg
246f3a63f6 Dan Fandrich added --compressed docu 2003-05-12 12:46:45 +00:00
Daniel Stenberg
e99eff4eb0 setting ENCODING to "" means enable-all-you-support 2003-05-12 12:45:57 +00:00
Daniel Stenberg
c0197f19cf Dan Fandrich changed CURLOPT_ENCODING to select all supported encodings if
set to "".  This frees the application from having to know which encodings
 the library supports.
2003-05-12 12:45:14 +00:00
Daniel Stenberg
3994d67eea Dan Fandrich lowered the libtool requirement 2003-05-12 12:38:52 +00:00
Daniel Stenberg
9ead79c9d4 when we have accepted the server's connection in a PORT sequence, we set
the new socket to non-blocking
2003-05-12 12:37:35 +00:00
Daniel Stenberg
9371aed46c avoid the write loop 2003-05-12 12:37:05 +00:00
Daniel Stenberg
940707ad66 incoming proxy headers shall be sent to the debug function has HEADERs not
DATA
2003-05-12 12:29:00 +00:00
Daniel Stenberg
e6c267fb4c oops, run libtoolize as the first tool 2003-05-09 08:17:41 +00:00
Daniel Stenberg
93538fccd6 run libtoolize too 2003-05-09 08:13:02 +00:00
Daniel Stenberg
83a7fad308 run libtoolize to generate these files 2003-05-09 08:12:46 +00:00
Daniel Stenberg
3c7e33388e CURLOPT_FTP_USE_EPRT added 2003-05-09 07:42:47 +00:00
Daniel Stenberg
7b0f35edb6 --disable-eprt added 2003-05-09 07:39:50 +00:00
Daniel Stenberg
94a157d0b0 support for CURLOPT_FTP_USE_EPRT added 2003-05-09 07:39:29 +00:00
Daniel Stenberg
ca04620253 AIX wants sys/select.h 2003-05-09 07:37:27 +00:00
Daniel Stenberg
073ef0b36a clarify on the curl name issue and that there may be other libcurl-based
tools that provide GUI
2003-05-09 07:07:13 +00:00
Daniel Stenberg
c41c05d4f4 Kevin Delafield reported another case where we didn't correctly check for
EAGAIN but only EWOULDBLOCK, which caused badness on HPUX. We also check for
 and act the same on EINTR errors as well now.
2003-05-06 08:19:36 +00:00
Daniel Stenberg
f1ea54e07a fixed the required tools' version numbers 2003-05-05 14:19:54 +00:00
Daniel Stenberg
a139ce901a the writable argv check now should not exit when building a cross-compiled
curl
2003-05-04 16:07:19 +00:00
Daniel Stenberg
7431957113 put back the libtool test, now for 1.5
require autoconf 2.57
require automake 1.7
2003-05-03 16:25:49 +00:00
Daniel Stenberg
1752d80915 If there is a custom Host: header specified, we use that host name to
extract the correct set of cookies to send. This functionality is verified
by test case 62.
2003-05-02 09:13:19 +00:00
Daniel Stenberg
aa7420e109 send correct cookies when using a custom Host: 2003-05-02 09:12:26 +00:00
Daniel Stenberg
a290d4b9db fixed the format slightly 2003-05-02 09:11:53 +00:00
Daniel Stenberg
19a4314e7f corrected a comment about gzip not being supported 2003-05-01 17:49:47 +00:00
Daniel Stenberg
d166e85e0a FTP URL with type=a 2003-05-01 17:48:59 +00:00
Daniel Stenberg
f213e857ab Andy Cedilnik fixed some compiler warnings 2003-05-01 13:37:36 +00:00
Daniel Stenberg
eb6130baa7 ourerrno became Curl_ourerrno() and is now available to all libcurl 2003-05-01 13:37:05 +00:00
Daniel Stenberg
f69ea2c68a Use the proper Curl_ourerrno() function instead of plain errno, for better
portability. Also use Andy Cedilnik's compiler warning fixes.
2003-05-01 13:36:28 +00:00
Daniel Stenberg
078441d477 the test numbers are now only for human readability, the numbers no longer
enforces protocol/server
2003-04-30 20:29:31 +00:00
Daniel Stenberg
95f6b15a67 no longer assume that the test number implies servers to run 2003-04-30 20:28:49 +00:00
Daniel Stenberg
ee29dbdb8f Each test case now specifies which server(s) it needs, without relying on the
test number.
2003-04-30 20:25:39 +00:00
Daniel Stenberg
15f3f4c93f we say welcome to test 142 2003-04-30 20:08:01 +00:00
Daniel Stenberg
6932e94e0e verify that curl fails fine when an FTP URL with a too deep dir hierarchy
is used
2003-04-30 20:07:37 +00:00
Daniel Stenberg
3ef06d7efe when making up the list of path parts, save the last entry pointing to NULL
as otherwise we'll go nuts
2003-04-30 20:04:17 +00:00
Daniel Stenberg
fb012b48e9 recent action 2003-04-30 20:01:22 +00:00
Daniel Stenberg
bc77bf217f if there's a cookiehost allocated, free that too 2003-04-30 19:58:36 +00:00
Daniel Stenberg
37d1e9351e ok, make the test run ok too 2003-04-30 19:56:53 +00:00
Daniel Stenberg
4494c0dee0 various new cookie tests with a custom Host: header set 2003-04-30 19:49:51 +00:00
Daniel Stenberg
26afc604ac modified to work with modified code 2003-04-30 17:16:25 +00:00
Daniel Stenberg
9aefcada19 modified to produce nicer output when a single test fails 2003-04-30 17:15:38 +00:00
Daniel Stenberg
69fc363760 make the diffs with 'diff -u' to make them nicer and easier to read 2003-04-30 17:15:00 +00:00
Daniel Stenberg
bea02ddebe stop parsing Host: host names at colons too 2003-04-30 17:12:29 +00:00
Daniel Stenberg
3fb257c39c modified to the new cookie function proto 2003-04-30 17:05:19 +00:00
Daniel Stenberg
7c96c5a39b extract host name from custom Host: headers to use for cookies 2003-04-30 17:04:53 +00:00
Daniel Stenberg
efd836d971 Many cookie fixes:
o Save domains in jars like Mozilla does. It means all domains set in
    Set-Cookie: headers are dot-prefixed.
  o Save and use the 'tailmatch' field in the Mozilla/Netscape cookie jars (the
    second column).
  o Reject cookies using illegal domains in the Set-Cookie: line. Concerns
    both domains with too few dots or domains that are outside the currently
    operating server host's domain.
  o Set the path part by default to the one used in the request, if none was
    set in the Set-Cookie line.
2003-04-30 17:03:43 +00:00
Daniel Stenberg
836aaa1647 changes need for the new ftp path treatment and the new cookie code 2003-04-30 17:01:00 +00:00
Daniel Stenberg
bf2b3dbf3e David Balazic's patch to make the FTP operations "do right" according to
RFC1738, which means it'll use one CWD for each pathpart.
2003-04-30 16:59:42 +00:00
Daniel Stenberg
b4fa2ff995 two more platforms Rich Gray built curl on 2003-04-30 07:32:43 +00:00
Daniel Stenberg
2f9cabc30b Peter Kovacs provided a patch that makes the CURLINFO_CONNECT_TIME work fine
when using the multi interface (too).
2003-04-29 18:03:30 +00:00
Daniel Stenberg
63593f5597 mention configure --help 2003-04-29 16:55:17 +00:00
Daniel Stenberg
c0acaa5d2c CURLOPT_FTPPORT could support port number too 2003-04-28 17:29:32 +00:00
Daniel Stenberg
2e46f8d0a6 corrected the comment which wasn't correct 2003-04-28 13:48:16 +00:00
Daniel Stenberg
51da6aaa07 RSAglue.lib is no longer needed with recent OpenSSL versions 2003-04-25 15:08:46 +00:00
Daniel Stenberg
c8b79e36db Dan Fandrich added support for the gzip Content-Encoding for --compressed 2003-04-24 06:34:31 +00:00
Daniel Stenberg
208374bcc9 Bryan Kemp's reported problems with curl and PUT from stdin and a faked
content-length made me add test case 60, that does exactly this, but it
seems to run fine...
2003-04-23 12:09:58 +00:00
Daniel Stenberg
7f0a6e7203 last 10 days or so 2003-04-22 23:30:04 +00:00
Daniel Stenberg
54ebb9cfd4 libtool 1.5 stuff 2003-04-22 23:29:27 +00:00
Daniel Stenberg
49e9c1495b stop checking for libtool, we don't run that in this script 2003-04-22 23:26:00 +00:00
Daniel Stenberg
a84b0fbd52 Dan Fandrich corrected the error messages on "bad encoding". 2003-04-22 22:33:39 +00:00
Daniel Stenberg
c95814c04d Dan Fandrich's gzip bugfix 2003-04-22 22:32:02 +00:00
Daniel Stenberg
9f8123f1b8 Dan Fandrich's fix 2003-04-22 22:31:02 +00:00
Daniel Stenberg
8b23db4f4d Peter Sylvester pointed out that curl_easy_setopt() will always (wrongly)
return CURLE_OK no matter what happens.
2003-04-22 21:42:39 +00:00
Daniel Stenberg
d77cc13374 two dashes is enough 2003-04-16 12:46:20 +00:00
Daniel Stenberg
9a12db1aa2 typecast the setting of the size, as it might be an off_t which is bigger
than long and libcurl expects a long...
2003-04-15 14:18:37 +00:00
Daniel Stenberg
eb54d34bec If MALLOCDEBUG, include the lib's setup.h here so that the proper defines
are set before all system headers, as otherwise we get compiler warnings
on my Solaris at least.
2003-04-15 14:01:57 +00:00
Daniel Stenberg
4b1203d4c9 include config.h before all system headers, so that _FILE_OFFSET_BITS and
similar is set properly by us first
2003-04-15 13:32:26 +00:00
Daniel Stenberg
183a9c6244 extended the -F section 2003-04-15 09:58:27 +00:00
Daniel Stenberg
1f2294d585 treat uploaded .html files as text/html by default 2003-04-15 09:29:39 +00:00
Daniel Stenberg
0b839c4f77 return the same error for the sslv2 "certificate verify failed" code 2003-04-14 22:00:36 +00:00
Daniel Stenberg
1d4fd1fcae new wording by Kevin Roth 2003-04-14 14:54:18 +00:00
Daniel Stenberg
b1d8d72c16 ignore all stamp-h* 2003-04-14 13:09:44 +00:00
Daniel Stenberg
bafb68b844 With the recent fix of libcurl, it shall now return CURLE_SSL_CACERT when
it had problems withe CA cert and thus we offer a huge blurb of verbose
help to explain to the poor user why this happens.
2003-04-14 13:09:09 +00:00
Daniel Stenberg
21873b52e9 Restored the SSL error codes since they was broken in the 7.10.4 release,
also now attempt to detect and return the specific CACERT error code.
2003-04-14 12:53:29 +00:00
Daniel Stenberg
0aa8b82871 FTP CWD response fixed
gzip content-encoding added
chunked content-encoding fixed
2003-04-14 07:13:08 +00:00
Daniel Stenberg
f9781afafd clarified the CURLINFO_SIZE_DOWNLOAD somewhat on Juan F. Codagnone's
suggestion
2003-04-11 16:52:30 +00:00
Daniel Stenberg
fece361a55 Nic fixed so that Curl_client_write() must not be called with 0 lenth data.
I edited somewhat and removed trailing whitespaces.
2003-04-11 16:31:18 +00:00
Daniel Stenberg
7b51b2f128 Nic Hines fixed this bug when deflate or gzip contents were downloaded using
chunked encoding.
2003-04-11 16:23:43 +00:00
Daniel Stenberg
22d88fb28e ah, move the zero byte too or havoc will occur 2003-04-11 16:23:06 +00:00
Daniel Stenberg
f7c5b28e76 verify the new url parser fix 2003-04-11 16:22:27 +00:00
Daniel Stenberg
5760f2a307 support ? as separator instead of / even if not protocol was given 2003-04-11 16:08:41 +00:00
Daniel Stenberg
ee46efb5a5 these guys deserve a mentioning here as well 2003-04-11 08:57:19 +00:00
Daniel Stenberg
eb6ffebfc7 Dan the man on the list 2003-04-11 08:55:08 +00:00
Daniel Stenberg
c06c44f286 Dan Fandrich's added gzip support documented. 2003-04-11 08:51:24 +00:00
Daniel Stenberg
019c4088cf Dan Fandrich's gzip patch applied 2003-04-11 08:49:20 +00:00
Daniel Stenberg
0b0a88b78d when saving a cookie jar fails, you don't get an error code or anything,
just a warning in the verbose output stream
2003-04-11 08:19:06 +00:00
Daniel Stenberg
028e9cc56f According to RFC959, CWD is supposed to return 250 on success, but
there seem to be non-compliant FTP servers out there that return 200,
 so we accept any '2xy' response now.
2003-04-11 08:10:54 +00:00
Daniel Stenberg
e0d8615ece show a verbose warning message in case cookie-saving fails, after
Ralph Mitchell's notification.
2003-04-11 07:39:16 +00:00
Daniel Stenberg
c8ecbda40b new ftp tests 2003-04-10 11:43:47 +00:00
Daniel Stenberg
2324c10d43 another week has passed 2003-04-10 11:36:56 +00:00
Daniel Stenberg
89cfa76291 Vlad Krupin's URL parsing patch to fix the URL parsing when the URL has no
slash after the host name, but still a ? and following "parameters".
2003-04-10 09:44:39 +00:00
Daniel Stenberg
072070a22c oops, committed test code not meant to be here 2003-04-09 12:02:06 +00:00
Daniel Stenberg
3c3ad134ea the default debugfunction shows incoming headers as well 2003-04-09 11:57:06 +00:00
Daniel Stenberg
a4ffcfd4d5 timecond support added
made the Last-Modified (faked) header look correct using GMT always
2003-04-09 11:56:31 +00:00
Daniel Stenberg
136670c58a three new ftp tests 2003-04-09 11:55:24 +00:00
Daniel Stenberg
28169725fa <mdtm> added 2003-04-09 11:53:09 +00:00
Daniel Stenberg
5b13106f54 MDTM support added 2003-04-09 11:52:24 +00:00
Daniel Stenberg
1a2db0dfb1 James Bursa fixed a flaw in the content-type extracting code that could
miss the first letter
2003-04-08 14:48:38 +00:00
Daniel Stenberg
696f95bb0a share.c added 2003-04-08 10:35:35 +00:00
Daniel Stenberg
acec588fe3 --disable-eprt perhaps? 2003-04-07 06:41:24 +00:00
Daniel Stenberg
6ed0da8e98 Ryan Weaver's fix to prevent the ca bundle to get installed even when
building curl without SSL support!
2003-04-06 12:29:45 +00:00
Daniel Stenberg
7fd91d70bd adjusted the formpost testcases to the new boundary string construction 2003-04-04 12:30:35 +00:00
Daniel Stenberg
61788a0389 Changed how boundary strings are generated. This new way uses 28 dashes
and 12 following hexadecimal letters, which seems to be what IE uses.
This makes curl work smoother with more stupidly written server apps.

Worked this out together with Martijn Broenland.
2003-04-04 12:24:01 +00:00
Daniel Stenberg
0821447b5b spell fix 2003-04-03 16:11:47 +00:00
Daniel Stenberg
3cba274ba6 kill a compiler warning on cygwin 2003-04-03 14:16:15 +00:00
Daniel Stenberg
df7bbcfd21 Added log output for when the writing of the input HTTP request is successful
or unsuccessful. Used to track down the recent cygwin test suite problems.
2003-04-03 13:43:15 +00:00
Daniel Stenberg
021d406f0c Modified how we log data to server.input, as we can't keep the file open
very much as it makes it troublesome on certain operating systems.
2003-04-03 13:42:06 +00:00
Daniel Stenberg
294569c502 new 2003-04-03 13:39:36 +00:00
Daniel Stenberg
bfd00ac2ed 7.10.4 commit 2003-04-02 07:48:56 +00:00
Daniel Stenberg
735a4714f4 Version 7.10.4 2003-04-02 07:42:39 +00:00
Daniel Stenberg
827fd47198 documented the new killserver tag 2003-04-01 08:43:09 +00:00
Daniel Stenberg
e26b917661 kill the ftp server afterwards, it is just so messed up 2003-04-01 08:42:37 +00:00
Daniel Stenberg
92872a2a3c log when we've returned verification that we are the test server 2003-04-01 08:42:14 +00:00
Daniel Stenberg
16ddb09cb4 support the new <killserver> tag 2003-04-01 08:41:49 +00:00
Daniel Stenberg
d37031f14e ignore lib505 too 2003-04-01 07:13:28 +00:00
Daniel Stenberg
b4e84ca7d2 lib505.c is a new test case for ftp uploading with rename 2003-04-01 07:13:04 +00:00
Daniel Stenberg
47970b9e6f Added support for the RNFR/RNTO commands 2003-04-01 07:10:08 +00:00
Daniel Stenberg
f65f120d50 updated 2003-03-31 22:16:12 +00:00
Daniel Stenberg
df00ec3c82 move the ssl config clone call to before the connectionexists call and then
also subsequently free the ssl struct if the connection struct is to be
deleted
2003-03-31 21:43:05 +00:00
Sterling Hughes
ad6fca28f9 testing, ignore this commit 2003-03-31 15:59:17 +00:00
Daniel Stenberg
fd33923496 7.10.4-pre6 commit 2003-03-31 14:02:43 +00:00
Daniel Stenberg
a55649dc82 added dist-hook that clears the tests/log dir properly as otherwise
'make distcheck' doesn't pass
2003-03-31 11:37:47 +00:00
Daniel Stenberg
9558f229db Fixup after talks with Richard Bramante. We should now make better
comparisons before re-using SSL connections and re-using SSL connection IDs.
2003-03-31 05:13:26 +00:00
Daniel Stenberg
7917bfb1c9 --location-trusted added, which does a normal location plus the new
CURLOPT_UNRESTRICTED_AUTH option set TRUE.

Patch by Guillaume Cottenceau.
2003-03-31 04:42:20 +00:00
Daniel Stenberg
25f611ca42 Guillaume Cottenceau's patch that adds CURLOPT_UNRESTRICTED_AUTH that
disables the host name check in the FOLLOWLOCATION code. With that option
set, libcurl will send user+password to all hosts.
2003-03-31 04:41:05 +00:00
Daniel Stenberg
e6eb49e7e0 10 days of fixes 2003-03-31 04:05:03 +00:00
Daniel Stenberg
9a075f53dc clarify USERPWD somewhat more 2003-03-31 04:04:40 +00:00
Daniel Stenberg
4b3f800c03 Frankie Fong filed bug report #708708 which identified a problem with
ConnectionExists() when first doing a proxy connecto to a HTTPS site and then
switching over to a HTTP connection to the same host.

This fix corrects the problem.
2003-03-31 03:42:01 +00:00
Daniel Stenberg
82bc76b243 Dan Shearer's fix from bug report #618892, which makes 'curl -O' output
an error message about a missing URL.
2003-03-29 11:03:30 +00:00
Daniel Stenberg
18b9b04907 send as much as possible of the POST at once 2003-03-28 12:56:07 +00:00
Daniel Stenberg
87f1f08b36 added section titles and a CONTACT paragraph asking people to use the mailing
lists
2003-03-27 15:09:33 +00:00
Daniel Stenberg
7d7ebbe9f7 fixed the pkg-config stuff for rh9 2003-03-26 19:05:24 +00:00
Daniel Stenberg
5111ce782f add URLs to patch and diff 2003-03-26 11:48:03 +00:00
Daniel Stenberg
20b0e563ce mention the URL to the mailing lists 2003-03-26 11:44:04 +00:00
Daniel Stenberg
8b6cf239a3 attempt to extract openssl information using pkg-config 2003-03-25 22:40:43 +00:00
Daniel Stenberg
bcc285cffd Renamed configure.in to configure.ac, as this is the supposedly new preferred
name for it.
2003-03-25 15:56:33 +00:00
Daniel Stenberg
d5ba030942 use init and copyright to get a better header in the generated script 2003-03-25 15:54:06 +00:00
Daniel Stenberg
803f43592a white space and indent fix 2003-03-25 14:23:12 +00:00
Daniel Stenberg
904b9ccaa3 ignore getdate.c 2003-03-24 23:11:16 +00:00
Daniel Stenberg
89721ff04a Richard Bramante's provided a fix for a handle re-use problem seen when you
change options on an SSL-enabled connection between requests.
2003-03-24 23:10:38 +00:00
Daniel Stenberg
6164823921 Removed the "TC TrustCenter, Germany, Class 0 CA." certificate:
"It is a DEMO certificate and was never intended to be in any list of trusted
CA certificates."

(quote by Gtz Babin-Ebell, trustcenter.de)
2003-03-24 11:06:57 +00:00
Daniel Stenberg
f8b3c47f99 all those changes 2003-03-24 10:47:06 +00:00
Daniel Stenberg
56dd2da962 Hopefully this change addresses these two bug reports: 707003 and 706624.
We need to make sure that when we init a 'connectdata' struct and then
afterwards check for and re-use another one, we must be careful so that the
newly set values are transmitted and used in the surviving connectdata struct.
2003-03-21 08:09:48 +00:00
Daniel Stenberg
68bb74d172 lib/getdate.c.cvs may need a rename if you don't have yacc or bison 2003-03-20 15:12:43 +00:00
Daniel Stenberg
bf5e12c8e0 if the cvs update fails, don't continue further 2003-03-20 14:38:42 +00:00
Daniel Stenberg
de11f5e53a make the ENGINE depend on the USE_SSLEAY define too 2003-03-19 21:28:39 +00:00
Daniel Stenberg
b125e8e23a set binary mode for some file handling and it might work better on some
cygwin installations (using DOS-style files somehow?)
2003-03-19 09:26:29 +00:00
Daniel Stenberg
b28b616eb2 typecast the conversion from const char * to char * 2003-03-19 09:16:59 +00:00
Daniel Stenberg
4534ca238d Rename getdate.c to getdate.c.cvs, since the "normal" build procedure do
imply that yacc/bison exists and can generate this file. Those without one
of those tools can then checkout and rename the getdate.c.cvs file.
2003-03-19 09:09:40 +00:00
Daniel Stenberg
cee0e94294 clarify that 22 can be returned on --fail for all HTTP errors being 400
or above
2003-03-18 10:01:51 +00:00
Daniel Stenberg
8319ea7078 more defensive checking as platforms differ... 2003-03-17 17:20:26 +00:00
Daniel Stenberg
5334a58f9b Andy Cedilnik's corrections 2003-03-17 12:38:08 +00:00
Daniel Stenberg
2616bdc4cd it just never ends 2003-03-16 18:41:00 +00:00
Daniel Stenberg
c149b3f797 regenerated from getdate.y 2003-03-16 16:20:56 +00:00
Daniel Stenberg
d349eb3d43 Juan F. Codagnone pointed out a missing thing from the march 2 fix 2003-03-16 16:15:24 +00:00
Daniel Stenberg
9b43ade1c0 typecase getpid() to int to prevent compiler warning 2003-03-16 10:46:52 +00:00
Daniel Stenberg
ad05d0a8d9 figure out select()'s argument types 2003-03-15 21:04:01 +00:00
Daniel Stenberg
e6bfbe9683 Gisle Vanem's fix to get this working nicely on windows 2003-03-15 21:02:20 +00:00
Daniel Stenberg
c871efca4b Gisle Vanem fixed a name collision with structure '"CONTEXT" in <winnt.h> 2003-03-15 21:00:47 +00:00
Daniel Stenberg
12c72b419c missing newline added 2003-03-15 17:26:59 +00:00
Daniel Stenberg
a15b7691ca no server needed 2003-03-15 17:12:46 +00:00
Daniel Stenberg
01618d323b allow 'none' as server 2003-03-15 17:11:13 +00:00
Daniel Stenberg
bb6d0e37e3 Sort out the ENGINE problems people seem to be having. Now we put all ENGINE
related stuff within HAVE_OPENSSL_ENGINE_H and we don't make any private
typedef or similar if the header is missing...
2003-03-15 16:51:43 +00:00
Daniel Stenberg
24a6100897 * use the pid returned back from test-servers and kill them before starting
them the first time
* verify that the server we start really comes up fine and works as
  expected before continue
* count test cases where the server can't be run (for whatever reason)
* prefix lots of messages with RUN: to make it easier to realize which script
  is saying what when running tests verbose
* remove the generic sleep(1) from each test, makes the suite fly! ;-)

I hope these changes will make the tests run somewhat more reliably on more
platforms.
2003-03-15 16:43:58 +00:00
Daniel Stenberg
0251563c98 report pid back in the WE ROOLZ message 2003-03-15 16:39:15 +00:00
Daniel Stenberg
72673a351b removed the "banner" when the server is starting 2003-03-15 16:05:47 +00:00
Daniel Stenberg
96b7131844 detect lack of perl before running tests 2003-03-15 15:08:55 +00:00
Daniel Stenberg
dcc2f16416 Rick Jones' minor thing to build better on HPUX 11 2003-03-15 14:47:09 +00:00
Daniel Stenberg
c2b8a04000 Nico Baggus little adjustment to build with OpenSSL 0.9.7 (the ENGINE thing) 2003-03-14 17:21:06 +00:00
Daniel Stenberg
d65587b06c improved "deeper" check 2003-03-14 12:44:56 +00:00
Daniel Stenberg
1ab0134522 No longer halts operation if select or socket are missing, since in most
cases this is wrong... and if they're truly missing, we won't succeed to
link later on anyway.
2003-03-13 23:02:33 +00:00
Daniel Stenberg
afffce80f0 Philippe Raoult needed this to build on FreeBSD 2003-03-13 21:41:02 +00:00
Daniel Stenberg
70b80b0160 Extra function-find magic for platforms that don't like the way the
default AC_CHECK_FUNCS() work. HPUX 11 is one of them.
2003-03-13 17:06:55 +00:00
Daniel Stenberg
64067a04b5 output what cvs returned, see if we can make the script bail out when
cvs update fails
2003-03-13 15:56:31 +00:00
Daniel Stenberg
38cf0268c0 use include path from BUILD dir since we want the config.h 2003-03-13 15:54:46 +00:00
Daniel Stenberg
2d2034703f Things are moving along... 2003-03-12 14:29:47 +00:00
Daniel Stenberg
571ceeff90 When we append stuff to the URL, we must make sure the text is properly
URL encoded before. Test case 58 added to verify this.
2003-03-12 14:20:16 +00:00
Daniel Stenberg
34c4ba4321 -m on curl on windows with telnet doesn't work 2003-03-12 14:14:52 +00:00
Daniel Stenberg
babb372eb9 This verifies that my fix for bug report #700275 works. 2003-03-12 14:04:23 +00:00
Daniel Stenberg
5b9b82c1cd test58 added 2003-03-12 14:03:53 +00:00
Daniel Stenberg
075c534270 improved the header checks
--enable-libgcc
check for a sed before using it
2003-03-12 13:42:07 +00:00
Daniel Stenberg
f317f8b149 Add include files to prevent warnings on some (HPUX) systems. 2003-03-12 08:54:45 +00:00
Daniel Stenberg
f8d552dde5 include "config.h" from the lib's private dir 2003-03-12 08:54:11 +00:00
Daniel Stenberg
606f72bb13 Setup include path to the lib dir to enable inclusion of "config.h" 2003-03-12 08:53:44 +00:00
Daniel Stenberg
327e6a2b4f Made set_local_option() properly static as reported by Rick Jones 2003-03-12 08:44:00 +00:00
Daniel Stenberg
be8f6c7f5c Prefix defines and symbols with CURL_ to reduce the risk of colliding with
various system's other defines.
2003-03-12 08:40:45 +00:00
Daniel Stenberg
073448e0ea support a few more common typedefs 2003-03-12 08:11:24 +00:00
Daniel Stenberg
f136f435b5 Massige use of AC_HELP_STRING() all over makes the --help output so much
nicer!
2003-03-12 08:07:30 +00:00
Daniel Stenberg
ebea6b487b another week of changes, especially libtool gave us an adventure to remember 2003-03-11 19:22:10 +00:00
Daniel Stenberg
e5b7dc56e6 syntax error 2003-03-11 19:12:07 +00:00
Daniel Stenberg
c2d8025a0a Christophe Demory fixed the check to work better for non-blocking on HP-UX
systems. Bug report #701749.
2003-03-11 19:07:41 +00:00
Daniel Stenberg
853e240e1d Use ssize_t instead of 'int' to make the 64 bit sparc compiler happier.
Fix by Richard Gorton.
2003-03-11 18:58:21 +00:00
Daniel Stenberg
8755a6d1ac Richard Gorton improved the random_the_seed() function for systems where
we don't find/know of a good random source. This way, we get a better
randomness which in turn should make SSL connections more secure.
2003-03-11 18:55:34 +00:00
Daniel Stenberg
9f723061cb don't check for netinet/if_ether.h, we don't include it and it causes
configure warnings on many systems
2003-03-11 17:16:02 +00:00
Daniel Stenberg
652683fc04 Martin C. Martin's fix to produce an error message in case of failure
in the Curl_is_connected() function.
2003-03-11 16:28:23 +00:00
Daniel Stenberg
83a463891d added things to fix at the next major release/change 2003-03-10 20:46:54 +00:00
Daniel Stenberg
957b618fdc clarify 2003-03-10 20:43:59 +00:00
Daniel Stenberg
ebe5191b63 no the data is not freed, this is left for the app to do when needed 2003-03-10 17:01:11 +00:00
Daniel Stenberg
c426234df7 AAAARG
libtool 1.4.3 is scary as hell and caused just about every build on all sorts
of platforms to stop working, thanks to the fact that it ruquires a SED
variables somehow set by the configure script. It works fine on my linux
running autoconf 2.57 and automake 1.7 but others seem not to do as fine.

Reverting back to the ltmain.sh we had previously, which I believe is 1.4.2
including handmade patches for FreeBSD.

ALERT ALERT ALERT before we try 1.4.3 or similar versions again, check the
${SED} stuff and similar carefully.
2003-03-10 14:52:33 +00:00
Daniel Stenberg
8c3a10392e Include sys/types.h as well. Ray DeGennaro reports successful compiling on
AIX when this fix is applied and I cannot see how this will break any
systems.
2003-03-10 12:25:32 +00:00
Daniel Stenberg
d0e44946e9 figure out the path to a 'sed' as otherwise libtool gets crazy 2003-03-07 13:36:32 +00:00
Daniel Stenberg
46a593d968 libtoolize 1.4.3 brought these 2003-03-07 09:03:09 +00:00
Daniel Stenberg
eb0cc34951 Removed define, risc os build, POST-GET bug fixed, AIX 4.3 problems solved
and two makefiles fixed.
2003-03-04 06:41:50 +00:00
Daniel Stenberg
1c7dfda4bc output the md5sum as the last step 2003-03-03 23:26:39 +00:00
Daniel Stenberg
3c0e4a2fa1 Added share.obj 2003-03-03 22:39:34 +00:00
Daniel Stenberg
c753072ae1 moved the disable-thread warning to the switch code so that the AIX 4.3
automatic disable won't cause a warning
2003-03-03 22:31:58 +00:00
Daniel Stenberg
243942a7aa Detect AIX 4.3 or later, and if found disable the check for the thread-safe
*_r() functions as they're not needed (and if fact mess things up for us).
Brought to our attention by the friendly Troels Walsted Hansen in bug report
#696217.
2003-03-03 22:30:25 +00:00
Daniel Stenberg
8d5ac8b43c AIX 4.3 or later should use gethostbyname() and not the *_r() version. 2003-03-03 22:23:48 +00:00
Daniel Stenberg
17962b3d2e Added typecast to please the MSVC compiler. 2003-03-03 06:45:27 +00:00
Daniel Stenberg
f70acd5979 another typecast added to please the borland compiler 2003-03-03 06:42:52 +00:00
Daniel Stenberg
ffe5c46224 Add (void) on our uses of the swrite() macro when we don't read the return
code as this makes compiler warnings. We *should* fix the code to deal with
the return codes instead...
2003-03-03 06:40:36 +00:00
Daniel Stenberg
3242ea5f66 Init postdata properly before issuing a request, so that there isn't any
lingering POST-stuff that confuses GET requests. Juan F. Codagnone reported
this problem in bug report #653859.
2003-03-02 17:43:42 +00:00
Daniel Stenberg
39a282bffc moved a variable declaration to remove a compiler warnings with the MSVC
compiler, mentioned by Andi Jahja
2003-03-02 17:20:59 +00:00
Daniel Stenberg
29583004ce include the engine stuff 2003-02-28 15:50:05 +00:00
Daniel Stenberg
0a1a185874 Andres Garcia Garcia updated to build with the most recent OpenSSL and
the recent libcurl changes.
2003-02-28 15:49:32 +00:00
Daniel Stenberg
8f809e2a93 James Bursa made it compile on RISC OS as well. 2003-02-28 13:11:10 +00:00
Daniel Stenberg
f216059b49 James Bursa wrote a section about cross-compiling for RISC OS 2003-02-28 13:10:54 +00:00
Daniel Stenberg
9121b1f41d the strequal and strnequal should now be called with the proper curl_ prefix 2003-02-28 12:20:08 +00:00
Daniel Stenberg
60e015d0c1 Removed the defines for strequal() and strnequal(). 2003-02-28 12:17:56 +00:00
Daniel Stenberg
7e049fca61 recent stuff 2003-02-28 08:40:57 +00:00
Daniel Stenberg
0f0e4de6a4 mention what happens if size is set to -1 2003-02-28 07:55:01 +00:00
Daniel Stenberg
bc1102922b spell out that POSTFIELDS should be url-encoded in most cases 2003-02-28 07:53:31 +00:00
Daniel Stenberg
a3d3642a30 spell better 2003-02-27 23:10:38 +00:00
Daniel Stenberg
248eb47329 Updated to better reflect reality. Also displays how the CURLMsg struct
looks like.
2003-02-27 14:25:54 +00:00
Daniel Stenberg
52ebf50607 It appears that there are FTP-servers that return size 0 for files
when SIZE is used on the file while being in BINARY mode. To work
around that (stupid) behavior, we attempt to parse the RETR response
even if the SIZE returned size zero.

Debugging help from Salvatore Sorrentino on February 26, 2003.
2003-02-27 12:50:54 +00:00
Daniel Stenberg
d34a4b126e test138 is for RETR without size and without a working SIZE 2003-02-26 17:09:47 +00:00
Daniel Stenberg
de96719a45 support <size>-1</size> to completely disable the SIZE command 2003-02-26 17:05:36 +00:00
Daniel Stenberg
9876ed09fe added support for RETRNOSIZE in the control file to tell RETR to not
include size in the 150-reply
2003-02-26 16:57:00 +00:00
Daniel Stenberg
17cbbe3dc5 added a test case for RETR that doesn't get the size in the 150-reply 2003-02-26 16:56:00 +00:00
Daniel Stenberg
b995af17eb added index.html 2003-02-26 13:46:38 +00:00
Daniel Stenberg
6589579850 random updates 2003-02-26 13:01:29 +00:00
Daniel Stenberg
5ddc260fc2 No longer loop to read multiple times before returning back from the transfer
function, as this could easily end up looping for a very long time (more or
less until the whole transfer was done) and no library-using app would want
that.

Found thanks to a report by Kyle Sallee.
2003-02-26 12:42:25 +00:00
Daniel Stenberg
db5c9cd4c0 updated, now features less mentions about older versions 2003-02-25 08:52:32 +00:00
Daniel Stenberg
9b6d010aef better sslcerts link 2003-02-25 08:36:29 +00:00
Daniel Stenberg
065b87e949 7.10.4-pre2 commit 2003-02-24 18:14:48 +00:00
Daniel Stenberg
a6206a3aef Fixes to bring back the the "Expect: 100-continue" functionality. If the
header is used, we must wait for a 100-code (or timeout), before we send the
data. The timeout is merely 1000 ms at this point. We may have reason to set
a longer timeout in the future.
2003-02-24 16:53:53 +00:00
Daniel Stenberg
30639ed72b Kjetil Jacobsen found out that setting CURLOPT_MAXCONNECTS to a value higher
than 5 could cause a segfault.
2003-02-24 14:50:20 +00:00
Daniel Stenberg
9d02a39e13 fixed language for limit-rate 2003-02-24 13:28:32 +00:00
Daniel Stenberg
fc0af0d4d1 daily was weekly, added a little thing about feb 2003 2003-02-24 08:18:17 +00:00
Daniel Stenberg
a683416081 added an EXAMPLE section 2003-02-21 15:19:50 +00:00
Daniel Stenberg
9faf57ee8d how to disable FTP PORT 2003-02-17 23:23:11 +00:00
Daniel Stenberg
44b9ccb7e2 This script clearly misses to remove the build dir at times when it exits,
so we now remove everything matching "build-*" when the script starts.
2003-02-17 09:15:26 +00:00
Daniel Stenberg
de003d9cf8 mention --trace and --trace-ascii in the -v/--versbose section to remind
people how to get even more details shown
2003-02-17 09:02:51 +00:00
Daniel Stenberg
8a2a523c70 mention more cacert magic 2003-02-14 22:28:12 +00:00
Daniel Stenberg
c3dfe50aaf Fix Curl_is_connected() even more to deal with waitconnect() return codes
even better (also based on input from Martin).
2003-02-14 09:11:51 +00:00
Daniel Stenberg
9659d862c7 Matthew Clarke built curl on AIX 3.2.5 2003-02-14 09:06:07 +00:00
Daniel Stenberg
69ab4cd391 include <sys/socket.h> to compile the fd_set stuff properly on all systems 2003-02-14 09:03:03 +00:00
Daniel Stenberg
498f3985b3 geterrno() renamed to ourerrno() to prevent the name clash that occurred in
AIX 3.2.5 and possibly other OSF-like system headers.
2003-02-14 09:01:01 +00:00
Daniel Stenberg
977175d4fd Martin C. Martin's fix for multi-interface connects to non-listening ports. 2003-02-14 08:02:55 +00:00
Daniel Stenberg
3ddc7b9390 Christopher R. Palmer fixed Curl_base64_encode() to deal with zeroes in the
data to encode.
2003-02-13 18:30:10 +00:00
Daniel Stenberg
10e9bf623f language 2003-02-08 14:36:18 +00:00
Daniel Stenberg
48a5c64e94 include stdarg.h since we use va_* stuff 2003-02-06 19:28:17 +00:00
Daniel Stenberg
140606ccd5 I made curl run fine on a XScale/PXA250 2003-02-05 08:09:33 +00:00
Daniel Stenberg
f56d006f93 Re-arranged the SSL connection code (again). The recent fix was not a very
good one. This should work fine again.
2003-02-05 07:43:05 +00:00
Jean-Philippe Barette-LaPierre
beb13a1d3e added the sharing of DNS cache 2003-02-04 23:48:46 +00:00
Daniel Stenberg
fa47138327 VMS has setjmp.h 2003-02-04 22:28:36 +00:00
Daniel Stenberg
9421d4510a Nico Baggus updated build script for VMS 2003-02-04 22:28:19 +00:00
Daniel Stenberg
ff8abfca85 assume zlib 1.1.4 - pointed out by Kevin Roth 2003-02-04 18:24:55 +00:00
Daniel Stenberg
5c858965b8 HAVE_LIBZ is the actual name of the define we use 2003-02-04 18:23:41 +00:00
Daniel Stenberg
e3f83cb17a make it more obvious what this is by not even trying to show a manual 2003-02-04 18:22:31 +00:00
Daniel Stenberg
de6008e01a James Bursa corrected a bad comment 2003-02-04 18:12:41 +00:00
Daniel Stenberg
6417e696df fixes during the last couple of days 2003-02-04 12:33:13 +00:00
Daniel Stenberg
5d28f3781b Improved error reporting in case of bad SSL_connect()s, and we also no
longer use the SSL functions that store the error message in a static buffer
since that is not very multi-thread friendly.
2003-02-04 12:29:57 +00:00
Daniel Stenberg
10026bb62e scan through the PATH as well, to find stunnel 2003-02-03 22:15:33 +00:00
Daniel Stenberg
21c16f923c Julian Noble pointed out that capath is indeed working fine on Windows
these days since the c_rehash tool is written (fixed) to do the proper
action even on file systems that don't support symlinks.
2003-02-03 21:36:52 +00:00
Daniel Stenberg
32cef52f0d Kevin Roth corrected the zlib stuff to work better. 2003-01-31 07:07:28 +00:00
Daniel Stenberg
e7dd7c54ff don't check for the CA cert bundle if --insecure is used 2003-01-30 14:48:07 +00:00
Daniel Stenberg
b0b50bd12a typecast the argument to isspace() to an int to prevent warnings on some
compilers
2003-01-30 06:06:24 +00:00
Daniel Stenberg
f2c6057490 curl now uses stricter VERIFYHOST by default and only uses a lesser check
if --insecure is used. Reported by Hamish Mackenzie.
2003-01-30 05:15:57 +00:00
Daniel Stenberg
169b2eeb94 Fixes bug #669059. We now extract the Content-Type better and more accurate. 2003-01-30 05:04:02 +00:00
Daniel Stenberg
f81d027f60 test case 57 - verifies that the Content-Type extraction does not stop on
the first space anymore but cuts off the trailing spaces only.

Bug report #669059.
2003-01-30 05:03:19 +00:00
Daniel Stenberg
872eeb7339 changes from the last week or so 2003-01-29 13:56:04 +00:00
Daniel Stenberg
7f67a28c2a HAVE_WRITABLE_ARGV is set if argv[] is writable on the system, and then
we attempt to hide some of the more sensitive command line arguments
2003-01-29 13:16:03 +00:00
Daniel Stenberg
30a46e1135 John McGowan found a problem where the DEBUGFUNCTION was called with bad
data on uploads.
2003-01-29 12:52:45 +00:00
Daniel Stenberg
3a01478ce8 add the new emacs file and removed the former one 2003-01-29 12:15:16 +00:00
Daniel Stenberg
53d71fab60 example showing how a .emacs using curl-style.el could look like, thanks
to Mats Lidell for awesome elisp hacking!
2003-01-29 12:14:37 +00:00
Daniel Stenberg
be891f112c this is the former emacs file we no longer use, go with curl-style.el and
be happy!
2003-01-29 11:55:16 +00:00
Daniel Stenberg
89934239d7 reset conn->size to -1 on the ftp-do function to make it not go on to
ftp_done() with the previous transfer's value, as Dave Halbakken found out.
He also verified this fixed corrected the problem.
2003-01-29 10:54:39 +00:00
Daniel Stenberg
8986037fdd previous changes 2003-01-29 10:17:10 +00:00
Daniel Stenberg
a7c72b7abf removed the local variables for emacs and vim, use the new sample.emacs
way for emacs, and vim users should provide a similar non-polluting style
2003-01-29 10:14:20 +00:00
Daniel Stenberg
409ac80710 removed weirdo {{{ and }}} comments
removed emacs local-variables stuff
2003-01-29 10:12:06 +00:00
Daniel Stenberg
fc7bebdf55 the README.curl is named MANUAL these days 2003-01-28 16:33:05 +00:00
Daniel Stenberg
ca52549557 revised and better 2003-01-28 08:03:13 +00:00
Daniel Stenberg
8948a65654 removed -Wcast-align from --enable-debug with gcc, it just gives too many
warnings that I can't be concerned about at this point.
2003-01-27 14:26:06 +00:00
Daniel Stenberg
b4e33cfcc7 Removed the long-living compiler warnings on the des_pcbc_encrypt() function
calls!
2003-01-27 14:19:22 +00:00
Daniel Stenberg
86742e8334 tests that were not run due to restraints (the netrc-tests) were counted
as skipped twice, and thus the total number of tests appeared wrong
2003-01-27 13:51:35 +00:00
Daniel Stenberg
173b35eaf8 made it work
made it cause less compiler warnings
made it require 7.9.7 to build
2003-01-27 10:25:20 +00:00
Daniel Stenberg
2b054e5309 Bertrand Demiddelaer found and fixed this memory leak. 2003-01-24 11:13:59 +00:00
Daniel Stenberg
a302ff1605 string.h keeps the proto for memset() on some platforms, used for FD_ZERO 2003-01-23 19:41:30 +00:00
Daniel Stenberg
f7bb4e6138 added a default to the switch() in order to prevent a compiler warning 2003-01-23 12:00:15 +00:00
Daniel Stenberg
5c5489916b fix the configure option query 2003-01-23 07:37:21 +00:00
Daniel Stenberg
5627cf7167 mention what kind of error you may get if this is not followed 2003-01-23 06:15:26 +00:00
Daniel Stenberg
c05dae4a68 spell 2003-01-23 06:09:35 +00:00
Daniel Stenberg
57e61e3743 This is the new Emacs style for curl hacking, based on work written by
Mats Lidell in project Rockbox.
2003-01-23 06:00:02 +00:00
Daniel Stenberg
a6c395c156 Duncan Wilcox reported a crash with --interface on FreeBSD when ipv6-enabled
and this has been verified to correct the problem.
2003-01-23 05:38:20 +00:00
Daniel Stenberg
543e0b1e0f oops, broken comment fixed 2003-01-22 18:50:51 +00:00
Daniel Stenberg
64b0ff875f extern C this to work in C++ conditions 2003-01-22 18:30:58 +00:00
Daniel Stenberg
a034208a00 reversed the actions on the cmp check for detecting if we're re-running
a test on the same CVS setup as previous, as they seemed to be wrong.

We're not actually using the result for anything at this point though.
2003-01-22 12:29:19 +00:00
Daniel Stenberg
5f1251586b use LANG set to C to prevent localized dates etc 2003-01-22 09:46:33 +00:00
Daniel Stenberg
6f6cffdc32 pass the options to configure properly 2003-01-22 07:57:52 +00:00
Daniel Stenberg
21a98ef264 check for empty confopts before asking for it 2003-01-22 07:41:35 +00:00
Daniel Stenberg
aa90436435 put the configure options in the setup file was well
make -i
show lib/config.h
and some initial checks to prevent this running multiple times without the
CVS having changed
2003-01-22 06:59:52 +00:00
Daniel Stenberg
61225052f9 updated copyright years 2003-01-21 17:25:58 +00:00
Daniel Stenberg
dee3163d95 when a chunked error is noticed, store the error number in the error string
to enable better error-tracking
2003-01-21 16:03:38 +00:00
Daniel Stenberg
8b0668b99e skip the chmod 2003-01-21 15:09:20 +00:00
Daniel Stenberg
8471a82c85 run 'make test-full' instead of 'make test' to get more details in case of
errors
2003-01-21 10:36:35 +00:00
Daniel Stenberg
ed4dff63b9 make test-full in the root dir should run verbose tests but not stop on
single failures
2003-01-21 10:35:34 +00:00
Daniel Stenberg
838e776542 use 'make test-full' instead of only 'make test' as it gives a lot of more
info in case of failures
2003-01-21 10:33:29 +00:00
Daniel Stenberg
39c12790bc Added a 'test-full' target to run the tests in verbose mode. 2003-01-21 10:32:40 +00:00
Daniel Stenberg
126e6d6645 pass srcdir to the ftps-server as well 2003-01-21 10:29:06 +00:00
Daniel Stenberg
5796a1b282 runtests.pl now passes the sourcedir path to the httpsserver.pl script 2003-01-21 10:14:25 +00:00
Daniel Stenberg
90982529fc automake 1.5 should be enough 2003-01-21 09:36:15 +00:00
Daniel Stenberg
aba51d6b60 use process id in build directory name to do better 2003-01-20 20:20:51 +00:00
Daniel Stenberg
49bc4567bb first attempt at script for distributed testing on various unix hosts 2003-01-20 20:07:49 +00:00
Daniel Stenberg
2ac52705c6 output summary with easy identifyable string prefixes 2003-01-20 15:43:50 +00:00
Daniel Stenberg
d0eb56dd97 made this script detect proper versions of the tools we need to build a full
curl on a unix host from CVS
2003-01-20 15:24:54 +00:00
Daniel Stenberg
b9c60df04b added description in all AC_DEFINE() calls 2003-01-20 15:16:56 +00:00
Daniel Stenberg
8c236e4dfa not used anymore 2003-01-20 15:16:17 +00:00
Daniel Stenberg
154a59f21f Five more names we owe a big THANKS for their donations to the project. 2003-01-20 14:49:57 +00:00
Daniel Stenberg
9689e1c548 today's patches and Markus' correction 2003-01-20 14:40:06 +00:00
Daniel Stenberg
5a83976c99 Markus F.X.J. Oberhumer's patch that reduces memory usage quite a bit by
only allocating the scratch memory buffer once it is needed and not always
in the handle.
2003-01-20 12:52:34 +00:00
Daniel Stenberg
b5276a9a69 given passwords in netrc must be respected accordingly 2003-01-20 12:00:46 +00:00
Daniel Stenberg
30377baa5e steps I *MUST* perform when I release a package 2003-01-20 11:29:40 +00:00
Daniel Stenberg
aa8b7dd336 reverted bad header replacement 2003-01-16 21:10:10 +00:00
Daniel Stenberg
f26a338a54 copyright year update in the source header 2003-01-16 21:08:12 +00:00
Daniel Stenberg
c4383f1d99 fixes Marcus brought 2003-01-16 21:07:50 +00:00
Daniel Stenberg
4527995e66 Allow CURLINFO_PRIVATE to be NULL, patch by Markus Oberhumer 2003-01-16 10:59:53 +00:00
Daniel Stenberg
b0fbb98f41 Markus Oberhumer fixed the -cflags option 2003-01-16 10:58:49 +00:00
Daniel Stenberg
63667dfd96 no TABs in source code 2003-01-15 11:44:33 +00:00
Daniel Stenberg
77c388c928 removed a TAB 2003-01-15 11:43:03 +00:00
Daniel Stenberg
a69b814ded Kevin fixed the bad list address 2003-01-15 08:04:09 +00:00
Daniel Stenberg
c51ada766d previous legal file, no longer accurate nor used 2003-01-14 12:55:08 +00:00
Daniel Stenberg
ef2709f97c COPYING is the name of the file 2003-01-14 12:54:11 +00:00
Daniel Stenberg
bf9b9ca29d 7.10.3 commit 2003-01-14 12:42:26 +00:00
Daniel Stenberg
64f224bb22 more 2003-01-13 12:08:39 +00:00
Daniel Stenberg
285a8fe4d0 there is SOCKS support these days 2003-01-13 06:35:31 +00:00
Daniel Stenberg
3773d76dfd Steve Oliphant pointed out that test case 105 did not work anymore and this
was due to a missing fix for the password prompting
2003-01-10 16:19:32 +00:00
Daniel Stenberg
94c5c7bd6d added test 136 2003-01-09 16:48:51 +00:00
Daniel Stenberg
12cfc4c0b0 verify -u username: with ftp to use a blank password 2003-01-09 16:47:55 +00:00
Daniel Stenberg
9a2de6e6ee if userpwd is "username:", this now implies a blank password while only
"username" will cause libcurl to prompt for password. Bryan Kemp noticed.

test case 136 is added for this
2003-01-09 16:47:09 +00:00
Daniel Stenberg
2ede47b8c8 Wai (Simon) Liu provided the HTTP200ALIASES paragraph. 2003-01-09 15:04:55 +00:00
Daniel Stenberg
76e107506f Philippe Raoult's added note for HTTPHEADER 2003-01-09 14:58:54 +00:00
Daniel Stenberg
6f35ed51dc This fixed yet another connect problem with the multi interface and ipv4
stack. Kjetil Jacobsen reported and verified the fix.
2003-01-09 14:52:51 +00:00
Daniel Stenberg
c94ba66310 removed 2003-01-09 11:57:50 +00:00
Daniel Stenberg
a15133f5cf removed unused code 2003-01-09 11:50:34 +00:00
Daniel Stenberg
cc09e9d4c2 fix 2003-01-09 11:43:08 +00:00
Daniel Stenberg
16e0da2c4b call curl_multi_perform() correctly 2003-01-09 11:42:07 +00:00
Daniel Stenberg
ed22f75241 proper indent 2003-01-09 11:31:49 +00:00
Daniel Stenberg
ba25cad6e2 pass a file name to memanalyze to read from instead of using stdin 2003-01-09 11:26:57 +00:00
Daniel Stenberg
abb01123cb share.h is now a used header file 2003-01-09 11:19:51 +00:00
Daniel Stenberg
e2d249f8c5 fixed to deal with file names that contain colons, as in Windows 2003-01-09 11:03:02 +00:00
Daniel Stenberg
4a2ac166fa 7.10.3-pre4 2003-01-09 10:36:24 +00:00
Daniel Stenberg
5fab55383d rename the curl share error enum prefix 2003-01-09 10:26:29 +00:00
Daniel Stenberg
f152f23a68 Updated more and now looks and and the API possibly works almost like the
design document specifies. There is still no code inside that uses this.
2003-01-09 10:21:03 +00:00
Daniel Stenberg
24e78b3571 7+8 jan 2003 2003-01-09 09:53:08 +00:00
Daniel Stenberg
9a239edb52 updated to use the modified share-types 2003-01-08 15:50:52 +00:00
Daniel Stenberg
abcc5c5a82 cleaned up the share data types and prototypes to be more in line what
the design draft mentioned and what I think is fit
2003-01-08 15:50:06 +00:00
Daniel Stenberg
cb5ba675a7 mkdir() fix for win32 2003-01-08 15:04:42 +00:00
Daniel Stenberg
2288086695 nah, include test.h instead 2003-01-08 09:37:35 +00:00
Daniel Stenberg
61421b7a8f include curl.h without directory 2003-01-08 09:33:19 +00:00
Jean-Philippe Barette-LaPierre
6a7e53a7c7 fixed a very, very rare and very, very little memory leak 2003-01-08 02:27:47 +00:00
Daniel Stenberg
ca134d5522 Philippe Raoult's fix to handle wildcard certificate name checks 2003-01-07 16:33:11 +00:00
Daniel Stenberg
ec24efda74 Simon Liu's HTTP200ALIASES-patch! 2003-01-07 16:15:53 +00:00
Daniel Stenberg
7f0f10e498 stuff 2003-01-07 15:40:01 +00:00
Daniel Stenberg
aa5af100b4 clarified error code 19 2003-01-07 15:39:38 +00:00
Daniel Stenberg
37ae32f688 Only output valid filetime.
Return file-error if 550 is returned when trying MDTM
2003-01-07 11:25:44 +00:00
Daniel Stenberg
d0cffdec5d when sending an error message to the debugfunction, we append a newline so
that the output looks better
2003-01-07 11:23:52 +00:00
Daniel Stenberg
0f34521612 fixed the create_dir_hierarchy() to not use uninited memory, as noticed by
Matthew Blain.
2003-01-07 09:35:57 +00:00
Daniel Stenberg
e69362df22 Matthew Blain's improvements for debug builds 2003-01-07 09:31:45 +00:00
Daniel Stenberg
3de8f6f38e better ignore 2003-01-07 09:30:05 +00:00
Daniel Stenberg
5359bc8083 ignore lib504 too 2003-01-07 09:27:32 +00:00
Daniel Stenberg
eb6a14fe10 updated 2003-01-07 07:54:14 +00:00
Daniel Stenberg
2912537533 indent fix 2003-01-06 12:41:33 +00:00
Sterling Hughes
cfb32da198 fix bug (?) :-)
previously, if you called curl_easy_perform and then set the global dns
cache, the global cache wouldn't be used.  I don't see this really happening
in practice, but this code allows you to do it.
2003-01-06 06:17:15 +00:00
Daniel Stenberg
9b4f92130f return -1 even if SSL_pending() doesn't return non-zero, as we don't really
care how many bytes that is readable NOW. Philippe Raoult reported the
bug in 7.10.3-pre3.
2002-12-29 16:27:31 +00:00
Daniel Stenberg
5a2ab686a6 Marc Herbert's suggstion: mention that insecure is ignored if cacert or capath
is used.
2002-12-29 16:23:52 +00:00
Daniel Stenberg
3b8583b014 example configure command line 2002-12-20 16:00:56 +00:00
Daniel Stenberg
ed29552b1e Use AM_MAINTAINER_MODE which thus makes less maintainer stuff in the default
makefile when --enable-maintainer-mode is not used.
2002-12-20 15:54:24 +00:00
Daniel Stenberg
a2ada3cf96 7.10.3-commit 2002-12-20 09:03:38 +00:00
Daniel Stenberg
88825a1187 fixes 2002-12-19 16:37:07 +00:00
Daniel Stenberg
264e7fc58b removed fruitless attempts to overload some targets 2002-12-19 16:36:35 +00:00
Daniel Stenberg
1698015e3c Curl_base64_decode() fixed by Matthew B 2002-12-19 16:02:51 +00:00
Daniel Stenberg
39dc14c002 Fixed the usage of SSL_read() to properly return -1 if the EWOULDBLOCK
situation occurs, which it previously didn't!

This was reptoed by Evan Jordan in bug report #653022.

Also, if ERROR_SYSCALL is returned from SSL_write(), include the errno number
in the error string for easier error detection.
2002-12-19 15:45:15 +00:00
Daniel Stenberg
04c499a5fc CURLOPT_DNS_USE_GLOBAL_CACHE is not thread-safe 2002-12-19 15:22:36 +00:00
Daniel Stenberg
efbe930a69 CURLE_HTTP_NOT_FOUND => CURLE_HTTP_RETURNED_ERROR 2002-12-18 16:51:02 +00:00
Daniel Stenberg
747f87f61e Removed weird special multi interface condition that caused bug report
#651464.
2002-12-17 10:05:00 +00:00
Daniel Stenberg
5a4c56fc44 don't install the test programs 2002-12-17 09:40:13 +00:00
Daniel Stenberg
81f45ba92a writefunction data is not zero terminated 2002-12-16 17:33:21 +00:00
Daniel Stenberg
a5dc4e32f2 removed junk 2002-12-16 15:32:37 +00:00
Daniel Stenberg
2b839853ec Added test case 504, using multi interface and a local proxy without anything
listening on the port we use.
2002-12-16 15:30:10 +00:00
Daniel Stenberg
66b6cd68ed better desc 2002-12-16 15:05:31 +00:00
Daniel Stenberg
0ef3d90838 mistake, this only requires http 2002-12-16 14:50:10 +00:00
Daniel Stenberg
5cc50f9b27 the hostip.c commit 2002-12-16 11:40:57 +00:00
Daniel Stenberg
e879e26a5b EAGAIN on older (correct) glibc versions indicate a problem and not the need
for a bigger buffer and this is indeed badness for us. Making this work
on both old and new glibc versions require an ugly loop that in its worse
form cause 45 bad loops when using the correct glibc and a non-resolving
host name... :-/

We want a better fix. Badly.
2002-12-16 11:33:44 +00:00
Daniel Stenberg
96d84150e1 changes from last week 2002-12-16 10:55:18 +00:00
Daniel Stenberg
2aa0c6c488 cut off -O properly when building for debug
setup the Makefile in tests/libtest/
2002-12-16 10:31:25 +00:00
Daniel Stenberg
811138386f documented the %-variables 2002-12-13 16:25:39 +00:00
Daniel Stenberg
c433cf7459 fixed another space issue 2002-12-13 16:24:57 +00:00
Daniel Stenberg
e0d6ebc2f2 please mr CVS ignore these 2002-12-13 16:24:04 +00:00
Daniel Stenberg
4938991ab8 set up arg2 to point to argv[2] to be used at will by programs 2002-12-13 16:22:57 +00:00
Daniel Stenberg
13722f536e added 503 2002-12-13 16:22:17 +00:00
Daniel Stenberg
57f0e3292d used this to verify bug report 651460 2002-12-13 16:21:18 +00:00
Daniel Stenberg
da5ae565ab added support for CONNECT, both good and bad 2002-12-13 16:20:07 +00:00
Daniel Stenberg
87c5066242 test case 503 entered the dir 2002-12-13 16:17:27 +00:00
Daniel Stenberg
b528bde470 conn->bits.tcpconnect now keeps track of if this connection is connected
or not
2002-12-13 16:15:19 +00:00
Daniel Stenberg
57572e550f include files without the curl/ to reduce the risk of us including the wrong
set of include files during tests
2002-12-13 14:14:35 +00:00
Daniel Stenberg
3aea0d3d68 Evan Jordan's fix for a memory leak. Bug report 650989. 2002-12-13 14:08:49 +00:00
Daniel Stenberg
9ae920c1b6 make a little work-around for file:// in _is_connected() and voila, now the
multi interface works with file:// URLs fine (previously it crashed). This
won't make it work on Windows though...
2002-12-13 13:47:58 +00:00
Daniel Stenberg
dff406a360 one slash too many 2002-12-13 13:41:28 +00:00
Daniel Stenberg
d346ba5c3c lib502.c for multi interface tests on a single URL without select() 2002-12-13 13:40:25 +00:00
Daniel Stenberg
978541adc2 test 502, multi interface with file:// 2002-12-13 13:39:39 +00:00
Daniel Stenberg
637bce2707 bail out on crap received, makes test case 402 *NOT* ruin the test series
anymore!
2002-12-12 18:07:10 +00:00
Daniel Stenberg
07e3dc2ee2 missing space added, nows run old tests fine again 2002-12-12 16:46:45 +00:00
Daniel Stenberg
ead065d803 remove test piece 2002-12-12 13:44:26 +00:00
Daniel Stenberg
0150bff7b4 make ftps and https invoke both necessary servers 2002-12-12 13:42:21 +00:00
Daniel Stenberg
0f493b6038 fixes 2002-12-12 13:40:16 +00:00
Daniel Stenberg
f26b709c50 link the test tools this way instead 2002-12-12 13:39:02 +00:00
Daniel Stenberg
ae10d9cf22 no more 2002-12-12 13:36:50 +00:00
Daniel Stenberg
81af9674ed corrected 2002-12-12 12:49:29 +00:00
Daniel Stenberg
b63df7991a new subdir added 'libtest' 2002-12-12 12:20:33 +00:00
Daniel Stenberg
a79990465c supports the new 'tool' and 'server' tags 2002-12-12 12:20:06 +00:00
Daniel Stenberg
ad6bd530ac describe the new sections added for (better) libcurl testing 2002-12-12 12:15:02 +00:00
Daniel Stenberg
c1b369fd4c 500 + 501 added 2002-12-12 12:13:18 +00:00
Daniel Stenberg
01fcd3c2d5 run tiny specific libcurl-testing tools 2002-12-12 12:12:01 +00:00
Daniel Stenberg
7196d784d3 The first ever attempts to do pure libcurl test cases 2002-12-12 12:11:16 +00:00
Daniel Stenberg
0f0aaf51e0 Deal with HTML where ' is used instead of "
Cut off name from option
2002-12-12 11:43:59 +00:00
Daniel Stenberg
b5f493c55a moved the includes to outside the extern "C" stuff
decreased the write buffer size to 16KB to perform a lot better on Windows(!)
2002-12-11 11:42:40 +00:00
Daniel Stenberg
0aa031beb9 recent fluff 2002-12-10 13:11:24 +00:00
Daniel Stenberg
db6ff224f8 The initial HTTP request can now be sent in multiple parts, as part of the
regular transfer process. This required some new tweaks, like for example
we need to be able to tell the tranfer loop to not chunky-encode uploads
while we're transferring the rest of the request...
2002-12-10 13:10:00 +00:00
Daniel Stenberg
b3c7cd61f3 send_buffer is no more here 2002-12-10 13:08:22 +00:00
Daniel Stenberg
9ae05c4d91 added test56, nearly 100KB big! 2002-12-10 13:01:05 +00:00
Daniel Stenberg
264e6f6efd Test case for sending insanely big HTTP requests. Mainly done this way to
make sure that it isn't all sent off in one single send() but instead
really tests the multiple-part-send logic.
2002-12-10 13:00:32 +00:00
Daniel Stenberg
ec7bccf671 more logging, now logs the full response too, basic support for dealing
with chunked transfer-encoding uploads added
2002-12-10 12:59:16 +00:00
Daniel Stenberg
49f75ee8ce A normal POST now provides data to the main transfer loop via the usual
read callback, and thus won't put a lot of stress on the request sending
code (which currently does an ugly loop).
2002-12-09 16:05:57 +00:00
Daniel Stenberg
4bcc866c52 The fread() callback pointer and associated pointer is now stored in the
connectdata struct instead, and is no longer modified within the 'set' struct
as previously (which was a really BAAAD thing).
2002-12-09 15:37:54 +00:00
Daniel Stenberg
c65e088caf Added a default headers section and also made some minor details more
up-to-date with recent changes.
2002-12-09 14:39:01 +00:00
Daniel Stenberg
6ca4116555 better errno include and no extern 2002-12-05 19:39:17 +00:00
Daniel Stenberg
f6cdb820af read and write as much as possible until end of data or EWOULDBLOCK before
returning back to the select() loop. Consider this a test so far.
2002-12-05 14:26:30 +00:00
Daniel Stenberg
081e5a82ff deal with spaces in name and value tags a lot better! 2002-12-05 12:54:08 +00:00
Daniel Stenberg
2ad2a4bd9f changed proto for Curl_krb_kauth() 2002-12-05 11:26:20 +00:00
Daniel Stenberg
645e700da3 Solaris needs errno as an extern int. 2002-12-05 11:25:36 +00:00
Daniel Stenberg
92aea29a30 make WIN32 defined for Borland properly, as told by Alexander J. Oss 2002-12-04 11:06:17 +00:00
Daniel Stenberg
e1c01af929 called SSLCERTS now 2002-12-04 09:53:09 +00:00
Daniel Stenberg
7ef749497d 7.10.3-pre2 2002-12-04 09:09:26 +00:00
Daniel Stenberg
d72aa49126 The waiting for the 226 or 250 line expected to come after a transfer is
complete is now only made for 60 seconds and if no data was received during
those 60 seconds, we store a special error message (preparing to make this
a special error code) as this most likely means that the control connection
has died while we were transferring data.
2002-12-04 08:56:55 +00:00
Daniel Stenberg
e92bd312ec missing } 2002-12-03 12:41:10 +00:00
Daniel Stenberg
b097c2cfb0 clarified 2002-12-03 12:40:12 +00:00
Daniel Stenberg
a39cdc80b7 Jeff pointed out this flaw in the example 2002-12-03 12:34:43 +00:00
Daniel Stenberg
a47250810e -@ is no longer an official shortcut for --create-dirs 2002-12-03 11:13:12 +00:00
Daniel Stenberg
1f50f3031f don't officially use -@ for --create-dirs, only use the long form 2002-12-03 11:12:18 +00:00
Daniel Stenberg
75145dd753 clarify the DEBUGFUNCTION data not being zero terminated 2002-12-03 10:37:20 +00:00
Daniel Stenberg
d0b97f7e1f Curl_GetFTPResponse() takes a different set of parameters and now return a
proper CURLcode. The default timeout for reading one response is now also
possible to change while running.
2002-12-03 10:25:31 +00:00
Daniel Stenberg
199a0311e2 updated to reality 2002-12-03 09:32:57 +00:00
Daniel Stenberg
fa446f860f Nicolas Berloquin's fix of his previous dir creation patch 2002-12-03 08:07:52 +00:00
Daniel Stenberg
7a74303f3c Nicolas Berloquin's description of his -@/--create-dirs fix 2002-12-02 14:40:54 +00:00
Daniel Stenberg
7d9eabb981 Nicolas Berloquin's added code for dealing with -@/--create-dirs to create
the necessary directories as specified with -o.
2002-12-02 14:37:59 +00:00
Daniel Stenberg
ff5308a5af if the PWD reply parser failed, we leaked memory 2002-12-02 07:18:24 +00:00
Daniel Stenberg
3f8ba3a986 clarified SSL_VERIFYPEER and SSL_VERIFYHOST a bit, thanks to Soren Spies 2002-12-02 06:47:16 +00:00
Daniel Stenberg
4a555de1b2 wrapped the line for PRIVATE nicer 2002-12-01 11:23:06 +00:00
Daniel Stenberg
d27e4a08f9 more to ignore 2002-12-01 11:21:36 +00:00
Daniel Stenberg
bf678a1ca9 only use Content-Length: header if not transfering data chunked 2002-12-01 11:20:41 +00:00
Daniel Stenberg
13a903de28 mention CVS-INFO for more info when checked out from CVS
removed old section about problems with old autoconfs, I don't think that
happens anymore
2002-11-30 16:00:10 +00:00
Daniel Stenberg
a3c14c031e stuff done since the 7.10.2 release 2002-11-29 08:29:21 +00:00
Daniel Stenberg
e90d528026 let the Curl_FormReader() return 0 when it reaches end of data to that the
chunked transfer work
2002-11-29 08:12:20 +00:00
Daniel Stenberg
d64dd77993 fix the hash init to call the correct dns cleanup function 2002-11-28 15:48:54 +00:00
Daniel Stenberg
113850a748 added compareheader proto 2002-11-28 15:48:23 +00:00
Daniel Stenberg
1c49a00d64 compareheader() was moved over to http.c and got a Curl_ prefix
The chunked transfer upload never stopped due to a silly add before we checked
for >0!
2002-11-28 15:46:22 +00:00
Daniel Stenberg
eef6c83503 Moved the compareheader function into this file and added Curl_ prefix
We now check if the chunked transfer-encoding header has been added "by force"
and if so, we enabled the chunky upload!
2002-11-28 15:45:06 +00:00
Daniel Stenberg
ceb5648eb7 mention how to generate patches 2002-11-28 14:07:14 +00:00
Daniel Stenberg
a0eadb76ea bad use of AM_CONDITIONAL removed and now configure runs better when used
with --disable-ipv6 --without-zlib
2002-11-28 13:29:42 +00:00
Daniel Stenberg
065852e46c execve.net is an official download mirror in HK 2002-11-27 11:59:52 +00:00
Daniel Stenberg
e5e2fb8274 Dan Becker fixed a minor memory leak on persistent connnections using
FOLLOWLOCATION and CURLOPT_USERPWD.
2002-11-26 17:32:15 +00:00
Daniel Stenberg
0210b3c893 removed extra space from trace output 'Send data' 2002-11-26 17:13:30 +00:00
Daniel Stenberg
7df5677b46 fixed Curl_freeaddrinfo() to only free addrinfo, and added Curl_freednsinfo()
for freeing single dns cache entries
2002-11-26 09:41:54 +00:00
sm
2e71876b28 Removed MFC dependency in Release Build when using VC++ IDE 2002-11-26 02:12:27 +00:00
Daniel Stenberg
11576b1142 Nedelcho Stanev's work-around for SFU 3.0 2002-11-24 19:30:21 +00:00
Daniel Stenberg
ce011b8a2d bug fix for the problem Juan Ignacio Hervs discovered today 2002-11-22 16:59:40 +00:00
Daniel Stenberg
12cfb4f7ee this fix seems to make the '305 306' test case combination to run ok finally! 2002-11-22 13:48:24 +00:00
Daniel Stenberg
9e1123debe don't use curl.haxx.se 2002-11-22 07:39:15 +00:00
Daniel Stenberg
c7354142c0 dead code removal 2002-11-21 15:11:26 +00:00
Daniel Stenberg
dee84f448f new name, supports <textarea> and the <option> tags within <select> better 2002-11-21 15:09:04 +00:00
Daniel Stenberg
1607711603 4.12 Why do I get "certificate verify failed" ? 2002-11-20 19:17:43 +00:00
Daniel Stenberg
8bca5e05b8 Kjetil Jacobsen's patch that introduces CURLOPT_PRIVATE and CURLINFO_PRIVATE
for storage and retrieval of private data in the curl handle.
2002-11-20 19:11:22 +00:00
Daniel Stenberg
f68505ee23 Karol Pietrzak pointed out that simply including the include dir in --cflags
is not a good thing, as recent gccs for example complain if it is /usr/include

Right now, we just output "" until we think of something better.
2002-11-20 19:04:34 +00:00
Daniel Stenberg
d2174da641 7.10.2 2002-11-18 22:10:06 +00:00
Daniel Stenberg
255b1e68d0 as requested, CURLE_OPERATION_TIMEDOUT is now the same as
CURLE_OPERATION_TIMEOUTED
2002-11-18 21:58:46 +00:00
Daniel Stenberg
fbee6b87f5 fflush() the trace stream on each call 2002-11-15 14:15:28 +00:00
Daniel Stenberg
3836a70f97 removed nroff mistake 2002-11-15 14:13:46 +00:00
Daniel Stenberg
e0ec9fa294 no more dllinit.o usage 2002-11-15 14:13:05 +00:00
Daniel Stenberg
80fe50590f recent fixes 2002-11-15 14:11:45 +00:00
Daniel Stenberg
ae18d1c55a attempts to filter off optimize flags when --enable-debug is used 2002-11-15 14:11:20 +00:00
Daniel Stenberg
75194373e0 language 2002-11-14 09:55:00 +00:00
Daniel Stenberg
f3875048f6 clarified that strings need to be kept around until the handle is closed or
until the pointers are set to another value
2002-11-14 09:54:10 +00:00
Daniel Stenberg
210af986ad dllinit.c is removed 2002-11-13 22:16:44 +00:00
Daniel Stenberg
c03044f492 not used and we don't have permission to distribute this! 2002-11-13 22:16:16 +00:00
Daniel Stenberg
522b85ae21 4.11 Why does my HTTP range requests return the full document? 2002-11-12 20:00:02 +00:00
Daniel Stenberg
208e56dbe9 removed dllinit.c as MSVC doesn't need it 2002-11-12 08:15:38 +00:00
Daniel Stenberg
42acb00c81 moved the bools in the connectdata struct into the substruct named
ConnectBits where the other bools already are
2002-11-11 23:03:03 +00:00
Daniel Stenberg
ca6e770837 The test for DNS cache entries left locked is now only built if
AGGRESIVE_TEST is also defined, as an addition to MALLOCDEBUG. It doesn't
work for multi interface usage and should only be used with careful
consideration.
2002-11-11 22:51:09 +00:00
Daniel Stenberg
775968003c changed header 2002-11-11 22:41:45 +00:00
Daniel Stenberg
323d3e9b5d include SSLCERTS and not UPGRADE. We leave UPGRADE a while in CVS, but it
should be removed soonish.
2002-11-11 22:38:32 +00:00
Daniel Stenberg
16f9755e73 UPGRADE was renamed into this "SSLCERTS" 2002-11-11 22:37:59 +00:00
Daniel Stenberg
66eb98bb0a unlock dns cache entries with a function call instead of a variable fiddle 2002-11-11 22:36:00 +00:00
Daniel Stenberg
299546f5c0 Dave Halbakken added curl_version_info 2002-11-11 21:57:14 +00:00
Daniel Stenberg
7be9b4c418 transfer-encoding: chunked was implemented 2002-11-11 10:00:48 +00:00
Daniel Stenberg
03c22b4576 Now supports "Transfer-Encoding: chunked" for HTTP PUT operations where the
size of the uploaded file is unknown.
2002-11-11 08:40:37 +00:00
Daniel Stenberg
ef749fa9ce Bug report #634625 identified how curl returned timeout immediately when
CURLOPT_CONNECTTIMEOUT was used and provided a fix.
2002-11-07 08:45:10 +00:00
Daniel Stenberg
a23c92596e recent changes 2002-11-06 08:30:08 +00:00
Daniel Stenberg
abb1497c98 output all test case numbers with three digits 2002-11-06 08:29:48 +00:00
Daniel Stenberg
7a8594da43 language fix 2002-11-06 08:29:26 +00:00
Daniel Stenberg
cbf28daed9 Lehel Bernadt's fix to prevent debug message to get sent on errors when
debug wasn't enabled
2002-11-05 11:11:10 +00:00
Daniel Stenberg
0ff1ca30c3 ipv4-fixes for the new Curl_dns_entry struct and Curl_resolv() proto 2002-11-05 11:07:49 +00:00
Daniel Stenberg
2cff251863 Curl_resolv() now returns a different struct, and it contains a reference
counter so that the caller needs to decrease that counter when done with
the returned data.

If compiled with MALLOCDEBUG I've added some extra checking that the counter
is decreased before a handle is closed etc.
2002-11-05 10:51:41 +00:00
Daniel Stenberg
73d996bf26 Soren Spies filled in some info about Mac OS X 10.2 2002-10-31 13:25:03 +00:00
Daniel Stenberg
5bc78cb724 Disable the DNS cache (by setting the timeout to 0) made libcurl leak
memory. Avery Fay brought the example code that proved this.
2002-10-31 13:09:11 +00:00
Daniel Stenberg
cdba92ac3c when using checkprefix(), the first argument must be the prefix! 2002-10-28 22:19:23 +00:00
Daniel Stenberg
6d28f92ffe Transfer-Encoding: needs 17 bytes passed, not 18 2002-10-28 21:52:27 +00:00
Daniel Stenberg
01387f42c5 kromJx@crosswinds.net's fix that now uses checkprefix() instead of
strnequal() when the third argument was strlen(first argument) anyway.
This makes it less prone to errors. (Slightly edited by me)
2002-10-28 21:52:00 +00:00
Daniel Stenberg
8f52b731f4 the malloc debug system assumes single thread 2002-10-28 21:05:14 +00:00
Daniel Stenberg
d442088ed3 kromJx@crosswinds.net fixed typos 2002-10-28 20:58:28 +00:00
Daniel Stenberg
22a323890a works now with autoconf 2.54 2002-10-28 20:39:23 +00:00
Daniel Stenberg
163bba1410 Kevin Roth's patch that checks for the CA cert file at two more places if the
--cacert option is not used.

1. An environment variable named CURL_CA_BUNDLE may contain the full file
name to the file.

2. On Windows, the cert file may be named curl-ca-bundle.crt and put in the
same dir as curl is located (or the CWD) and curl will then use that file
instead.
2002-10-28 19:49:58 +00:00
Daniel Stenberg
db1c618fcf Kevin Roth's patch. $(RM) instead of @erase, and it also passes on the
USE_SSLEAY variable
2002-10-28 19:39:58 +00:00
Daniel Stenberg
01bdfa7b6d Kevin Roth's fixes that use $(RM) instead of @erase and modified SSL version 2002-10-28 19:38:46 +00:00
Daniel Stenberg
6a88c8d845 prevent compiler warning 2002-10-28 19:21:30 +00:00
Daniel Stenberg
b8a6913e09 prevent compiler warnings 2002-10-28 19:20:59 +00:00
Daniel Stenberg
744d8c1006 fixes 2002-10-28 19:17:49 +00:00
Daniel Stenberg
c2e2c98d81 fixed the cygwin check for -no-undefined 2002-10-23 14:45:28 +00:00
Daniel Stenberg
3fa353a2d3 improved the check for an ISO cpp by checking specificly for __BORLANDC__
too, as Emiliano Ida has confirmed it to work
2002-10-23 14:15:29 +00:00
Daniel Stenberg
c27c9f80d2 kromJx@crosswinds.net made it run properly with stunnel >=4.0 2002-10-23 14:07:34 +00:00
Daniel Stenberg
b5a74715cf bad headers can come in two kinds, we either treat everything as one big
badly assumed header, or we think that parts of the buffer is a bad header
and the rest is treated as a normal body part
2002-10-23 13:48:37 +00:00
Daniel Stenberg
13ee2901f4 another week, 7 fixes 2002-10-21 14:04:26 +00:00
Daniel Stenberg
32c03eadd6 glibc 2.2.93 gethostbyname_r() no longer returns ERANGE if the given buffer
size isn't big enough. For some reason they now return EAGAIN.

Redhat 8 ships with this glibc version.
2002-10-21 13:20:30 +00:00
Daniel Stenberg
0fa512f26d Nikita Schmidt's fix to debian bug report #165382. This is verified with
the new test case 55.
2002-10-21 12:07:02 +00:00
Daniel Stenberg
219d88518c Added test 55, follow location with a single slash in the original path.
This caused curl 7.10.1 to crash.
2002-10-21 12:02:44 +00:00
Daniel Stenberg
ecf3aee43a check for cygwin and if built on that, enable the no-undefined option for
libtool. Otherwise disable it.
2002-10-21 06:49:42 +00:00
Daniel Stenberg
7f08cab73e test 54 added, blank Location: field 2002-10-21 06:18:51 +00:00
Daniel Stenberg
c4e9ef199e --enable-debug now checks if gcc is used before it sets all those gcc-
specific options. This should make this option work on more platforms with
other compilers.
2002-10-21 05:52:05 +00:00
Daniel Stenberg
9e612b5550 make very sure that we return 'done' properly when a transfer is done, as
otherwise the multi interface gets problems
2002-10-18 15:28:33 +00:00
Daniel Stenberg
203633d34d return call_multi when we follow a location 2002-10-18 15:27:49 +00:00
Daniel Stenberg
45bd009bb1 if we found no string on the Location: line, don't try to follow it 2002-10-18 13:51:00 +00:00
Daniel Stenberg
ee656415c4 moved comments to first column and automake stopped complaining 2002-10-18 07:55:38 +00:00
Daniel Stenberg
156aad198f Make the COOKIESESSION work better by creating a list of cookie files files
when given in the curl_easy_setopt() and then parse them all on the first
curl_easy_perform() call instead.
2002-10-17 07:10:39 +00:00
Daniel Stenberg
b1ffb79a50 junk cookies test53 added 2002-10-17 07:03:26 +00:00
Daniel Stenberg
d6654bfe00 mucho fixed 2002-10-16 09:53:38 +00:00
Daniel Stenberg
eefdd67d22 Added new mirror 2002-10-15 14:18:31 +00:00
Daniel Stenberg
86a86d7afd Andrs Garca's corrections 2002-10-15 08:39:30 +00:00
Daniel Stenberg
b6dac2b484 ignore .ps and .pdf files too 2002-10-14 07:47:40 +00:00
Daniel Stenberg
e6367abae9 generate and include PDF versions of the docs in the release archive 2002-10-14 07:39:49 +00:00
Daniel Stenberg
fc4d1d9a60 my first take at a memory leak detection document 2002-10-13 10:34:33 +00:00
Daniel Stenberg
94bae20776 some more 2002-10-13 10:28:38 +00:00
Daniel Stenberg
bb8c8d273c added more info 2002-10-13 10:18:10 +00:00
Daniel Stenberg
ee600ace37 three silly bugs 2002-10-12 12:35:30 +00:00
Daniel Stenberg
da86e32eb4 -y and -Y was switched in the examples 2002-10-12 12:14:09 +00:00
Daniel Stenberg
b5bbc04ad1 return error properly when a non-blocking connect fails using the multi
interface
2002-10-12 11:18:08 +00:00
Daniel Stenberg
265c58611f When we receive a "bad header" we must sure not to write down the data part
as well, as then we write the same data twice.
2002-10-11 20:55:08 +00:00
Daniel Stenberg
25c973a39e fix bad free() that caused segfault 2002-10-11 17:44:36 +00:00
Daniel Stenberg
123c7b32db 7.10.1 commit 2002-10-11 13:25:08 +00:00
Daniel Stenberg
e2d8e2c4ae more 2002-10-10 08:04:26 +00:00
Daniel Stenberg
701509d322 Jeff Lawson fixed a few problems with connection re-use that remained when
you set CURLOPT_PROXY to "".
2002-10-10 08:00:49 +00:00
Daniel Stenberg
c3cc616264 Junk data could get inserted when saving/getting HTTP headers, as discovered
by Craig Davison. Now we deal with the 'nread' variable correctly between
each header line.
2002-10-09 13:03:51 +00:00
Daniel Stenberg
91b84b89e4 failf() now sends the text to the debug function callback 2002-10-08 16:10:37 +00:00
Daniel Stenberg
017ec204a9 set version and date 2002-10-08 13:30:34 +00:00
Daniel Stenberg
8dbfecd153 added --ca 2002-10-08 13:30:15 +00:00
Daniel Stenberg
512db1bc54 Added timeout support for the non-windows version. 2002-10-08 13:03:26 +00:00
Daniel Stenberg
e157aabd4d rewrote the --with-zlib check, based on Albert Chin's input. 2002-10-08 12:53:04 +00:00
Daniel Stenberg
db2fea448c 7.10 not 7.9.9 (there never was one named that) 2002-10-08 09:24:21 +00:00
Daniel Stenberg
dd82d69b8c 5.7 Link errors when building libcurl on Windows! 2002-10-08 07:16:17 +00:00
Daniel Stenberg
27328281b7 more blurb 2002-10-08 07:11:34 +00:00
Daniel Stenberg
51d205b267 Kevin's fix to use DESTDIR instead of prefix on make install 2002-10-08 06:50:10 +00:00
Daniel Stenberg
84800914f6 added libcurl-the-guide to the dist 2002-10-07 18:23:52 +00:00
Daniel Stenberg
9b296e65bd Following locations properly, if told to do so. 2002-10-07 13:38:59 +00:00
Daniel Stenberg
5f649a1649 Move the URL concat code to Curl_follow(), and added a proto for that
function. For Location: following.
2002-10-07 13:38:34 +00:00
Daniel Stenberg
daea056210 Kevin Roth pointed out that 'make install' failed if built outside the
sourcedir if we're not using $(srcdir) properly.
2002-10-07 09:04:50 +00:00
Daniel Stenberg
30c0db06bd Kevin's update 2002-10-07 07:38:33 +00:00
Daniel Stenberg
91168c005c fixes since 7.10 2002-10-04 14:27:31 +00:00
Daniel Stenberg
cfa0054077 The -no-undefined flag is CRUCIAL for this to build fine on Cygwin. If we
find a case in which we need to remove this flag, we should most likely
write a configure check that detects when this flag is needed and when its
not.
2002-10-04 14:26:10 +00:00
Daniel Stenberg
3d5820648b as Ralph Mitchell pointed out, the Location: following code needs some
basic ./ and ../ strip-off understanding, and this change introduces with.
test cases 49 - 52 test this.
2002-10-04 14:15:01 +00:00
Daniel Stenberg
d08df97fe5 new redirect tests with ./ and ../ 2002-10-04 14:06:12 +00:00
Daniel Stenberg
fd6624a058 Kevin Roth's patch for his new packaging 2002-10-04 08:22:57 +00:00
Daniel Stenberg
8aa41dd04b Bjorn Wiren pointed out that INSTALL was missing in the tarballs 2002-10-03 12:50:48 +00:00
Daniel Stenberg
e890113fc6 --with-libz and --without-libz are now supported 2002-10-01 11:16:36 +00:00
Daniel Stenberg
e2e64798b5 7.10 2002-10-01 08:57:49 +00:00
Daniel Stenberg
b9b6a6566a three more changes 2002-10-01 08:38:54 +00:00
Daniel Stenberg
dc9e415602 get an argument and add a 'age' field to the struct 2002-09-30 19:51:05 +00:00
Daniel Stenberg
84fa12c885 Cris Bailiff found this flaw, gethostbyname_r() on linux returns 0 even
when it can't lookup the name (at least in some cases) and thus we need
to make an extra check to detect failures.
2002-09-30 08:07:16 +00:00
Daniel Stenberg
296b35fe9b "" proxy means no proxy 2002-09-27 09:51:42 +00:00
Daniel Stenberg
0ff89b9c3c Allow a "" proxy explicitly set dont-use-proxy, i.e don't even check the
environment variables or anything. Setting it to NULL disables proxy as well,
but allows the environment variables to kick in and be used.
2002-09-27 09:49:40 +00:00
Daniel Stenberg
3b33540c99 point out more docs 2002-09-26 13:16:08 +00:00
Daniel Stenberg
29d0174253 nicer html 2002-09-26 13:12:48 +00:00
Daniel Stenberg
cc7f2a0d08 main index for the tool docs 2002-09-26 13:05:54 +00:00
Daniel Stenberg
b1579aed2f fixed html tag 2002-09-26 13:03:55 +00:00
Daniel Stenberg
9247daf953 enhanced curl_version_info 2002-09-26 13:03:22 +00:00
Daniel Stenberg
9031e33b66 language! 2002-09-25 16:20:29 +00:00
Daniel Stenberg
1ee1f5f427 extended curl_version_info() with more info on related sub-libraries 2002-09-25 15:38:48 +00:00
Daniel Stenberg
a5874a5393 four fixes of yday and today 2002-09-25 15:11:06 +00:00
Daniel Stenberg
969217c9d9 make sure we free rangeline before we re-assign it to a new allocated
memory as otherwise we (might) leak memory
2002-09-25 12:47:38 +00:00
Daniel Stenberg
e399502c7a curl_free proto added 2002-09-25 12:27:37 +00:00
Daniel Stenberg
6883f0c49f Walter J. Mack added curl_free 2002-09-25 12:26:07 +00:00
Daniel Stenberg
3fc2c813cc added curl_free and an "overview" section 2002-09-25 12:24:46 +00:00
Daniel Stenberg
9de4b99fc7 added curl_free 2002-09-25 12:21:08 +00:00
Daniel Stenberg
24e7036822 Walter J. Mack's curl_free addition 2002-09-25 12:11:12 +00:00
Daniel Stenberg
ec9acbcda7 Andrs Garca found out that Curl_protocol_connect() could return an
uninitialized variable.
2002-09-25 11:27:06 +00:00
Daniel Stenberg
c0460660d5 Wez Furlong's curl_version_info() function added, still needs some
adjustments and possibly some improvments to feature all those things we
could possibly want from this.
2002-09-25 07:08:41 +00:00
Daniel Stenberg
b03f4919fb 5 changes since pre3 2002-09-23 15:01:03 +00:00
Daniel Stenberg
08620743b9 made the resume error more suitable for all protocols, but we provide a
fallback to the old ftp-one to make old programs work the same
2002-09-23 13:27:12 +00:00
Daniel Stenberg
41362f063a fix resume when multiple files were specified 2002-09-23 13:22:47 +00:00
Daniel Stenberg
5b3069e265 spell fix comment 2002-09-23 12:55:36 +00:00
Daniel Stenberg
b466924717 removed use of extra unneeded variable 2002-09-23 12:47:18 +00:00
Daniel Stenberg
cbc0f65fa3 Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes
in the same style other code does.
2002-09-23 12:46:23 +00:00
Daniel Stenberg
35089a4289 properly disconnect failed connections 2002-09-23 12:44:45 +00:00
Daniel Stenberg
aef3131e92 Craig Markwardt made the "struct hostent_data" get cleared too, as is
needed on Tru64 (or something).
2002-09-20 14:40:14 +00:00
Daniel Stenberg
342fce97af Re-ordered all the options to be more logically structured. Hopefully this
will make this page more readable and easy to find things in!
2002-09-18 15:26:42 +00:00
Daniel Stenberg
fb5d267bd0 a follow-up fix to the previous fix for HTTP servers that don't reply *any*
headers at all
2002-09-16 14:02:08 +00:00
Daniel Stenberg
c19844a0a3 better deal with HTTP(S) servers that respond with no headers at all, test
case 306 added to verify that we do right
2002-09-13 12:40:36 +00:00
Daniel Stenberg
22cf05519a clarified what CURLOPT_MAXCONNECTS actually do 2002-09-13 12:37:14 +00:00
Daniel Stenberg
511ce35631 306 added 2002-09-13 10:57:07 +00:00
Daniel Stenberg
e9b7548dd6 request a page from HTTPS but get no headers 2002-09-13 10:56:23 +00:00
Daniel Stenberg
010cde0a4a recent fixes 2002-09-11 11:47:05 +00:00
Daniel Stenberg
cac5251a98 Lukasz Czekierda correctly pointed out that curl used a bad Host: header
when talking to a IPv6-server using IPv6 IP address only.
2002-09-11 10:32:37 +00:00
Daniel Stenberg
3b825bcbfb ignore html files here 2002-09-11 10:20:46 +00:00
Daniel Stenberg
31959fb24b added more recent return codes 2002-09-11 08:49:55 +00:00
Daniel Stenberg
5e9675ad1e filled in the -k text too 2002-09-11 08:47:30 +00:00
Daniel Stenberg
084b7675b2 added -k for 7.10, added some more details on -y based on comments from
Kingsley Morse
2002-09-11 08:43:31 +00:00
Daniel Stenberg
ed8be5bc55 we are MIT-only 2002-09-09 11:23:57 +00:00
Daniel Stenberg
efca2943a0 minor indent change 2002-09-09 11:23:34 +00:00
Daniel Stenberg
371da7132f remove redundant comment 2002-09-09 11:23:13 +00:00
Daniel Stenberg
9a3ff5c46a configure --disable-http is not properly working 2002-09-09 07:07:13 +00:00
Daniel Stenberg
b36c654a3d Ricardo Cadime helped us work out another check for the ## preprocessor
directive.
2002-09-09 06:48:42 +00:00
Joern Hartroth
ddeb2613ec Added ZLIB switch for activation of content encoding in Makefile.m32 2002-09-07 21:44:02 +00:00
Joern Hartroth
2d02d20911 Added zlib Library. 2002-09-07 00:53:42 +00:00
Joern Hartroth
b2563b9f9f Added content_encoding files. 2002-09-06 22:05:36 +00:00
Daniel Stenberg
fccf6925b1 fixed the pkgadd target 2002-09-05 08:24:21 +00:00
sm
4a7cf65064 Added multi.c to curllib.dsp to fix win32 build 2002-09-04 15:07:28 +00:00
Daniel Stenberg
56587e2821 Sven Neuhaus made --silent being acknowledged even when multiple URLs
were used
2002-09-04 13:43:20 +00:00
Daniel Stenberg
33b8e71583 remove -lz 2002-09-04 13:10:37 +00:00
Daniel Stenberg
1c96128695 we're now MIT licensed only 2002-09-03 11:58:18 +00:00
Daniel Stenberg
ca516b1b26 no longer package MITX.txt or MPL-1.1.txt since we now use COPYING only 2002-09-03 11:54:28 +00:00
Daniel Stenberg
ba4e69bebc updated source code boilerplate/header 2002-09-03 11:52:59 +00:00
Daniel Stenberg
de5e9f100c 7.10-pre2 2002-09-03 11:30:41 +00:00
Daniel Stenberg
955da86a3e fixed the dist-hook and added the missing header file 2002-09-03 11:26:07 +00:00
Daniel Stenberg
8d85be4c5e better name for the legal/license/copyright stuff 2002-09-03 09:25:19 +00:00
Daniel Stenberg
93eadfb10f added some curl-config details 2002-09-02 22:55:22 +00:00
Daniel Stenberg
f8e0b18439 AC_SUBST HAVE_LIBZ for curl-config.in 2002-09-02 22:45:46 +00:00
Daniel Stenberg
64bbe9dfaf James Gallagher's Content-Encoding work 2002-09-02 22:31:18 +00:00
Daniel Stenberg
2e8a9416af ca bundle to use 2002-09-02 22:29:48 +00:00
Daniel Stenberg
5dd40bd0bb adjusted to more HTTP-strict version strings and to offer LIBZ info 2002-09-02 21:59:31 +00:00
Daniel Stenberg
1822dd0549 Jon Topper pointed out a code example bug 2002-09-02 08:38:30 +00:00
Daniel Stenberg
751e49fb0a moo 2002-08-30 12:09:46 +00:00
Daniel Stenberg
56c43604d0 if verifypeer is enabled but nether CAfile nor CApath is, then don't try
to load "verify_locations"
2002-08-30 12:07:42 +00:00
Daniel Stenberg
7438c378be prevent compiler warning 2002-08-30 11:10:50 +00:00
Daniel Stenberg
0e0caf7c06 CURLE_SSL_INSECURE is removed again and so is CURLOPT_SSL_INSECURE, we
proceed fine with the already existing options, just having a different
internal library default for capath.
2002-08-30 11:09:49 +00:00
Daniel Stenberg
5644f4a295 support DESTDIR for the bundle 2002-08-30 11:02:49 +00:00
Daniel Stenberg
98e1605b17 --ca shows ca bundle path 2002-08-30 11:00:54 +00:00
Daniel Stenberg
73f0e32d1a new tests 2002-08-30 10:58:37 +00:00
Daniel Stenberg
713cb56fea show return code when run verbose 2002-08-30 10:50:22 +00:00
Daniel Stenberg
bd3bb70ee8 recent fixes 2002-08-30 09:20:49 +00:00
Daniel Stenberg
8aa3f14303 SOCKS5 support added (contributed by a still unnamed person). Not properly
working for "IPv6 enabled" libcurls yet, but should be pretty easy for
someone to adjust.
2002-08-30 09:20:11 +00:00
Daniel Stenberg
ac285b453e ca-bundle stuff for configure and generated header file 2002-08-30 07:50:59 +00:00
Daniel Stenberg
daf55705e4 more explicit texts on the 4.2 answer 2002-08-29 07:05:31 +00:00
Daniel Stenberg
7140baae72 remove the data and conn fields from the Curl_transfer_keeper struct, they
weren't used anyway and mostly caused confusion
2002-08-29 06:09:21 +00:00
Daniel Stenberg
27a2e590cd SSL_INSECURE support and usage added 2002-08-26 23:13:25 +00:00
Daniel Stenberg
7172fa058a ignore these 2002-08-26 23:07:31 +00:00
Daniel Stenberg
c0790ccf08 updated for the new SSL -k
added two new tests to test the absense of -k to insecure SSL sites
2002-08-26 23:06:16 +00:00
Daniel Stenberg
87c43517cd add more things to do 2002-08-26 22:32:46 +00:00
Daniel Stenberg
6561ec524b don't attempt to ftp_cwd() on a NULL path 2002-08-26 22:00:01 +00:00
Daniel Stenberg
982c5460f0 Andrew Francis removed the need for/use of MSVC pragmas 2002-08-26 17:20:29 +00:00
Daniel Stenberg
2a3a8848f3 corrected the year string 2002-08-26 15:34:23 +00:00
Daniel Stenberg
752520e428 don't close stdin, close the actual file handle we have!
Keith MacDonald found it.
2002-08-26 11:58:18 +00:00
Daniel Stenberg
8095b776fe since 7.9.9-pre1 2002-08-22 19:55:18 +00:00
Daniel Stenberg
e504103e2c Markus F.X.J. Oberhumer's cvsignore fixes 2002-08-22 19:46:39 +00:00
Daniel Stenberg
904183262a Markus F.X.J. Oberhumer added better NOSIGNAL description and fixed
spelling error
2002-08-22 19:46:16 +00:00
Daniel Stenberg
2a0bc64226 Markus F.X.J. Oberhumer's added notes about NOSIGNAL in the TIMEOUT
descriptions, slightly edited by me.
2002-08-22 19:45:22 +00:00
Daniel Stenberg
6b975c308c Markus F.X.J. Oberhumer added a section about NOSIGNAL and libcurl in
multi-threaded use
2002-08-22 19:39:19 +00:00
Daniel Stenberg
74be55a477 Markus F.X.J. Oberhumer's added comment 2002-08-22 19:38:50 +00:00
Daniel Stenberg
394832c2d6 Markus Oberhumer improved an out-of-memory check
I reformatted some functions using a different indent than the rest
of the file.
2002-08-22 19:38:17 +00:00
Daniel Stenberg
f636c12255 bug report #588027 converted to a KNOWN BUG, as we have no intention to
correct this problem within the nearest period
2002-08-22 19:03:54 +00:00
Daniel Stenberg
03e4a8214c allow undefined symbols! 2002-08-22 14:28:15 +00:00
Daniel Stenberg
6d7785a35b NOSIGNAL, BUFFERSIZE and clarification for the PROGRESSFUNCTION 2002-08-21 19:04:08 +00:00
Daniel Stenberg
904f579332 modified the copyright line and shortened the phrasing in this license to
become even shorter, but retaining the same meaning and effect for all
users.
2002-08-21 11:05:20 +00:00
Daniel Stenberg
a72d789b08 Added three more pragmas for MSVC++ compiles.
We *really* need these sorted out. I'd prefer to have them all removed and
the actual code corrected instead of just diabling the warnings and pretending
that they don't exist.
2002-08-20 11:46:48 +00:00
Daniel Stenberg
87ad7ace18 prevent compiler warnings 2002-08-20 11:43:31 +00:00
Daniel Stenberg
35153eb524 windows has stdlib.h 2002-08-20 11:42:35 +00:00
Daniel Stenberg
c8ee1fa62e modified again to look better HTML converted 2002-08-15 08:06:36 +00:00
Daniel Stenberg
5c1a6ed719 Leonce Limousin pointed out flaws 2002-08-15 06:13:54 +00:00
Daniel Stenberg
9d68fde148 Wez Furlong's ideas and some cleaning up/clarifying 2002-08-14 23:35:19 +00:00
Daniel Stenberg
c7d517f6d2 re-order the compiler arguments to keep more compiler happy 2002-08-14 23:01:14 +00:00
Daniel Stenberg
183f1531d3 include curl-includes "local" instead of <curl/foo> 2002-08-13 15:03:57 +00:00
Daniel Stenberg
6dfe0ec31e Sterling Hughes brings the share interface 2002-08-13 14:20:47 +00:00
Daniel Stenberg
8b3f1cebda gethostname is not used anymore so we can stop looking for it! ;-) 2002-08-13 12:12:36 +00:00
Daniel Stenberg
086daf913c mr Hartroth correctly pointed out that poll() isn't really that portable
so we need to hack around it when not there
2002-08-13 12:12:08 +00:00
Daniel Stenberg
6a3e2272e9 check for poll() 2002-08-13 11:45:34 +00:00
Daniel Stenberg
d0e0bf53a6 change the resolver URL to the work-in-progress library project 2002-08-13 06:51:50 +00:00
Daniel Stenberg
0009e4dfb9 7.9.9-pre1 2002-08-12 22:36:37 +00:00
Daniel Stenberg
30b7a9f172 fixed a Curl_connecthost() bug, we should default to set connected to false 2002-08-12 12:01:57 +00:00
Daniel Stenberg
c74cb59e08 added comment about CURLOPT_WRITEDATA for directing contents somewhere 2002-08-12 11:36:48 +00:00
Daniel Stenberg
c1f29a8e08 multi asynch work committed 2002-08-12 09:45:59 +00:00
Daniel Stenberg
cb895ec335 Initial fix to make the multi interface return control while waiting for
the initial connect to "come through".

This should work fine for connect and for FTP-PASV connects. Needs massive
testing.
2002-08-12 09:43:20 +00:00
Daniel Stenberg
2df4866cfa redirect stderr to /dev/null when testing for running test-servers 2002-08-12 09:41:56 +00:00
Daniel Stenberg
423a1cf486 CURLOPT_NOSIGNAL added 2002-08-12 09:02:24 +00:00
Daniel Stenberg
7aeb63c817 ignore html too 2002-08-12 08:54:49 +00:00
Daniel Stenberg
476fa1f4d2 ignore 2002-08-08 23:25:26 +00:00
Daniel Stenberg
0bea215560 more to ignore 2002-08-08 23:19:24 +00:00
Daniel Stenberg
3c20b98d99 ignore 2002-08-08 23:17:52 +00:00
Daniel Stenberg
8bcdda29d4 all those ignores 2002-08-08 23:13:51 +00:00
Daniel Stenberg
c88036405f ignore generated files 2002-08-08 23:11:26 +00:00
Daniel Stenberg
60cddab4f2 ignore these files 2002-08-08 23:10:50 +00:00
Daniel Stenberg
411ca1c050 things to ignore 2002-08-08 23:09:45 +00:00
Daniel Stenberg
d1be3a4a1d cvsignore files 2002-08-08 23:07:24 +00:00
Daniel Stenberg
b5dd257427 makes things better 2002-08-08 23:05:50 +00:00
Daniel Stenberg
4cf953678d Markus F.X.J. Oberhumer's CURLOPT_NOSIGNAL patch 2002-08-08 22:52:50 +00:00
Daniel Stenberg
ca5678c8c1 attempted hpux fix for resolves 2002-08-08 22:44:43 +00:00
Daniel Stenberg
9e4594be53 fix the ansi/iso cpp check to work with c++ 2002-08-08 22:44:09 +00:00
Daniel Stenberg
d16c757c28 mainly more not-so-very serious blurb about the name 2002-08-08 11:54:11 +00:00
Daniel Stenberg
312bcafd05 ignore all .in files 2002-08-08 04:44:41 +00:00
Daniel Stenberg
be24652d4d Adding more blurb about activating the cookies on COOKIEFILE and COOKIEJAR 2002-08-07 08:23:40 +00:00
Daniel Stenberg
6ab44d9439 spell out that -i should be used if you want to add http headers to the
output. -v does not do that
2002-08-07 08:09:14 +00:00
Daniel Stenberg
108cb14d1f Make SessionHandle keep record if it is used with the multi interface or
the easy interface, it CANNOT be used by a mixture.
2002-08-05 17:04:39 +00:00
Daniel Stenberg
b98308b524 curl/curl.g fix, HP-UX fix, ftp port, libcurl.def, empty post and rfc2732-
addresses
2002-08-05 16:54:08 +00:00
Daniel Stenberg
215c445583 re-added the RFC2732-parser that was lost for some reason during the flow
of time!
2002-08-05 16:50:55 +00:00
Daniel Stenberg
20d8e32a58 support blank arguments to options, each option should check for blank
ones themselves if they need to prevent this.
2002-08-05 11:15:57 +00:00
Daniel Stenberg
33306b2749 jonatan's fixes 2002-08-05 09:38:31 +00:00
Joern Hartroth
94eeeba79a Added multi interface functions to DLL definitions. 2002-08-03 16:38:28 +00:00
Daniel Stenberg
ecd29a289a corrected some warnings 2002-08-01 14:30:42 +00:00
Daniel Stenberg
e7d0af72e3 Changed the PORT command to pick a better default IP address if "-" is used.
It now uses the local IP adress of the control connection.
2002-08-01 14:25:12 +00:00
Daniel Stenberg
fcb1d3521a sys/socket.h without #ifdef
include sys/time.h as well
2002-07-31 23:18:27 +00:00
Daniel Stenberg
890bf3bd27 spell fix and --limit-rate added 2002-07-31 08:24:58 +00:00
Daniel Stenberg
dafd81178f When CURLINFO_CONTENT_TYPE returns a NULL pointer, don't try to fputs() it! 2002-07-30 11:07:59 +00:00
Daniel Stenberg
99dfdebc64 check for sys/poll.h 2002-07-29 23:00:16 +00:00
Daniel Stenberg
c1cfdd6323 passwords and cookies 2002-07-29 22:59:36 +00:00
Daniel Stenberg
264a9bc6ed Removed checks for if set.fpasswd is NULL, as we prevent users from setting
it to NULL and then use the internal default instead. It will always be
a function to call.
2002-07-29 22:45:50 +00:00
Daniel Stenberg
f79f5cbf82 Setting PASSWDFUNCTION to NULL will set back the internal function as password
function.
2002-07-29 22:42:11 +00:00
Daniel Stenberg
7313501e30 fixed the Curl_cookie_add() invoke to not assume a space after the colon 2002-07-29 22:23:55 +00:00
Daniel Stenberg
d8b2c819e7 properly skip white spaces on Set-Cookie: header lines 2002-07-29 22:22:49 +00:00
Daniel Stenberg
69f6d14b81 extended and improved cookie testing 2002-07-29 22:21:37 +00:00
Daniel Stenberg
9f3856e646 HAVE_SETVBUF fixed 2002-07-29 22:14:56 +00:00
Daniel Stenberg
a46e2e9900 link with winmm.lib too 2002-07-29 14:20:53 +00:00
Daniel Stenberg
14f0dd2dd0 use stderr to present the prompt to, make sure to close the fopen()ed
file handle
2002-07-29 14:15:14 +00:00
Daniel Stenberg
c051438fa1 Added multi.[co] to the build 2002-07-29 11:07:26 +00:00
Daniel Stenberg
52e32ac1d3 added HAVE_SETVBUF 2002-07-28 17:08:22 +00:00
Daniel Stenberg
7f8ad34ba2 Glen Nakamura made his fix look even better! 2002-06-26 15:39:23 +00:00
Daniel Stenberg
a9c0302454 Glen Nakamura's patch applied 2002-06-26 08:42:29 +00:00
Daniel Stenberg
a33e89b44a Glen Nakamura's patch for Curl_getaddrinfo(). 2002-06-26 08:03:46 +00:00
Daniel Stenberg
e203ecebee since 7.9.8 2002-06-26 07:16:11 +00:00
Daniel Stenberg
2f8e7f56b3 ignore '+' in URLs, generate only %-codes 2002-06-26 07:15:31 +00:00
Daniel Stenberg
2443e1f38c T. Bharath fixed his mm lib timer resolution fix 2002-06-26 06:47:18 +00:00
Daniel Stenberg
eb164098b7 added HISTORY
for newbies ;-)
2002-06-25 09:21:45 +00:00
Daniel Stenberg
62527fa98a corrected to match reality better 2002-06-24 06:14:56 +00:00
Daniel Stenberg
b9f8e80b14 removed the php/examples reference as that dir is not in the archives 2002-06-19 12:37:02 +00:00
Daniel Stenberg
b79e250ed2 simplified the compile line even more 2002-06-19 12:31:49 +00:00
Daniel Stenberg
fc5c9d8f17 simplepost.c shows a simple POST ;-) 2002-06-19 12:30:12 +00:00
Daniel Stenberg
72d57a8ee6 removed extra / in help text 2002-06-15 21:08:07 +00:00
Daniel Stenberg
23262e30bc Added CURLOPT_BUFFERSIZE 2002-06-15 21:06:17 +00:00
Daniel Stenberg
8b4ad40ed6 Added --limit-rate 2002-06-15 21:02:11 +00:00
Daniel Stenberg
d7e9797365 HAVE_SYS_POLL_H 2002-06-15 21:01:32 +00:00
Daniel Stenberg
e54e0c7877 CURLOPT_BUFFERSIZE allows an application to set a prefered buffer size
for receiving data from the network. It is meant as a hint, not as a forced
limit.
2002-06-15 21:00:54 +00:00
Daniel Stenberg
5cb06d8fd6 Chris Combes added description of his newly added options 2002-06-15 11:17:42 +00:00
Daniel Stenberg
2b34d4e1f7 - Yarram Sunil found out that the SocketIsDead() function performed a lot
faster on Windows when removing the 1 microsecond timeout.
2002-06-14 12:05:20 +00:00
Daniel Stenberg
c7aa095fac Hanno L. Kranzhoff fixed them 2002-06-14 09:36:09 +00:00
Daniel Stenberg
93f1784526 Remade the FTP not-check status line and not-attempt-to-read-status-line
variables, conditions and things.
2002-06-14 06:57:00 +00:00
Daniel Stenberg
559dc503c2 Tom Mattison's report found out, and this is the fix that should prevent
FTP from closing the connections a little too often!
2002-06-13 22:22:59 +00:00
Daniel Stenberg
414afe0935 Miklos Nemeth added a section for how to disable specific protocols in the
windows build.
2002-06-13 22:13:46 +00:00
Daniel Stenberg
4ad4f3fc70 Miklos Nemeth fixed the mmlib 2002-06-13 22:11:28 +00:00
Daniel Stenberg
67273eed9b 7.9.8 commit 2002-06-13 14:37:15 +00:00
Daniel Stenberg
3c63e1d8d9 Added 'dont_check' to be set during an FTP operation if the final status
message is supposed to be ignored.
2002-06-13 09:21:08 +00:00
Daniel Stenberg
cae555c977 when no FTP transfer was done, don't attempt to read the download transfer
thing. The 'resumed' flag is also causing confusions. I'll deal with that
tomorrow.
2002-06-12 22:05:28 +00:00
Daniel Stenberg
407583e8e2 Moved the secondarysocket cleanup. The 'conn' struct may have been cleared
already at that other place.
2002-06-12 22:04:25 +00:00
Daniel Stenberg
131645dc31 Chris Combes added CURLFORM_BUFFER, CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH 2002-06-12 21:40:59 +00:00
Daniel Stenberg
dafd644fe7 fixing builds, patching bugs, adding curl_formadd() options 2002-06-12 21:40:30 +00:00
Daniel Stenberg
73cc1742af HAVE_SIGSETJMP 2002-06-12 17:56:22 +00:00
Daniel Stenberg
87afd7686f added a connect failure error message that might get empty otherwise 2002-06-12 09:48:26 +00:00
Daniel Stenberg
8ce10b5dfa Jrn fixes for 7.9.8 build 2002-06-12 09:18:37 +00:00
Daniel Stenberg
943e31b35c CURLOPT_MAXFILESIZE 2002-06-12 08:16:59 +00:00
Daniel Stenberg
20f85b94df kris@freebsd.org fixed a bad format string 2002-06-12 07:45:11 +00:00
Daniel Stenberg
17b784381e kris@freebsd.org fixed a few bad format strings 2002-06-12 07:44:22 +00:00
Daniel Stenberg
e3031fddb9 Add QNX 2002-06-12 07:26:13 +00:00
Daniel Stenberg
38c994a7ae put #ifdefs around the sigjmp_buf declaration too, as it should be 2002-06-11 15:47:01 +00:00
Daniel Stenberg
85e2e96fb6 corrected the signal handler 2002-06-11 15:44:27 +00:00
Daniel Stenberg
be35b3ad03 7.9.8-pre3 commit 2002-06-11 15:28:50 +00:00
Daniel Stenberg
dbbd871ea1 the disable protocol stuff is now added 2002-06-11 15:24:47 +00:00
Daniel Stenberg
813911db59 more nonewline support 2002-06-11 15:11:41 +00:00
Daniel Stenberg
3c49b405de Now uses sigsetjmp() and siglongjmp() to bail out from slow name lookups in
case a timeout is set. This seems to work. God knows if it is good enough
or what kind of side-effects we introduce here and now.

I'll close my eyes and cross my fingers. Hard.
2002-06-11 15:10:18 +00:00
Daniel Stenberg
4cfffd6c4a cut up the string in more pieces for <512 bytes strings 2002-06-11 15:09:02 +00:00
Daniel Stenberg
e9f1c12f0f removed accidentally added debug-code! 2002-06-11 14:10:32 +00:00
Daniel Stenberg
4fe252847c ftp range downloads make us ignore the final status message as the server
will most likely treat the download as failed as we might abort it
pre-maturely
2002-06-11 12:35:03 +00:00
Daniel Stenberg
109cbbe9c5 added test135 ftp byte-range download 2002-06-11 12:25:46 +00:00
Daniel Stenberg
fd3881eaa6 added --disable-[protocol] support 2002-06-11 11:13:29 +00:00
Daniel Stenberg
08ef208fb7 added disable-[protocol] support, largely provided by Miklos Nemeth 2002-06-11 11:13:01 +00:00
Daniel Stenberg
8c45e2a641 Added disable-defines 2002-06-11 11:12:27 +00:00
Daniel Stenberg
25dc520163 added multi.obj 2002-06-11 11:11:06 +00:00
Daniel Stenberg
fc37ef9e4b make sure data->set.postfields is non-NULL before doing strlen() on the
pointer. Bugs item #566835.
2002-06-11 07:20:21 +00:00
Daniel Stenberg
11ba367fc9 getaddrinfo() failures now show port number too in informational output 2002-06-10 13:26:02 +00:00
Daniel Stenberg
78473f71eb added a missing failf() for certain connect failures 2002-06-10 13:25:03 +00:00
Daniel Stenberg
8b77f40f99 This fix MIGHT make us build nicely with OpenSSL 0.9.7. This fix is based
on a patch from Jacob Meuser, input from Gtz Babin-Ebell and my own
browsing of the latest include files.
2002-06-10 12:38:10 +00:00
Daniel Stenberg
d866716565 Gautam Mani found a socket descriptor leak that happened when FTP transfers
failed and you reinvoked curl_easy_perform().
2002-06-10 12:34:04 +00:00
Daniel Stenberg
307d0effe2 Added HAVE_SYS_TYPES_H 2002-06-07 06:17:05 +00:00
Daniel Stenberg
b47b053e54 Gustaf Hui fixed curl_multi_remove_handle() to prevent a potential crash 2002-06-05 21:29:20 +00:00
Daniel Stenberg
b79f01caf3 set HAVE_RAND_STATUS too 2002-06-05 14:14:54 +00:00
Daniel Stenberg
0db227f55e hostcache_fixoffset() is now corrected to work on 64bit architectures
Bug report #564585.
2002-06-05 13:41:33 +00:00
Daniel Stenberg
ac48b38842 more stuff since pre1 2002-06-04 11:53:31 +00:00
Daniel Stenberg
0cbb9365c6 indent like the other ones 2002-06-03 13:37:09 +00:00
Daniel Stenberg
798b8c522b Christophe Espern wrote another binding! 2002-06-03 13:20:23 +00:00
Daniel Stenberg
15bc7e19f9 updated header 2002-06-03 13:04:35 +00:00
Daniel Stenberg
0be3f1a063 T. Bharath's updates since curl now uses the winmm lib for higher resolution
timer
2002-06-03 12:48:31 +00:00
Daniel Stenberg
c0257c6721 T. Bharath made the request size add up as it is documented to do. 2002-06-03 12:47:08 +00:00
Daniel Stenberg
9aec0fc7de T. Bharath fixed higher resolution time for windows builds 2002-06-03 12:46:32 +00:00
Daniel Stenberg
bce5e0d82c T. Bharath fixed the TIMER_REDIRECT. 2002-06-03 12:46:04 +00:00
Daniel Stenberg
62032ee248 Getting an empty FTP file no longer makes us return error 19. An empty file
is fine to get.
2002-05-28 22:33:30 +00:00
Daniel Stenberg
775645f29b Gustaf Hui provided new code that changes how curl_multi_info_read()
messages are stored, so that they don't have to be kept around for the multi
 handle's entire life time. He also made it return failure codes properly
 which it didn't do before.

 I made the messages only get stored per easy-handle so that they can be
 independently killed easier without ruining the "master list". It makes
 the info_read() function slightly less beautiful as it has to scan for
 messages to return, but it makes removing individual handles a lot easier
 and less error prone.
2002-05-28 14:45:50 +00:00
Daniel Stenberg
99c0456872 Adjusted to make curl_multi_perform() work properly even when
curl_multi_fdset() is not used.
2002-05-28 14:18:36 +00:00
Daniel Stenberg
0236bee5de I trimmed the --help output slightly to better fit within 80 cols 2002-05-28 09:31:48 +00:00
Daniel Stenberg
59c11b82d5 Cris Bailiff's CAPATH support added 2002-05-28 09:21:29 +00:00
Daniel Stenberg
98871d1e9e new url, spell checked 2002-05-22 22:14:03 +00:00
Daniel Stenberg
b40dc5d742 since 7.9.7 2002-05-22 11:08:19 +00:00
Daniel Stenberg
17b0723713 James Cone's little work-around for the strict error 2002-05-21 22:39:09 +00:00
Daniel Stenberg
ec585e8907 When re-using a connection, make sure that we use the current host name as
we might actually re-use a connection to a different host, when using proxies!

This was what bug report #558888 was all about.
2002-05-21 22:24:56 +00:00
Daniel Stenberg
0aeb25ff3b James Cone added the new CURL_NETRC_OPTION enum 2002-05-21 22:22:28 +00:00
Daniel Stenberg
a928f2c4aa test suite mods for the netrc testing stuff 2002-05-21 22:20:52 +00:00
Daniel Stenberg
51fcee6f81 James Cone added CURLOPT_NETRC / --netrc / --netrc-optional descriptions 2002-05-21 22:20:16 +00:00
Daniel Stenberg
654be65590 Use the new CURLOPT_NETRC option and adds --netrc-optional, by James Cone 2002-05-21 22:18:34 +00:00
Daniel Stenberg
105ec79b2b James Cone's efforts to add another netrc parsing "mode" 2002-05-21 22:17:19 +00:00
Daniel Stenberg
c759d8427a five new test cases for the netrc parsing 2002-05-21 22:14:08 +00:00
Daniel Stenberg
c7b03d6479 maprintf() and vmaprintf() now work better when printfing "%s" with an
empty string
2002-05-21 17:59:57 +00:00
Daniel Stenberg
2080738883 corrected see also 2002-05-21 14:00:55 +00:00
Daniel Stenberg
48bc73c271 3.14 added, javascript support 2002-05-21 13:53:32 +00:00
Daniel Stenberg
3d0969d1d1 Added source header and made it clear that this code was originally donated
to us by Juergen Wilke.
2002-05-21 08:22:00 +00:00
Daniel Stenberg
323f195036 ASN1 files don't work for the *chain_file(), make them use the previous
version
2002-05-21 08:15:42 +00:00
Daniel Stenberg
c3c392fc98 return type CURLFORMcode instead of plain int 2002-05-21 07:47:09 +00:00
Daniel Stenberg
5d2944c211 curl_formadd() now returns 'CURLFORMcode' instead of int, to better enable
checking for particular errors. curl/curl.h defines the errros
2002-05-21 07:44:27 +00:00
Daniel Stenberg
fe3ba1dd11 Roland Zimmermann's hint, we use SSL_CTX_use_certificate_chain_file() instead
of the previous one that used SSL_CTX_use_certificate_file()
2002-05-20 14:25:35 +00:00
Daniel Stenberg
0c00eb93a0 removed compiler warnings 2002-05-17 08:15:33 +00:00
Daniel Stenberg
baa77ec13b FreeBSD needs sys/types.h before we include sys/select.h that was included
mainly for AIX in the first place...! As reported in bug report #556869
2002-05-17 07:57:13 +00:00
Daniel Stenberg
9263652c6d Fixes bug report #556930 - we need to make sure that the data is all right
after we've realloc() the packed hostent struct.
2002-05-17 07:49:28 +00:00
Daniel Stenberg
bc74375543 Added item 4.10 after talks with Russ Freeman 2002-05-15 21:40:29 +00:00
Daniel Stenberg
edb1756050 7.9.7 commit 2002-05-13 09:40:16 +00:00
Daniel Stenberg
5215f6f654 we don't need win32sockets.c anymore, we support this internally 2002-05-13 07:29:22 +00:00
Daniel Stenberg
1913b4eeed fopen.c added, a fopen() style emulation for URL reading 2002-05-13 07:28:10 +00:00
Daniel Stenberg
b44a4da5df Friday's fixes 2002-05-12 16:10:12 +00:00
Daniel Stenberg
919878fbb2 AIX 5.1 2002-05-10 16:01:24 +00:00
Daniel Stenberg
06bdf83419 Kein Roth made --trace-ascii look even better, and make OD 0A occurances
get output as plain newlines.
2002-05-10 15:59:42 +00:00
Daniel Stenberg
2ff2810a92 AIX wants sys/select.h for the fd_set stuff in curl/multi.h, and even though
it is a bit ugly work-around to add this here, it is still a working work-
around! ;-)
2002-05-10 14:37:39 +00:00
Daniel Stenberg
20d9c1b30d Patrick Smith's contributed docs improvements for when NLST is used by
curl...
2002-05-07 23:36:53 +00:00
Daniel Stenberg
bbe10cb0cb 7.9.7-pre2 2002-05-07 21:52:38 +00:00
Daniel Stenberg
daba8f3a70 Added --trace-ascii support 2002-05-07 13:13:17 +00:00
Daniel Stenberg
1458c3668d --trace-ascii and --junk-session-cookies were added 2002-05-07 13:12:12 +00:00
Daniel Stenberg
980a47b42b support for ingoring session cookies added 2002-05-07 09:58:13 +00:00
Daniel Stenberg
f7ca561b06 the code for case CURLOPT_DEBUGDATA code broke the CURLOPT_STDERR one! 2002-05-06 18:30:17 +00:00
Daniel Stenberg
cacd756efd recent fiddling 2002-05-06 13:44:00 +00:00
Daniel Stenberg
8539e76cb9 CURLOPT_FILE and CURLOPT_INFILE have better aliases now:
CURLOPT_WRITEDATA and CURLOPT_READDATA
2002-05-06 13:43:35 +00:00
Daniel Stenberg
3bbf694d5a Added multi-post.c, based on the source file posted by Gustaf Hui 2002-05-06 13:38:28 +00:00
Daniel Stenberg
44debdde62 Better support for being used with the multi interface without the *fd_set()
and proper select()ing have been made.
2002-05-05 12:11:03 +00:00
Daniel Stenberg
c6cf2b8e93 --trace is a 7.9.7 function 2002-05-05 09:09:17 +00:00
Daniel Stenberg
69c5452b25 added -Z/--max-redirs and --trace
changed order of a few others to keep the a-z order
2002-05-05 09:08:26 +00:00
Daniel Stenberg
d321056e8d made VERBOSE output more like it used to be, HEADER_IN is thus also ignored
by the internal debugfunction callback
2002-05-04 15:36:07 +00:00
Daniel Stenberg
d9a1a59f22 CURL_MAX_WRITE_SIZE is a new exported define that informs about the biggest
sized buffer that may be passed to a write callback
2002-05-03 14:50:29 +00:00
Daniel Stenberg
0b898b5a8a fixed return code 2002-05-03 12:40:37 +00:00
Daniel Stenberg
a9e0885be0 another week of changes 2002-05-03 12:21:07 +00:00
Daniel Stenberg
57ff28c9b7 - Added "--trace [file]" to the command line tool. It makes a very detailed
trace dump get stored, with a full protocol dump that includes all received
  and transmitted data. This could be a very effective tool for debugging what
  goes wrong. This dump includes every byte the way it is sent to/received
  from the server. The dump is the plain-text version, so SSL transfers will
  still be readable.
2002-05-03 12:14:09 +00:00
Daniel Stenberg
86cc34c0de made the DEBUGFUNCTION get called properly on a few more places, especially
for DATA_IN and DATA_OUT.
2002-05-03 12:07:32 +00:00
Daniel Stenberg
39028f1bd4 make sure our own printf() clones are used 2002-05-03 12:06:04 +00:00
Daniel Stenberg
71f4c05665 -D now stores all headers to the same file if multiple URLs are given on the
command line!
2002-05-03 09:47:25 +00:00
Daniel Stenberg
9ef9797998 clarified that you must keep the variables that you point to! 2002-05-02 22:34:31 +00:00
Daniel Stenberg
ab9374de57 spell 2002-05-02 22:15:21 +00:00
Daniel Stenberg
913e997061 use and set the fd_set pointers instead of the actual values, as then we
work properly with the multi interface when the user has provided the
fd_sets!
2002-05-02 22:14:31 +00:00
Daniel Stenberg
8e50d6b6f3 added two pointers to the fd_set variables to read/write from, as sometimes
we need to point to user-provided fd_sets
2002-05-02 22:13:35 +00:00
Daniel Stenberg
2db0744a7b return CURLM_CALL_MULTI_PERFORM in one more case, and check return code
from malloc()
2002-05-02 22:12:14 +00:00
Daniel Stenberg
2de0028349 make sure the dns cache pointers in the easy handles are NULLed 2002-05-02 18:07:38 +00:00
Daniel Stenberg
35d04c5398 Hanno Kranzhoff noticed we didn't properly reset the download/upload counters
before transfers, when doing multiple ones on the same handle.
2002-05-02 08:52:09 +00:00
Daniel Stenberg
b1becd0ed5 Jacky Lam's fix to make the realloc() of the hostent data work properly
even when the realloc() actually gets a new memory block
2002-05-01 11:36:13 +00:00
Daniel Stenberg
bd9650bc81 how to set more than one cookie 2002-04-30 07:37:02 +00:00
Daniel Stenberg
969a25d1b2 implemented curl_multi_info_read() which I had forgotten before! 2002-04-27 22:21:51 +00:00
Daniel Stenberg
f144f77ba7 updated some docs 2002-04-27 20:19:55 +00:00
Daniel Stenberg
abea1f8910 clarified 2002-04-27 18:31:49 +00:00
Daniel Stenberg
8eaa7fec76 one added, one edited 2002-04-27 18:12:26 +00:00
Daniel Stenberg
fdace647e8 shorter introduction 2002-04-27 18:01:54 +00:00
Daniel Stenberg
d7531c18fc updated 2002-04-27 18:00:10 +00:00
Daniel Stenberg
ef3f978784 Added BINDINGS, lists all available libcurl bindings as of this date. 2002-04-27 17:02:38 +00:00
Daniel Stenberg
e410860e0e fixes on rainy saturday in the end of April, 2002 2002-04-27 13:26:32 +00:00
Daniel Stenberg
c64fca1b0c Fixed the FTP response reader to deal with timeouts better. Previously it
would reset the timeout for each incoming data, which would make veeery
slow responses be allowed to take even more time since the timeout would only
be reached if the time between two received data chunks was longer than the
set timeout value...
2002-04-27 13:24:06 +00:00
Daniel Stenberg
15b2a3af91 (Curl_GetFTPResponse) moved some code to only get performed when actually
needed
2002-04-27 13:09:37 +00:00
Daniel Stenberg
8358505b6d Now uses Curl_ as prefix for internal global symbols. curl_ should only be
used for "exported" globals.
2002-04-27 13:07:51 +00:00
Daniel Stenberg
1c42779845 DNC cache prune crash removed, made the name spacing follow the general
rule: "Curl_" prefix for library-wide private symbols, "curl_" is for
exported symbols.
2002-04-27 13:06:40 +00:00
Daniel Stenberg
32823f17e0 openbsd on Alpha was no problemos 2002-04-26 12:58:07 +00:00
Daniel Stenberg
e1c2e3f5e9 test suite portability fix 2002-04-26 12:57:49 +00:00
Daniel Stenberg
044755b30f handles much larger POSTs, replaced snprintf() with sprintf() since this
needs to be more portable and in the test server we can skip the extra
safety
2002-04-26 07:48:05 +00:00
Daniel Stenberg
9aa22399a8 another week of changes 2002-04-26 07:45:39 +00:00
Daniel Stenberg
f564905ac4 adjusted to the new Curl_resolv() proto 2002-04-25 19:26:29 +00:00
Daniel Stenberg
00e4f81446 prevent persistant connections to do name resolves 2002-04-25 19:18:19 +00:00
Daniel Stenberg
8927ddec16 In order to not get problems with DNS cache pruning, we no longer store
any name resolved data in any curl handle struct. That way, we won't mind
if the cache entries are pruned for the next time we need them. We'll just
resolve them again instead.

This changes the Curl_resolv() proto. It modifies the SessionHandle struct
but perhaps most importantly, it'll make the internals somewhat dependent
on the DNS cache not being disabled as that will cripple operations somewhat.
Especially for persistant connections.
2002-04-25 19:00:57 +00:00
Daniel Stenberg
f6525ae200 the TOTAL_TIME is not really total, as it excludes the connect time... 2002-04-25 16:45:15 +00:00
Daniel Stenberg
0be7944d66 use the hostname pointer instead of using IPv4-only info from a struct 2002-04-25 15:50:49 +00:00
Daniel Stenberg
47819ea86e clarified a bit with the timecondition stuff 2002-04-24 10:16:46 +00:00
Daniel Stenberg
96ce3461ad no, this doesn't look like it bugs 2002-04-24 10:16:00 +00:00
Daniel Stenberg
8b6d555421 NetBSD alpha works, also tried a newer FreeBSD on alpha 2002-04-24 10:15:37 +00:00
Daniel Stenberg
3b9ef8dfc8 removed warning about signed/unsigned comparison 2002-04-23 14:57:37 +00:00
Daniel Stenberg
db6d4bcf47 the 80 column police narrowed this source code! B-] 2002-04-23 14:56:21 +00:00
Daniel Stenberg
471f1d694f fixes bug report #547484, no_proxy doesn't properly strip off port numbers
from the host names before comparing
2002-04-23 13:34:28 +00:00
Daniel Stenberg
495f6f6bd3 use new timecond defines 2002-04-23 00:05:21 +00:00
Daniel Stenberg
36e35b6f60 allow binding the local end of a connection even when using IPv6, thus we
now have --interface working properly
2002-04-22 23:56:13 +00:00
Daniel Stenberg
192606bc4b use double where it is supposed to 2002-04-22 23:54:43 +00:00
Daniel Stenberg
53a9fdf078 use sclose() to close sockets 2002-04-22 23:53:49 +00:00
Daniel Stenberg
ef436bdbe8 renamed the TIMECOND defines to be CURL_ prefixed 2002-04-22 23:53:15 +00:00
Daniel Stenberg
72d722b07b The timecond stuff now have CURL_ prefixes 2002-04-22 13:33:56 +00:00
Daniel Stenberg
21fc402c01 Jacky Lam's adjust resolve-buffer size patch applied. Slightly edited
by Daniel.
2002-04-22 13:31:16 +00:00
Daniel Stenberg
381f77756d pack_hostent does not handle 64 bit pointers correctly.
A Bjrn Reese patch.
2002-04-19 11:00:26 +00:00
Sterling Hughes
a386562d9a Prune old hostcache entries with each call...
This can be optimized a tidbit, but this is a start.
2002-04-17 20:13:55 +00:00
Daniel Stenberg
2bc84fb163 Dirk Manske's two new infos 2002-04-17 07:21:17 +00:00
Daniel Stenberg
08f8917acb Dirk Manske's fix for HTTP response code 301, that now behaves more like
browsers do. Which thus *breaks* the RFC 2616...
2002-04-17 07:16:49 +00:00
Daniel Stenberg
62d205a2ec Dirk Manske brought the patch that introduces two new CURLINFO_* values:
CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT.
2002-04-16 07:59:20 +00:00
Daniel Stenberg
29e873b12d Jonatan Lander fixed the "Disables POST, goes with GET" output to be more
connected with reality! ;-)
2002-04-15 13:47:06 +00:00
Daniel Stenberg
95f78080ab This makes formposting with a specified file missing fail. curl_easy_perform
will then return CURLE_READ_ERROR.
2002-04-15 11:19:03 +00:00
Daniel Stenberg
9549cfde02 7.9.6 commit 2002-04-15 06:58:04 +00:00
Daniel Stenberg
2361aabbef Dirk Manske made libcurl strip off white spaces from the beginning of cookie
contents.
2002-04-14 18:21:17 +00:00
Daniel Stenberg
e0cc8d2ce9 check for _MSC_VER as well as __STDC__ when deciding to use the ## operator
or not
2002-04-14 17:29:35 +00:00
Daniel Stenberg
53c0e97117 removed unused variable 2002-04-14 07:33:44 +00:00
Sterling Hughes
bb44791bf3 Add protos and change return value of curl_hash_count.... 2002-04-13 01:56:22 +00:00
Sterling Hughes
9ebcfe9dff Speed up the hash code considerably, removing a bunch of legacy crud 2002-04-12 23:40:19 +00:00
Daniel Stenberg
f339bf613c cut off an old section 2002-04-12 14:41:24 +00:00
Daniel Stenberg
b00c59816d http_proxy must be lower case 2002-04-12 14:33:57 +00:00
Daniel Stenberg
a00918116d 7.9.6-pre5 2002-04-12 11:39:27 +00:00
Daniel Stenberg
d26c318321 explain all mailing lists better 2002-04-12 10:33:40 +00:00
Daniel Stenberg
eb8770506f added libcurl-errors 2002-04-12 10:10:36 +00:00
Daniel Stenberg
c06171a802 store TIMER_CONNECT even if the connect failed 2002-04-12 10:03:59 +00:00
Daniel Stenberg
5528c1eaa5 corrected the verbose output for connects and fixed the connect time stamp
better for FTP (any protocol with protocol-specific connect actions)
2002-04-12 08:18:38 +00:00
Daniel Stenberg
93516effe4 the HTTP request is a CURLINFO_HEADER_OUT 2002-04-12 07:53:12 +00:00
Daniel Stenberg
38e518c710 Jean-Philippe Barrette-LaPierre's patch applied 2002-04-12 07:23:57 +00:00
Daniel Stenberg
3f6133be27 Jean-Philippe Barrette-LaPierre provided his patch that introduces
CURLOPT_DEBUGFUNCTION and CURLOPT_DEBUGDATA.
2002-04-12 07:21:11 +00:00
Daniel Stenberg
c3bfb355c5 error codes *ARE* documented now 2002-04-12 07:19:43 +00:00
Daniel Stenberg
c69dd14cbc added RISCOS makefile 2002-04-10 20:54:21 +00:00
Daniel Stenberg
7954652b80 brougth by Michael Curtis 2002-04-10 20:52:26 +00:00
Daniel Stenberg
ca35b39900 more more more 2002-04-10 18:09:24 +00:00
Daniel Stenberg
09df9b90c3 corrected to new return codes 2002-04-10 18:08:50 +00:00
Daniel Stenberg
308ae5cbf2 added info in to failf() lines and added a infof() call just before the
connect() so that it tells to which host and what port it is about to
attempt the connection
2002-04-10 14:20:24 +00:00
Daniel Stenberg
1cd5cdfccb default proxy port set, as reported by Sebastien Willemijns 2002-04-10 14:07:03 +00:00
Daniel Stenberg
606e7fd744 updated error code 2002-04-10 14:05:52 +00:00
Daniel Stenberg
e8109b09b1 error code cleanup, use the new SEND/RECV errors 2002-04-10 13:44:42 +00:00
Daniel Stenberg
536ea60d73 error codes documented 2002-04-10 13:24:45 +00:00
Daniel Stenberg
3390b6446c two new error codes to separate READ into READ/RECV and WRITE into WRITE/SEND 2002-04-10 13:24:18 +00:00
Daniel Stenberg
bfc7f1e4ac clarified how to write URLs in -K config files 2002-04-10 12:57:34 +00:00
Daniel Stenberg
8ba410a56e set the HOME variable to the current dir, to prevent any real ~/.curlrc to
play tricks on us!
2002-04-09 14:28:16 +00:00
Daniel Stenberg
14d1da3ae0 spell checked and removed talk about very old version numbers 2002-04-09 06:20:06 +00:00
Daniel Stenberg
2a72641a0b 7.9.6-pre4 commit 2002-04-08 22:53:22 +00:00
Daniel Stenberg
9c4e5dc3ee removed compiler warnings, made it conditional on USE_ENVIRONMENT 2002-04-08 22:51:21 +00:00
Daniel Stenberg
540e5ffa90 Added the --environment support by Michael Curtis 2002-04-08 22:48:25 +00:00
Daniel Stenberg
c1a57591ee Added $Id:$ keyword 2002-04-08 22:46:32 +00:00
Daniel Stenberg
1a4f72dd4f Michael Curtis adjusted this for RISC OS 2002-04-08 22:44:33 +00:00
Daniel Stenberg
c3c8bbd3b2 Added writeenv.c and writeenv.h for RISCOS usage (and others?) 2002-04-08 22:40:38 +00:00
Daniel Stenberg
fb7d34cea8 added config-riscos.h 2002-04-08 22:01:11 +00:00
Daniel Stenberg
0866c1b52d Michael Curtis' updates 2002-04-08 21:59:06 +00:00
Daniel Stenberg
136f728b49 Jacky Lam deserves a mention here 2002-04-08 13:31:06 +00:00
Daniel Stenberg
5d28a857a4 based on Jacky Lam's "HTTP 1.0 304-only" fix, this change makes a 304 reply
always stop reading after the headers no matter what 'close' is.
2002-04-08 07:27:22 +00:00
Daniel Stenberg
edbe0d166c if HOME isn't set or too long, we attempt to lost the curlrc file from
current directory instead!
2002-04-05 15:04:04 +00:00
Daniel Stenberg
4db8c8b1a3 mention the web site mirror now 2002-04-05 09:00:56 +00:00
Daniel Stenberg
2b16b8604a enough with stupidity, this is a test case that should fail and thus we
should use a proper command line that *fails* ;-O
2002-04-05 08:48:45 +00:00
Daniel Stenberg
f630929810 added test 48, verify -I, -d and -G in one command line 2002-04-05 08:42:00 +00:00
Daniel Stenberg
016abdfef6 Reverted v1.120, -G set request type after Kevin Roth pointed out the
stupidity in doing this. -G should work with with -I too...
2002-04-04 22:29:18 +00:00
Daniel Stenberg
fd915609cd lots 2002-04-04 12:24:32 +00:00
Daniel Stenberg
064697fde6 very minor log change 2002-04-04 12:23:54 +00:00
Daniel Stenberg
a03fd7b81c T. Bharath pointed out the flaw in ConnectionExists() for how we didn't
check proxy connections for "deadness" before they were re-used
2002-04-04 12:23:14 +00:00
Daniel Stenberg
1cfcbc50a6 Fixes the problem Jacky Jam pointed out, where libcurl will "hang" for an
extra second after having downloaded headers-only
2002-04-04 12:19:56 +00:00
Daniel Stenberg
ea1f138c08 Jonatan Lander's fix to compile properly on pre-ISO compilers (without the
## operator)
2002-04-04 10:07:01 +00:00
Daniel Stenberg
d560207ea1 This corrects VERBOSE PASV ftp transfers on AIX (and OSF1/Tru64)
Gerhard Herre reported this in bug report #536238
2002-04-04 06:07:56 +00:00
Daniel Stenberg
90b51831fd Tor Arntsen's fix for "CGI_Lite" compliance! 2002-04-03 11:11:01 +00:00
Daniel Stenberg
38ed8938d8 Added DNS cache control options 2002-04-02 13:29:05 +00:00
Daniel Stenberg
547e91dbf0 Clarence Gardner pointed out the not-taken-care-of return codes from SSL_read 2002-04-02 09:33:38 +00:00
Daniel Stenberg
04da96e044 Jacky Lam added memdebug.h include to prevent crashes when that is used 2002-04-02 06:36:47 +00:00
Daniel Stenberg
4a7def101b fopen(... "rb") when reading what to post, so that binary posting works
on Windows!
2002-03-27 22:53:06 +00:00
Daniel Stenberg
541e5a3b82 Jacky Lam cookie parser fix for domains with preceeding dot 2002-03-25 09:08:33 +00:00
Daniel Stenberg
5af61716aa Miklos Nemeth's update 2002-03-23 15:41:17 +00:00
Daniel Stenberg
6f3e0051c3 adjusted windows section after a patch from Miklos Nemeth 2002-03-22 12:01:30 +00:00
Daniel Stenberg
703ecc3521 patch by Sandro Tolaini to do good (better?) on FreeBSD 2002-03-22 11:02:16 +00:00
Daniel Stenberg
67b0f9aacd no longer include "multi.h", it comes with the regular curl/curl.h now 2002-03-20 10:54:17 +00:00
Daniel Stenberg
854277bae5 crlf replacement on uploads did not work. test case 128 was added just now
to make sure it remains functional.
2002-03-20 10:53:24 +00:00
Daniel Stenberg
ca9760756a verbose FTP PASV output could output a "random" name from the stack based
array
Also, uploading data with --crlf cannot check that the proper size was
uploaded and thus should not warn if the sizes differ. This can be changed
in the future by having the expected size in the connectdata struct and then
increase the expected size for each byte that is added in the --crlf
replacement process.
2002-03-20 10:52:24 +00:00
Daniel Stenberg
f1f993a25b added test 128, ftp upload with --crlf 2002-03-20 10:50:12 +00:00
Daniel Stenberg
eb0f727818 newcomer notice added 2002-03-20 10:11:50 +00:00
Daniel Stenberg
dc3d0289d6 old list is gone 2002-03-20 08:00:05 +00:00
Daniel Stenberg
bd830c6f4d John Clayton's weird explorations in the wonders of the windows tcp/ip
stack ;-)
2002-03-19 15:56:13 +00:00
Daniel Stenberg
51d602f973 made -G set request type 2002-03-19 14:58:35 +00:00
Daniel Stenberg
30d5401f31 corrected for 7.9.6 2002-03-19 14:53:28 +00:00
Daniel Stenberg
ab6b0f9843 removed multi.h 2002-03-19 14:32:43 +00:00
Daniel Stenberg
c560327f26 Added the three multi interface source code examples to the distrib 2002-03-19 14:01:34 +00:00
Daniel Stenberg
28939dd45c fixed include and added header 2002-03-19 14:00:47 +00:00
Daniel Stenberg
3853e3d6f3 added multi.h 2002-03-19 10:35:14 +00:00
Daniel Stenberg
6062a1bd68 include multi.h too 2002-03-19 10:35:02 +00:00
Daniel Stenberg
8d94688fd1 moved here from ../../lib/ 2002-03-19 10:34:34 +00:00
Daniel Stenberg
6b4532b592 moved to ../include/curl/ 2002-03-19 10:34:06 +00:00
Daniel Stenberg
286fb6f645 added the multi functions man pages 2002-03-19 10:19:56 +00:00
Daniel Stenberg
340caf5da3 multi interface overview and description 2002-03-19 10:16:12 +00:00
Daniel Stenberg
171c4fd49f removed text that really belongs to very old libcurls that are no longer
being used widely
2002-03-19 09:41:06 +00:00
Daniel Stenberg
b8a0fb1dfe point out that this describes the easy interface and also make a more
general statement about language bindings
2002-03-19 09:31:05 +00:00
Daniel Stenberg
e65993bccb language 2002-03-19 09:08:57 +00:00
Daniel Stenberg
7ffb4660ec added some text about PASV and PORT and stuff 2002-03-19 08:55:05 +00:00
Daniel Stenberg
974f314f57 copyright string (year) update 2002-03-19 07:54:55 +00:00
Daniel Stenberg
4cec22fa19 yaketiyak 2002-03-19 07:48:54 +00:00
Daniel Stenberg
069477d35c automake -a for the depcomp 2002-03-19 07:48:33 +00:00
Daniel Stenberg
eaff1a344e made it pass stricter compiler flags with less warnings 2002-03-19 07:32:35 +00:00
Daniel Stenberg
1fe1e39a88 test 32, try -d and -G 2002-03-18 22:26:22 +00:00
Daniel Stenberg
33b06f56f0 reverted 1.109, we can't set the request type when -d is used, as -G can be
used and it makes it a GET...
2002-03-18 22:21:16 +00:00
Daniel Stenberg
61a84abe2a WRITEFUNCTION correction 2002-03-18 08:53:21 +00:00
Daniel Stenberg
3d03100079 Andreas Damm added thanks to his getdate overhaul 2002-03-18 08:52:46 +00:00
Daniel Stenberg
5297a52bf0 gopher 2002-03-18 08:52:15 +00:00
Daniel Stenberg
88631276e8 updated 2002-03-18 07:40:00 +00:00
Daniel Stenberg
2c0d9ad64c clarified that it is only the + letter that isn't converted on the right
side of a ? letter
2002-03-17 08:28:51 +00:00
Daniel Stenberg
5c691ed835 verbose PASV transfers passed a bad buffer size to the name resolver functions
and it cause cause a crash.

Albert Choy found and fixed it.
2002-03-16 16:59:47 +00:00
Daniel Stenberg
f73864a045 corrected SSL builds 2002-03-15 14:46:59 +00:00
Daniel Stenberg
94da04fcac headers and security blurb added 2002-03-15 13:25:15 +00:00
Daniel Stenberg
5f758fbd11 make sure we return CURLE_WRITE_ERROR if the write callback returned
an error, even if we were decoding a chunked-encoded transfer
2002-03-15 12:42:41 +00:00
Daniel Stenberg
fb29529a52 Jun-ichiro itojun Hagino <itojun@itojun.org>:
Now first check if IPv6 is supported, then use PF_UNSPEC. If not, use PF_INET.
It'll solve both the "slow name lookup" problem on IPv4 and still work fine on
IPv6 hosts.

Bug report #530204 has more details:
http://sourceforge.net/tracker/?func=detail&atid=100976&aid=530204&group_id=976
2002-03-15 09:54:30 +00:00
Daniel Stenberg
3cd2673077 bug report #530204 correctly identified that revision 1.52 broke ipv6
functionality and this change reverts this.

However, with this revert we bring back problems on (some/all?) non-IPv6
enabled Linux machines that have getaddrinfo().
2002-03-15 08:45:09 +00:00
Daniel Stenberg
d242214e18 new example for libcurl 7.9.6 or later 2002-03-14 14:53:00 +00:00
Daniel Stenberg
468b787272 if CURLOPT_POSTFIELDS isn't set, but CURLOPT_POST is, we will assume that
we should read the POST-data from the read callback
2002-03-14 14:39:23 +00:00
Daniel Stenberg
cfdb6f851c 2002 2002-03-14 14:37:41 +00:00
Daniel Stenberg
7886f120f3 CURLOPT_POST deserved a new comment with the new POST-by-callback support 2002-03-14 14:37:16 +00:00
Daniel Stenberg
76fe69b133 no longer attempts to SIZE a NULL pointer, as that wasn't very clever
(but didn't crash or anything)
2002-03-13 13:13:19 +00:00
Daniel Stenberg
e1bae4fc7e Setting CURLOPT_PASSWDFUNCTION to NULL now restores the internal function. 2002-03-13 13:10:52 +00:00
Daniel Stenberg
bc9705f758 sendf() now deals with Curl_write() returning -1 properly, which it might
do if the write would've blocked
2002-03-13 13:09:37 +00:00
Daniel Stenberg
c819e234b8 now supports all options in arrays, except the CURLFORM_ARRAY itself 2002-03-13 12:10:20 +00:00
Daniel Stenberg
ce021b79a7 CURLFORM_ARRAYSTART and ARRAYEND are now history 2002-03-13 12:09:52 +00:00
Daniel Stenberg
805a2f6f99 removed some silly CRLF lines 2002-03-13 09:20:59 +00:00
Daniel Stenberg
eb78400b53 4 things since 7.9.5 2002-03-11 15:37:08 +00:00
Daniel Stenberg
4852f9ffbd added test 39, tests the new -F features 2002-03-11 15:31:06 +00:00
Daniel Stenberg
c8d2ad2513 now -F supports 'filename=blabla' for parts that upload a file, to set the
filename field of that part. A typical example line could look like:

-F 'name=@filename;filename=/dev/null'

This can be combined with type= too, in a manner similar to:

-F "file=@log/test39.txt;filename=fakerfile;type=moo/foobar"

Enjoy.
2002-03-11 15:20:56 +00:00
Daniel Stenberg
9f374c2050 Added support for CURLFORM_FILENAME to set the filename field of a file
part.
2002-03-11 15:18:59 +00:00
Daniel Stenberg
5799852424 CURLFORM_FILENAME added and some cleanups, HttpPost is now curl_httppost
with a #define to preserve backwards compatibiltiy
2002-03-11 15:14:09 +00:00
Daniel Stenberg
6417fa95cf corrected the use of the progress function 2002-03-11 15:00:57 +00:00
Daniel Stenberg
61f6284a35 minor edit 2002-03-11 08:39:00 +00:00
Daniel Stenberg
6b1a1a62a3 3.13 Why does my single/double quotes fail? 2002-03-11 08:29:26 +00:00
Daniel Stenberg
feacb4b481 completed the progress-bar fix 2002-03-08 16:12:00 +00:00
Daniel Stenberg
fe3c874001 detect fclose(NULL) 2002-03-08 15:31:44 +00:00
Daniel Stenberg
d9459b54d9 better treatment of the config->errors, only fclose() this if it was
truly fopen()ed. It could end up fclose()ing a NULL as discovered by
Clifford Wolf.
2002-03-08 15:18:03 +00:00
Daniel Stenberg
017be8a882 Jean-Philippe Barrette-LaPierre fixed the CURLOPT_PASSWDFUNCTION to make
NULL set back the internal default function
2002-03-08 15:06:42 +00:00
Daniel Stenberg
b86e543a13 closes bug report #527032, --progress-bar works again and it adds a newline
after the transfer is done properly
2002-03-08 12:05:57 +00:00
Daniel Stenberg
c2d4fd876c 7.9.5 commit 2002-03-07 08:50:18 +00:00
Daniel Stenberg
58cad04bbb added the "known bugs" file 2002-03-07 08:29:24 +00:00
Daniel Stenberg
9bb64d6827 new VMS messages from Nico Baggus 2002-03-06 23:18:22 +00:00
Daniel Stenberg
4441df90c1 Kevin Roth nicely saved us from this backslash-removing problem! 2002-03-06 22:52:00 +00:00
Daniel Stenberg
f51f2417c5 Brad corrected the include path (again) 2002-03-06 22:19:16 +00:00
Daniel Stenberg
aad617647d corrected the newlines 2002-03-06 22:08:11 +00:00
Daniel Stenberg
49c0d62dda two items since pre6 2002-03-06 15:05:00 +00:00
Daniel Stenberg
f752098ba5 when removed, an easy handle can be curl_easy_perform()ed again 2002-03-06 15:01:45 +00:00
Daniel Stenberg
a4477b9e4b Paul Nolan built it on pocket pc 2002-03-06 12:33:34 +00:00
Daniel Stenberg
ad3cef0fc8 Ralph Mitchell's minor #include patch to prevent some warnings 2002-03-06 09:40:06 +00:00
Daniel Stenberg
d89dbe5bd6 we don't skip what looks like already escaped strings, that was fixed
ages ago
2002-03-06 07:44:49 +00:00
Daniel Stenberg
b0475dbdbc read POST data using the read callback 2002-03-05 14:14:22 +00:00
Daniel Stenberg
60b2e74fa3 corrected the progress callback prototype!!! 2002-03-05 10:15:38 +00:00
Daniel Stenberg
cda16297d1 added text to the progress chapter 2002-03-05 09:01:58 +00:00
Daniel Stenberg
d6c9a72e15 explicitly mention easy handle 2002-03-04 13:10:15 +00:00
Daniel Stenberg
4d7b1512c1 mention 'easy handle' and not just handle, there will soon be other handles
to keep track of too
2002-03-04 13:06:46 +00:00
Daniel Stenberg
d8a35d745e cut off 2001 and put those changes in a separate file 2002-03-04 10:34:58 +00:00
Daniel Stenberg
e22657ea13 added docs/libcurl/
removed multi/
2002-03-04 10:28:02 +00:00
Daniel Stenberg
d06d6b5534 moved lots to the new subdir 'libcurl' 2002-03-04 10:27:37 +00:00
Daniel Stenberg
cec8ab1fde remove this directory, this is history 2002-03-04 10:19:32 +00:00
Daniel Stenberg
9fc62a8dd0 multi interface using examples 2002-03-04 10:15:44 +00:00
Daniel Stenberg
61540b98c2 no longer include the multi dir, the examples should be in the examples
dir
2002-03-04 10:15:12 +00:00
Daniel Stenberg
465ae39e86 moved to the new libcurl/ directory 2002-03-04 10:10:58 +00:00
Daniel Stenberg
01f04b9a41 ripped out from ../ and put in its own directory now 2002-03-04 10:09:48 +00:00
Daniel Stenberg
34f9ab1046 Added packages/EPM 2002-03-04 08:00:25 +00:00
Daniel Stenberg
699876778b Added EPM stuff, thanks to Giuseppe Corbelli 2002-03-04 07:59:53 +00:00
Daniel Stenberg
8fc5a0d19e bug report #524427 pointed out a mistake in the example source 2002-03-01 17:22:40 +00:00
Daniel Stenberg
62b5926d58 initial and still basic curl multi interface documentation 2002-03-01 15:34:23 +00:00
Daniel Stenberg
4d1037f385 removed incorrect and unnecessary words 2002-03-01 13:38:56 +00:00
Daniel Stenberg
e4addb3975 several little things since pre4 2002-03-01 10:48:08 +00:00
Daniel Stenberg
2aef351980 memanalyze is now moved to the tests/ dir 2002-03-01 09:20:03 +00:00
Daniel Stenberg
d88c153c7d include memanalyze.pl in the dist archive 2002-03-01 09:19:28 +00:00
Daniel Stenberg
9e9883082e moved memanalyze.pl into the tests dir 2002-03-01 09:18:54 +00:00
Daniel Stenberg
71440df4c7 Nico Baggus added more error codes to the VMS stuff. 2002-02-28 23:55:18 +00:00
Daniel Stenberg
80b004a57d Wesley Laxton's CURLOPT_PREQUOTE work 2002-02-28 23:31:23 +00:00
Daniel Stenberg
ea8476a2dc Ralph Mitchell's SSL problems made me notice that we didn't increase the
header byte counter properly
2002-02-28 15:13:35 +00:00
Daniel Stenberg
cb85ca18ab more fancy alloc, we store the size in each allocated block so that we
can destroy the full allocated area just before we free it
2002-02-28 12:37:05 +00:00
Daniel Stenberg
f1103b95cf set CURL_MEMDEBUG to enable memory debugging in case curl is compiled
with it
2002-02-28 12:36:25 +00:00
Daniel Stenberg
aa5ff53bcf added -t for trace, helps searching for leaks and similar 2002-02-28 12:35:54 +00:00
Daniel Stenberg
907dabed5d memory debugging is now only enabled if the CURL_MEMDEBUG environment
variable is set when curl is invoked
2002-02-28 12:35:09 +00:00
Daniel Stenberg
0cacbc892c always allocates at least 64 bytes for real, and damages them before free 2002-02-28 12:18:15 +00:00
Daniel Stenberg
6753c3c715 made building outside the source tree work again, Kevin Roth reported 2002-02-27 15:09:23 +00:00
Daniel Stenberg
36e1363e3d minor edit 2002-02-27 12:40:01 +00:00
Daniel Stenberg
d1a711eb6a oops, we weren't doing HTTPS - now we are 2002-02-27 07:50:22 +00:00
Daniel Stenberg
d8dea4dcc7 test 304, HTTPS multipart formpost 2002-02-27 07:49:01 +00:00
Daniel Stenberg
ca161737bc use the correct time in the cookie jar 2002-02-27 07:41:46 +00:00
Daniel Stenberg
3612c3774e made Max-Age work as defined in the RFC.
my brain damaged fix to not parse spaces as part of the value is now fixed
to instead strip off trailing spaces from values.
2002-02-27 07:38:04 +00:00
Daniel Stenberg
e6a65bb3ef modified cookie expire date 2002-02-26 13:38:12 +00:00
Daniel Stenberg
ff291eee48 new field1 functionality testing too 2002-02-26 13:18:39 +00:00
Daniel Stenberg
66b8f48a88 When saving a cookie jar, set field 1 (counted from 0) properly to TRUE if the
domain starts with a dot.
2002-02-26 13:18:08 +00:00
Daniel Stenberg
634760cbdc test 31: "HTTP with weirdly formatted cookies and cookiejar storage" 2002-02-26 13:09:46 +00:00
Daniel Stenberg
a23a897ad2 removed crash on weird input, this also better discards silly input 2002-02-26 13:07:53 +00:00
Daniel Stenberg
d9c244278d 7.9.5-pre4 commit 2002-02-26 07:59:43 +00:00
Daniel Stenberg
b6c4185b27 more custom stuff, much about dealing with cookies 2002-02-25 15:25:34 +00:00
Daniel Stenberg
5896d35e72 a never ending stream of things to do... 2002-02-25 14:09:31 +00:00
Daniel Stenberg
b4dfdd8bbc use env to run perl 2002-02-25 14:08:51 +00:00
Daniel Stenberg
e6ed3478ea automake usage and options cleanup 2002-02-25 14:08:18 +00:00
Daniel Stenberg
db08d9c6b9 happy new year 2002-02-25 13:25:33 +00:00
Daniel Stenberg
9490278ece We got this web server's embryo from Georg Horn, muchos gracias. 2002-02-25 12:49:21 +00:00
Daniel Stenberg
fd8bf5f171 the test suite http server is now automake'd 2002-02-25 12:45:48 +00:00
Daniel Stenberg
c9bc14a222 use the pid file, use the automake subdir 2002-02-25 12:45:20 +00:00
Daniel Stenberg
63708cbfb0 automake this dir too 2002-02-25 12:44:58 +00:00
Daniel Stenberg
d9f307623c use the former logfile name again since the ftp server also uses that... 2002-02-25 12:14:24 +00:00
Daniel Stenberg
540f77a627 we actually ran all tests just now, feb 25th, 2002 12:11 MET. with the
new http server on Linux
2002-02-25 11:12:10 +00:00
Daniel Stenberg
71bb2d0b8b reply/postcmd support for "wait" 2002-02-25 11:11:03 +00:00
Daniel Stenberg
87dc44e434 portability, step one, use a config.h.in file 2002-02-25 11:00:16 +00:00
Daniel Stenberg
29e0fcd091 generate a config file for the test suite http server too 2002-02-25 10:56:37 +00:00
Daniel Stenberg
2e9a798f09 create the pidfile and store the pid on invoke 2002-02-25 10:27:29 +00:00
Daniel Stenberg
b32a39f44f oops, #if not #ifdef 2002-02-25 10:12:04 +00:00
Daniel Stenberg
d86f9611b3 support HUGE requests too 2002-02-25 09:42:58 +00:00
Daniel Stenberg
6a62fc4a40 make sure -d is treated as a POST request and thus should fail if mixed
with -I for example
2002-02-25 09:08:28 +00:00
Daniel Stenberg
7cdd6455d7 modified the command to fail properly! ;-) 2002-02-25 09:07:26 +00:00
Daniel Stenberg
e4fefd088d cygnus can't include winsock.h even though it has it, why we need to
make a different and more complicated check for when to include it
2002-02-25 08:20:29 +00:00
Daniel Stenberg
95e601e2b1 "Yet Another Geek" made %{content_type} work in the -w/--writeout option. 2002-02-25 07:40:49 +00:00
Daniel Stenberg
b1ffe7b74a better time selection for the connect timeout 2002-02-22 15:44:37 +00:00
Daniel Stenberg
417c8fb602 16 tests OK 2002-02-22 15:40:17 +00:00
Daniel Stenberg
85efa64c31 cut off big parts of the banner 2002-02-22 15:17:41 +00:00
Daniel Stenberg
d8cb026e80 make sure the custom config-*.h files are in the dist as well 2002-02-22 15:12:17 +00:00
Daniel Stenberg
41dd5121f0 adjusted to work on test case 11 better 2002-02-22 13:54:06 +00:00
Daniel Stenberg
94482d7ca5 use -W too 2002-02-22 13:53:41 +00:00
Daniel Stenberg
4d0e51aead fixed to work with 'nonewline' and thus this passes OK with the new http
server and things
2002-02-22 10:51:19 +00:00
Daniel Stenberg
ae8a8c8ba4 support for using protocol without a trailing newline 2002-02-22 10:50:36 +00:00
Daniel Stenberg
7d043f46d5 hide debug output from screen, use log/ for logfiles 2002-02-22 10:40:05 +00:00
Daniel Stenberg
cbca19d6c2 lib/config.h.in added to dist 2002-02-22 07:51:23 +00:00
Daniel Stenberg
b40b9677b6 VMS adjustments 2002-02-20 23:24:04 +00:00
Daniel Stenberg
c80ad865db new from Nico! 2002-02-20 13:48:03 +00:00
Daniel Stenberg
758eae49ab four more bugfixes, one VMS adjustment 2002-02-20 13:47:36 +00:00
Daniel Stenberg
721b05e343 Nico Baggus' VMS tweaks 2002-02-20 13:46:53 +00:00
Daniel Stenberg
a333bddeeb Andrs Garca solved bug report #515228 by making sure the progress meter
is updated even if everything is read in one single pass, as the windows
functions apparantly does more often than other systems.
2002-02-20 13:38:34 +00:00
Daniel Stenberg
4c6a52fe90 corrected reference to multi-using examples 2002-02-19 11:02:01 +00:00
Daniel Stenberg
792d73a9cf include winsock.h on window boxen to work smoother there 2002-02-19 11:00:34 +00:00
Daniel Stenberg
9a95a3f8c3 moved the config.h to lib/config.h 2002-02-19 01:06:56 +00:00
Daniel Stenberg
485edb777f a minor step forwards 2002-02-19 01:04:46 +00:00
Daniel Stenberg
a8c3431ae9 use the new HTTP server input file 2002-02-19 01:04:31 +00:00
Daniel Stenberg
6fe4a6fa9a cut off the old perl one, this only runs the C coded version 2002-02-19 01:03:45 +00:00
Daniel Stenberg
6d8c7356d6 fixed the huge text just in case anyone actually reads it 2002-02-19 00:26:44 +00:00
Daniel Stenberg
a782c96e81 no .. in path 2002-02-19 00:26:25 +00:00
Daniel Stenberg
c795123cd5 fixed a long long mistake 2002-02-18 23:32:45 +00:00
Daniel Stenberg
0ec370e6fb auth on multiple hosts with follow-location 2002-02-18 23:17:57 +00:00
Daniel Stenberg
3d5732d4e0 Rick Richardson's getaddrinfo() usage fix to speed up name resolves 2002-02-18 23:12:37 +00:00
Daniel Stenberg
b795929858 INADDR_NONE should be in_addr_t to work with 64bit archs better.
Really, we should only #define this in one file, not both here and in
connect.c!
2002-02-18 22:59:26 +00:00
Daniel Stenberg
535258ffe4 Philip Gladstone's size problem in add_buffer_send() 2002-02-18 22:41:52 +00:00
Daniel Stenberg
cc161b96ac 4 fixes 2002-02-18 10:51:50 +00:00
Daniel Stenberg
5c4b422b18 offer SSL verfication callback,
add 'headers=' in client formpost
2002-02-18 10:51:28 +00:00
Daniel Stenberg
89bad584c3 updated LDAP URL syntax references by Aron Roberts 2002-02-18 10:47:27 +00:00
Daniel Stenberg
e21926f7f0 connection timeout comparison fix by Emil 2002-02-18 10:05:18 +00:00
Daniel Stenberg
e452f467d4 Philip Gladstone's 64-bit issues corrected.
Reminder for the future: when we're using malloc() we MUST include <stdlib.h>
as otherwise 64bit archs go bananas.

Bug report #517687
2002-02-17 14:55:35 +00:00
Daniel Stenberg
dfda7ba456 corrected the Expect: ignore, made Content-Type: possible to skip 2002-02-17 14:42:44 +00:00
Daniel Stenberg
feb6b6445e Giaslas Georgios's Host: over proxy fix 2002-02-17 11:17:37 +00:00
Daniel Stenberg
0b57fa9c51 http server added to CVS, config*h files moved 2002-02-07 15:13:11 +00:00
Daniel Stenberg
55c6f60c90 ugh. the VMS stuff must've been like that for a reason, I put it back again 2002-02-07 14:47:41 +00:00
Daniel Stenberg
9def011e8e moved the config-* files to lib/Makefile.am 2002-02-07 14:35:14 +00:00
Daniel Stenberg
7cf6e8c9cc moved the config-* files here from the ../Makefile.am 2002-02-07 14:34:34 +00:00
Daniel Stenberg
cdee43aa59 use the config files in this directory now, not ../ 2002-02-07 14:33:36 +00:00
Daniel Stenberg
9c25b58b4c moved the config-*.h files from root to the lib/ dir 2002-02-07 14:32:28 +00:00
Daniel Stenberg
83f35463f5 added note about persistancy in the server 2002-02-07 12:52:04 +00:00
Daniel Stenberg
818cdb879e POSTs seems to work somewhat now 2002-02-07 12:42:59 +00:00
Daniel Stenberg
3eead2d6c4 port number fix, now stores the processed request sent to the server 2002-02-07 12:40:06 +00:00
Daniel Stenberg
5cffe055ad added Cris Bailiff's CAdir option suggestion 2002-02-07 10:43:43 +00:00
Daniel Stenberg
3d4511daf3 the initial C code for the new HTTP test server 2002-02-07 09:39:15 +00:00
Daniel Stenberg
4748b40ad9 changes since 7.9.4 2002-02-07 09:34:43 +00:00
Daniel Stenberg
c40b4f6c39 don't add 2 to the post size, that was a previous mistake because there
was an extra CRLF added to the post data
2002-02-07 09:32:40 +00:00
Daniel Stenberg
d3b96dd394 Miklos Nemeth windows update 2002-02-06 16:04:03 +00:00
Daniel Stenberg
f946df640b Miklos Nemeth added comments 2002-02-06 16:03:28 +00:00
Daniel Stenberg
fef78bd6f1 Miklos Nemeth improved the windows section 2002-02-06 16:01:10 +00:00
Daniel Stenberg
9e6cc86bf7 Miklos Nemeth improved 2002-02-06 16:00:55 +00:00
Daniel Stenberg
b544c5fa5c ARGH the CRLF I removed recently was not only done after the initial
content-type header, it was used for each part and thus without this it
failed MISERABLY. *smacks forhead*
2002-02-06 15:48:53 +00:00
Daniel Stenberg
afa64ee31f a few of the SSL options were added in 7.9.3 and it should be noted
accordingly
2002-02-06 09:49:34 +00:00
Daniel Stenberg
e9bfef0eb1 Brent Beardsley found the content-type bug! 2002-02-06 07:02:13 +00:00
Daniel Stenberg
ddbcccd43d Kevin Roth's discovered SSL download problem 2002-02-05 15:33:00 +00:00
Daniel Stenberg
5370d7a6eb 7.9.4 2002-02-05 11:43:29 +00:00
Daniel Stenberg
685b180ab6 7.9.4-pre2 2002-02-04 09:51:41 +00:00
Daniel Stenberg
9dab850874 Eric Melville fixed spell mistakes on a few places 2002-02-03 15:00:51 +00:00
Daniel Stenberg
0d5bfe883e Andreas Damm made getdate use gmtime_r if available 2002-02-01 11:11:26 +00:00
Daniel Stenberg
cc2f1d4894 Added the recycle handles chapter
Added most of the Customizing Operations chapter
2002-01-31 14:41:01 +00:00
Daniel Stenberg
a8dd13db4c struct HttpHeader died ages ago, corrected comments 2002-01-31 14:24:55 +00:00
Daniel Stenberg
325391aef9 Albert Chin:
Forgot one case. On HP-UX 11.00, gethostbyname_r() is properly defined
if -D_REENTRANT is used. Without it, the compiler still accepts the
function prototype but gives a warning about hostent_data going out of
scope. This is because struct hostent_data is not declared. So, we
force an error by trying to set a variable to the struct.
2002-01-31 07:53:20 +00:00
Daniel Stenberg
3474ec4ecb _num_chars did wrong when called with a number that starts with 1! 2002-01-31 07:51:06 +00:00
Daniel Stenberg
ec1736d488 corrected the docs for CURLINFO_FILETIME 2002-01-31 07:17:32 +00:00
Daniel Stenberg
4522579688 Giaslas Georgios provided docs for CURLINFO_CONTENT_TYPE 2002-01-31 07:10:41 +00:00
Daniel Stenberg
907a6e0eed Georg Horn the previous SSL_read() fix, this was actually the fix I did
on my test machine! :-)
2002-01-30 21:49:29 +00:00
Daniel Stenberg
d20186a7b8 I have too many ideas of what to mention in this docs 2002-01-30 15:35:02 +00:00
Daniel Stenberg
b28051881e Georg Horn found yet another SSL reading problem caused by the non-blocks.
This was a real bummer!
2002-01-30 15:11:47 +00:00
Daniel Stenberg
bdea56cd3f big-time alert that this doesn't work 2002-01-30 10:18:47 +00:00
Daniel Stenberg
8a3ec2c659 the interface is simply called the "C" one these days 2002-01-30 10:07:49 +00:00
Daniel Stenberg
14e9420d2c extended the proxy chapter mucho 2002-01-30 10:04:40 +00:00
Daniel Stenberg
5b58e61f28 now re-seed by force (even if already seeded) if a random file or egd socket
is given
2002-01-30 08:17:23 +00:00
Daniel Stenberg
be2f3071b5 conn->upload_bufsize exists no more 2002-01-29 20:34:30 +00:00
Daniel Stenberg
85dbf82d93 append a CRLF pair after the content-type line 2002-01-29 20:32:10 +00:00
Daniel Stenberg
a9c4963cc0 removed three loust fprintf()s
removed the initial CRLF in the formpost, as they are part of the request
and should be written by the code in http.c!
2002-01-29 20:30:56 +00:00
Daniel Stenberg
a4934387d5 upload progress counter fix, removed the adjustable upload buffer size 2002-01-29 20:28:59 +00:00
Daniel Stenberg
e88a2ec6fc no more adjustable upload buffer size, we use non-blocking sockets now so
this work-around is not needed anymore!
2002-01-29 20:28:26 +00:00
Daniel Stenberg
0666960173 nine items since 7.9.3 2002-01-29 14:12:12 +00:00
Daniel Stenberg
f114caca90 - T. Bharath pointed out that we seed SSL on every connect, which is a time-
consuming operation that should only be needed to do once. We patched
  libcurl to now only seed on the first connect when unseeded. The seeded
  status is global so it'll now only happen once during a program's life time.
2002-01-29 14:11:38 +00:00
Daniel Stenberg
9468c9c796 bad tag 2002-01-29 10:55:57 +00:00
Daniel Stenberg
76c53c690c Giaslas Georgios introduced CURLINFO_CONTENT_TYPE 2002-01-29 10:49:32 +00:00
Daniel Stenberg
c341b11aaf Steve Marx helped us realize that we shouldn't treat customrequest as a
request of its own, it just changes the keyword of a request.
2002-01-28 19:31:26 +00:00
Daniel Stenberg
6212e6990a someone should have me punished, but this bug made curl bug seriously
on IPv4-linux machines
2002-01-28 19:23:18 +00:00
Daniel Stenberg
28049a183c don't count a custom request as a request type of its own, it is merely
a modifier of another type
2002-01-28 19:22:40 +00:00
Daniel Stenberg
5d3dd7911e newly generated 2002-01-28 18:39:55 +00:00
Daniel Stenberg
ae8375516b Andreas Damm made it reentrant safe! 2002-01-28 18:39:40 +00:00
Daniel Stenberg
e3f10eb825 no longer add CRLF _after_ POST data, it should not be needed. Pedro Neves
pointed out this ugliness.
2002-01-27 11:51:11 +00:00
Daniel Stenberg
2b1f683239 set header and request size to 0 before each *_perform() 2002-01-27 11:49:17 +00:00
Daniel Stenberg
a2b19c9a63 postit.c is removed, it used the deprecated curl_formparse() and may
encourage people to use bad functions
2002-01-25 10:07:07 +00:00
Daniel Stenberg
4146ce8267 bug report #508235 identified a non-working Location: following, and this
little fix seems to correct it. another case where we just returned and
didn't shut off the reading. This bug is introduced in 7.9.3 due to the
new internal "order".
2002-01-25 08:35:49 +00:00
Daniel Stenberg
170bd6dafc don't install the example programs! :-O 2002-01-24 07:38:01 +00:00
Daniel Stenberg
7e16ec8724 7.9.3 2002-01-23 18:10:00 +00:00
Daniel Stenberg
8c459156f8 7.9.3 public 2002-01-23 18:01:16 +00:00
Daniel Stenberg
2db894807b Andrs Garca found out that we didn't properly stop reading from a connection
after the headers on a HEAD request. This bug has been added in 7.9.3 and was
mnot present earlier.
2002-01-23 07:15:32 +00:00
Daniel Stenberg
95ceeb6e0b more about passwords and started about proxies 2002-01-22 13:41:00 +00:00
Daniel Stenberg
c9c00d2a23 verify big files 2002-01-22 13:10:16 +00:00
Daniel Stenberg
1afe49864d minor edit 2002-01-22 08:22:04 +00:00
Daniel Stenberg
6924bee3a0 added --cc description and an example 2002-01-21 14:57:07 +00:00
Daniel Stenberg
39d4552dab pre4 2002-01-21 12:11:45 +00:00
Daniel Stenberg
a23c63738f HTTP POST explained 2002-01-21 10:54:56 +00:00
Daniel Stenberg
e911945c55 #505514, as correctly pointed out by Antonio (anton@concord.ru), trying to
post a non-existing file should include nothing, not an error text!
2002-01-19 11:08:05 +00:00
Daniel Stenberg
6d58d13710 mingw fix, mac os x fix, long long check removed from configure,
--enable-debug uses even stricter options now
2002-01-18 15:16:08 +00:00
Daniel Stenberg
0b177cb165 newly generated 2002-01-18 15:14:35 +00:00
Daniel Stenberg
3e31b619de added more text in the 'passwords' section 2002-01-18 15:08:32 +00:00
Daniel Stenberg
f925979b2f satisfy gcc -Wundef 2002-01-18 13:10:41 +00:00
Daniel Stenberg
49f7fa82b9 #if [undefined] => #ifdef [undefined] 2002-01-18 13:04:48 +00:00
Daniel Stenberg
e4cd4cf3f3 playing with more strict gcc warnings with --enable-debug 2002-01-18 13:00:13 +00:00
Daniel Stenberg
e74b20926d prevents gcc -Wcast-align from complaining 2002-01-18 12:59:33 +00:00
Daniel Stenberg
a312127c91 made gcc -Wcast-align happy 2002-01-18 12:56:10 +00:00
Daniel Stenberg
1dc5bf4f73 #ifndef and #define magic to prevent compiler warnings when doing #if BLA
where BLA is undefined
2002-01-18 12:53:05 +00:00
Daniel Stenberg
01cfe670c5 updated to 2002 status ;-) 2002-01-18 12:48:36 +00:00
Daniel Stenberg
fd307bfe29 cut off a big piece of comment and added a pointer to the Trio web page
should anyone ever want a good printf() clone
2002-01-18 10:45:03 +00:00
Daniel Stenberg
a00de093a7 commented out the 'long long' and 'long double' checks, as we don't really
use them anyway and they cause warnings in lib/mprint.c
2002-01-18 10:43:55 +00:00
Daniel Stenberg
7bfe853af3 I wish I could type. Anyway, this proved it is a good habit to put the NULL
on the left side of comparisons...
2002-01-18 10:36:25 +00:00
Daniel Stenberg
cbaecca8e9 added typecast for a malloc() return, and added check for NULL 2002-01-18 10:30:51 +00:00
Daniel Stenberg
8edfb370a8 Added #include <errno.h> 2002-01-18 09:25:58 +00:00
Daniel Stenberg
4c08c8f7db Andrs Garca patched. It now checks for EWOULDBLOCK properly on windows
boxes.
2002-01-18 08:03:54 +00:00
Daniel Stenberg
c174680a03 patched by Andrs Garca 2002-01-18 08:03:12 +00:00
Daniel Stenberg
cb5f6e18e6 7.9.3-pre3 2002-01-17 14:34:26 +00:00
Daniel Stenberg
b798e7a5ae correct ssl version, fixed ssl writes, solved time-out disconnect without
text, fixed dns cache problem, made it compile with openssl before 0.9.5
again and extended libcurl-the-guide a bit more
2002-01-17 14:25:49 +00:00
Daniel Stenberg
5deab7ad27 more text added 2002-01-17 14:24:25 +00:00
Daniel Stenberg
12cdfd282d added a comment about this example only works with 7.9.3 and newer libs 2002-01-17 13:45:19 +00:00
Daniel Stenberg
eba8035e12 Richard Archer made it compile and build with OpenSSL versions prior to
0.9.5
2002-01-17 10:40:13 +00:00
Daniel Stenberg
edcbf4350b include our own sprintf() prototype to make it return sensible data on
all platforms, I also edited a few data types slightly to prevent my
compiler from warning on comparisions between signed and unsigned values
2002-01-17 08:03:48 +00:00
Sterling Hughes
9289ea471f Get this working, still need to check for leaks and such, but should be
fine..
2002-01-17 07:38:25 +00:00
Sterling Hughes
7d06185aa6 Make the keys for hostcache entries be in the format::
host:port, so accessing curl.haxx.se on port 80 would yield a key value
of ::
curl.haxx.se:80
2002-01-17 06:55:37 +00:00
Daniel Stenberg
01ecb1d7e7 filled-in text in the "Building" chapter and added a "libcurl with C++"
chapter
2002-01-17 00:27:56 +00:00
Daniel Stenberg
e177f14595 SSL writes passed back a silly length... 2002-01-16 23:28:58 +00:00
Daniel Stenberg
5c6eddcadd fixed time-out returned without error text set 2002-01-16 22:26:01 +00:00
Daniel Stenberg
b3b4786990 Kevin Roth's SSLeay() patch, slight edited by me. Works with OpenSSL 0.9.5
now.
2002-01-16 17:45:08 +00:00
Daniel Stenberg
fbe2907599 7.9.3-pre2 2002-01-16 15:12:12 +00:00
Daniel Stenberg
343da8d4b3 --cc and working non-blocking sockets uploads 2002-01-16 15:04:37 +00:00
Daniel Stenberg
8d97792dbc - shrunk the BUFSIZE define from 50K to 20K
- made a separate buffer for uploads (due to the non-blocking stuff)
- added two connectdata struct fields for non-blocking uploads
2002-01-16 14:53:19 +00:00
Daniel Stenberg
8d07c87be7 modified to deal with the new non-blocking versions of Curl_read() and
Curl_write().
2002-01-16 14:50:53 +00:00
Daniel Stenberg
ed21701df3 Curl_write's 5th argument now is signed 2002-01-16 14:49:51 +00:00
Daniel Stenberg
df01507582 Curl_read() and Curl_write() are both now adjusted to return properly in
cases where EWOULDBLOCK or equivalent is returned. We must not block.
2002-01-16 14:49:08 +00:00
Daniel Stenberg
f2bda5fd5b Curl_write() now takes a different 5th argument 2002-01-16 14:47:50 +00:00
Daniel Stenberg
cba9838e8f Somewhat ugly fix to deal with non-blocking sockets. We just loop and try
again. THIS IS NOT A NICE FIX.
2002-01-16 14:47:00 +00:00
Daniel Stenberg
b6dba9f5dd Somewhat ugly fix to deal with non-blocking sockets. We just loop and try
again. THIS IS NOT A NICE FIX. We should/must make a select() then and only
retry when we can write to the socket again.
2002-01-16 14:46:00 +00:00
Daniel Stenberg
6e9d1617c6 added support for --cc to output the compiler name. This makes it possible
to compile libcurl stuff without any prior knowledge:

cc=`curl-config --cc`
cflags=`curl-config --cflags`
libs=`curl-config --libs`

$cc $flags $libs -o example example.c

Or if you prefer, the oh-so-cool single-line version:

`curl-config --cc --cflags --libs` -o example example.c
2002-01-16 14:20:06 +00:00
Daniel Stenberg
ea811fee52 added a somewhat cool single-line command that builds most example sources
on unix-like systems
2002-01-16 14:13:54 +00:00
Daniel Stenberg
7391fd8f6a initial attempt to write a tutorial-like libcurl guide 2002-01-15 08:22:00 +00:00
Daniel Stenberg
6c00c58f2a fixed non-blocking reads, fixed ssl sessions, in_addr_t and more non-blocking 2002-01-14 23:32:57 +00:00
Daniel Stenberg
4931fbce49 Curl_read() now returns a negative return code if EWOULDBLOCK or similar 2002-01-14 23:14:59 +00:00
Daniel Stenberg
fefc7ea600 a memory leak when name lookup failed is now removed 2002-01-14 23:14:24 +00:00
Daniel Stenberg
d220389647 Stoned Elipot's patch for the in_addr_t test 2002-01-14 07:53:09 +00:00
Sterling Hughes
a1f910c159 Remove erreaneous include, setup.h is included one line above 2002-01-14 05:36:28 +00:00
Daniel Stenberg
e4866563de Gtz Babin-Ebell updated with some new 7.9.3 features 2002-01-13 11:32:36 +00:00
Daniel Stenberg
47f45aa229 Gtz Babin-Ebell provided some documantation for the ENGINE stuff 2002-01-13 11:32:05 +00:00
Daniel Stenberg
affe334675 added http-post.c 2002-01-10 09:00:02 +00:00
Daniel Stenberg
ee7e184e26 slightly extended to mention that -v and -i are good options to use when
reporting bugs
2002-01-10 07:38:53 +00:00
Daniel Stenberg
bec0ebacf1 bad comment begone 2002-01-09 13:23:01 +00:00
Daniel Stenberg
5bd6d631c6 cut off argc and argv as well 2002-01-09 13:22:31 +00:00
Daniel Stenberg
fd1799f3bb Cleaned up this example to make it even simpler. 2002-01-09 13:22:03 +00:00
Daniel Stenberg
d84a0c51e0 Cris Bailiff found out that when the SSL session cache was filled, libcurl
would crash. This corrects the problem.
2002-01-09 09:38:37 +00:00
Daniel Stenberg
d9a7c7de51 David Bentham's updated QNX notification 2002-01-08 23:27:42 +00:00
Daniel Stenberg
d57e09889a added a missing failf() before returning an error code 2002-01-08 23:23:24 +00:00
Daniel Stenberg
eecb86bfb0 this seems to correct the SSL reading problem introduced when switching
over to non-blocking sockets, but this loops very nastily. We should return
back to the select() and wait there until more data arrives, not just blindly
attempt again and again...
2002-01-08 23:19:32 +00:00
Daniel Stenberg
0b1197936c I made the write callback create the file the first time it gets called so
that it won't create an empty file if the remote file doesn't exist
2002-01-08 13:05:44 +00:00
Daniel Stenberg
b545ac6391 test case 38 added a few new requirements 2002-01-08 09:32:41 +00:00
Daniel Stenberg
a922132e4a updated 2002-01-08 09:32:21 +00:00
Daniel Stenberg
9474e8d6d2 added some tracability 2002-01-08 09:32:10 +00:00
Daniel Stenberg
6328428568 test case 38, try a HTTP download resume without the server supporting
ranges
2002-01-08 09:31:40 +00:00
Daniel Stenberg
ea9a88a9b8 another example source added 2002-01-08 08:26:22 +00:00
Daniel Stenberg
aec7358ca4 7.9.3 pre-release commit 2002-01-08 08:25:44 +00:00
Daniel Stenberg
3c334b2bb6 non-blocking sockets, DNS caching updated, cookies corrected, bool is now
unsigned everywhere
2002-01-08 07:22:33 +00:00
Daniel Stenberg
75bba0da92 added two typecasts to prevent compiler (gcc3) warnings 2002-01-08 07:06:07 +00:00
Sterling Hughes
c0bfe7be15 1) the dns_cache_timeout should be an integer, not a bool
2) in the curl_dns_cache_entry structure, timestamp should be
a time_t instead of an integer (although I doubt it matters).
2002-01-08 04:30:59 +00:00
Sterling Hughes
22ac08e06d Add support for DNS cache timeouts via the CURLOPT_DNS_CACHE_TIMEOUT option.
The default cache timeout for this is 60 seconds, which is arbitrary and
completely subject to change :)
2002-01-08 04:26:47 +00:00
Daniel Stenberg
87037136ef As identified in bug report #495290, the last "name=value" pair in a
Set-Cookie: line was ignored if they didn't end with a trailing
semicolon. This is indeed wrong syntax, but there are high-profile web sites
out there sending cookies like that so we must make a best-effort to parse
them.
2002-01-07 23:05:36 +00:00
Daniel Stenberg
2182e37433 the bool typedef is now made unsigned, to make sure it stays that on all
platforms, unrelated to what they might prefer by default
2002-01-07 22:47:21 +00:00
Daniel Stenberg
1de82b220d removed silly check for >=0 of a supposedly unsigned value! 2002-01-07 22:46:38 +00:00
Sterling Hughes
bd878756fc Probably not necessary, but good practice. 2002-01-07 20:55:35 +00:00
Sterling Hughes
8d7f402efb Make cach'ing work with threads now, there are now three cases:
- Use a global dns cache (via setting the tentatively named,
    CURLOPT_DNS_USE_GLOBAL_CACHE option to true)
    - Use a per-handle dns cache, by default
    - Use a pooled dns cache when in the "multi" interface
2002-01-07 20:52:32 +00:00
Daniel Stenberg
d3299beec7 Modified to use non-blocking sockets all the time. 2002-01-07 18:38:01 +00:00
Daniel Stenberg
f9192db358 VC++ makefile, HTTP 204, cookie fix, non-blocking socket for better SSL
connection timeout
2002-01-07 16:03:36 +00:00
Daniel Stenberg
c69c0c0446 added proper breaks in the switch() 2002-01-07 15:24:52 +00:00
Daniel Stenberg
deb2911c0e Added David Bentham's notes about QNX and FD_SETSIZE 2002-01-07 15:14:01 +00:00
Daniel Stenberg
e31a306a38 HTTP response 204 should be treated similar to 304, that is we must not
expect (nor read) any response-body
2002-01-07 14:57:18 +00:00
Daniel Stenberg
d9a7773011 added precautions to not go insane when two matching cookies end up in the
cookie list, even though they're not supposed to do that...
2002-01-07 14:56:15 +00:00
sm
2b14916813 Add hash and llist to VC dsp file 2002-01-04 23:48:28 +00:00
sm
1d1530e14c Add hash and llist to VC makefile 2002-01-04 23:47:07 +00:00
Daniel Stenberg
b4fdc025a8 -l lists all tests 2002-01-04 13:20:17 +00:00
Daniel Stenberg
f1c14fe0b4 The former -c is "-C -" these days 2002-01-04 13:15:07 +00:00
Daniel Stenberg
38306cda54 dns cache, ftp response read, 64bit fixes, printf replaces, inet_ntoa_r
corrections
2002-01-04 09:57:57 +00:00
Daniel Stenberg
5a0f0023cf replaced printf() => Curl_sendf() 2002-01-04 09:53:39 +00:00
Daniel Stenberg
6dcdb8b821 removed a commented line 2002-01-04 09:53:10 +00:00
Daniel Stenberg
781f52a287 fixed an inet_ntoa() occurance to use inet_ntoa_r() if it is available.
I also replaced all printf() calls with calls to Curl_failf()
2002-01-04 09:52:44 +00:00
Daniel Stenberg
f75ff58b4b an unconditional occurance of inet_ntoa() now uses inet_ntoa_r() on all
platforms that have such a function.
This affects multi-thread running libcurls on IPv4 systems that have VERBOSE
switched on. The previous version was risking that another thread overwrote
the data before it was read out in this thread. There could possibly also
be a slight risk that the data isn't zero terminated for a short while and
thus could cause the thread to crash...
2002-01-04 09:38:52 +00:00
Daniel Stenberg
ae9bf16dee #include the local "inet_ntoa_r.h" file if no proto was found in the global
header directory but the function *is* present!
2002-01-04 09:35:23 +00:00
Daniel Stenberg
17a8bf212f The buffer in ftp_pasv_verbose(), used for gethostbyaddr_r(), is now defined
to become properly 8-byte aligned on 64-bit archs. Philip Gladstone reported.
2002-01-04 09:17:52 +00:00
Daniel Stenberg
4fc76afef4 The FTP response lines are now passed to the function callback registered for
headers.
2002-01-04 09:03:11 +00:00
Daniel Stenberg
a31155a72a multi stuff from the multi-dev branch 2002-01-03 15:03:57 +00:00
Daniel Stenberg
75601f7924 multi interface example/test sources from the multi-dev branch 2002-01-03 15:03:14 +00:00
Daniel Stenberg
8b6314ccfb merged the multi-dev branch back into MAIN again 2002-01-03 15:01:22 +00:00
Daniel Stenberg
6de7dc5879 Sterling Hughes' provided initial DNS cache source code. 2002-01-03 10:22:59 +00:00
Daniel Stenberg
6aaee5f23b minor changes 2002-01-03 09:43:17 +00:00
Daniel Stenberg
dd06dcebe1 added required software and Guido Neitzer's Mac OS X build instructions 2002-01-03 09:12:41 +00:00
Daniel Stenberg
b35c26b751 added a little percentage for "ok coverage" 2002-01-03 08:22:05 +00:00
Daniel Stenberg
128f341635 Changed how -I/--head works when --include is also used... Test case 104
stopped working after the dec-20 fixes that now supports FTP operations to
skip the transfer phase.
2002-01-03 08:07:29 +00:00
Daniel Stenberg
e48bc1be48 Philip Gladstone's fixes 2002-01-03 07:23:21 +00:00
Daniel Stenberg
0077b9c0a2 pass an 'int' as the third argument to bind() 2002-01-03 00:51:33 +00:00
Daniel Stenberg
fe37fb5921 Philip Gladstone's 64-bit sparc native compiler compatibility issues fixed. 2002-01-02 10:06:47 +00:00
Daniel Stenberg
221ecd0a30 the changes from 1999 is now in CHANGES.1999 2001-12-21 09:55:13 +00:00
Daniel Stenberg
560492707d moved the changes from 1999 into its own file 2001-12-21 09:54:45 +00:00
Daniel Stenberg
dfdf4916fa rewrote 3.9 to be more generic with more languages:
"3.9 How do I use curl in my favourite programming language?"
2001-12-21 09:20:04 +00:00
Daniel Stenberg
97a8c98886 spell 2001-12-21 08:10:34 +00:00
Daniel Stenberg
62fb70e9d1 recent fixes 2001-12-21 08:02:35 +00:00
Daniel Stenberg
8a9098a36c *cool* fix by Bjrn Stenberg, makes proxy transfers work better...! :-) 2001-12-20 15:58:22 +00:00
Daniel Stenberg
28027c2aa2 If nobody is set we won't download any FTP file. If include_header is set,
we return a set of headers not more. This enables FTP operations that don't
transfer any data, only perform FTP commands.
2001-12-20 11:22:01 +00:00
Daniel Stenberg
d60029d66e Added 4.5.6 "301 Moved Permanently", as a reply to bug report #495215 2001-12-19 23:25:04 +00:00
Daniel Stenberg
226fe8bdf9 Gtz Babin-Ebell's contributed "simplessl.c" example source code 2001-12-18 10:13:41 +00:00
Daniel Stenberg
33237b4502 run automake last 2001-12-18 01:00:24 +00:00
Daniel Stenberg
af6c394785 Gtz Babin-Ebell's OpenSSL ENGINE patch 2001-12-17 23:01:39 +00:00
Daniel Stenberg
558d12d7f6 strip trailing CRs 2001-12-17 10:32:10 +00:00
Daniel Stenberg
bfa8a6da26 cut off the description to prevent people from using this! 2001-12-17 09:33:54 +00:00
Daniel Stenberg
aa6b3d22a2 Marcus Webster's added CURLFORM_CONTENTHEADER docs 2001-12-16 12:54:42 +00:00
Daniel Stenberg
2eb355733f Marcus Webster's newly added CURLFORM_CONTENTHEADER 2001-12-14 12:59:16 +00:00
Daniel Stenberg
e66cdacb93 minor changes 2001-12-13 07:16:27 +00:00
Daniel Stenberg
c67f2da283 solaris 2.5.1 needs the sys/types.h file before the sys/socket.h 2001-12-11 15:08:27 +00:00
Daniel Stenberg
e192261788 failf() calls should not have newlines in the message string! 2001-12-11 13:13:01 +00:00
Daniel Stenberg
c63ca99c1c when the file name given to -T is used to build an upload path, the local
directory part is now stripped off and only the actual file name part will be
used
2001-12-11 00:48:55 +00:00
Daniel Stenberg
1c99c4ad11 HTTP_PROXY => http_proxy as Bjrn pointed out 2001-12-10 11:59:05 +00:00
Daniel Stenberg
bbcfc10677 corrected the READFUNCTION docs slightly 2001-12-10 07:46:43 +00:00
Daniel Stenberg
47e67eab26 corrected the comment above gmtime_r 2001-12-07 15:56:57 +00:00
Daniel Stenberg
650b95045d added gmtime_r check 2001-12-07 15:51:59 +00:00
Cris Bailiff
5603134e58 Updated location information for Curl_easy 2001-12-07 09:24:42 +00:00
Daniel Stenberg
d12fd897cb Jason Mancini's -Oalways suggestion 2001-12-06 14:40:16 +00:00
Daniel Stenberg
5e95203a5d let us know if curl compiles on more platforms 2001-12-06 12:48:41 +00:00
Daniel Stenberg
cad4a571ce curl compiles on HURD 2001-12-06 07:11:33 +00:00
Daniel Stenberg
139ab3740a 7.9.2 commit 2001-12-05 08:36:48 +00:00
Daniel Stenberg
7b832e1745 Jon Travis suggested fix. when CURLOPT_HTTPGET is used we must assign
set.upload to FALSE or else we might still get an upload if the previous
operation was an upload!
2001-12-05 06:47:01 +00:00
Daniel Stenberg
914b9e441b Eric-update 2001-12-04 16:33:40 +00:00
Daniel Stenberg
f0f6ab49f5 Eric's updated version 2001-12-04 13:03:27 +00:00
Daniel Stenberg
436d147925 Eric's #include fixes for better macos compiles 2001-12-04 13:03:08 +00:00
Daniel Stenberg
4bd78a7df4 Eric brought some files for macos compiles 2001-12-04 09:16:09 +00:00
Daniel Stenberg
7ee6a9dc25 i'm soooo funny 2001-12-04 09:14:41 +00:00
Daniel Stenberg
1b56ae8478 added macos files to the distribution archive 2001-12-04 08:48:37 +00:00
Daniel Stenberg
d52c0b6f05 more comments 2001-12-04 07:47:21 +00:00
Daniel Stenberg
3ff2bfa0e4 MacOS (not Mac OS X) compilation files 2001-12-04 06:56:24 +00:00
Daniel Stenberg
aa21a3d5c3 Eric's update 2001-12-04 06:52:19 +00:00
Daniel Stenberg
fc33ad8cf2 the happy events so far today 2001-12-03 13:56:48 +00:00
Daniel Stenberg
779043f7a3 As Eric Lavigne pointed out, the ftp response reader MUST cache data that
is not dealt with when we find an end-of-response line, as there might be
important stuff even after the correct line. So on subsequent invokes, the
cached data must be used!
2001-12-03 13:48:59 +00:00
Daniel Stenberg
265bb99382 test case 126 added, this uses RETRWEIRDO that makes the FTP server send two
responses at once, to excerise the part of curl to make sure it can cache
(parts of) responses properly.
2001-12-03 13:46:56 +00:00
Daniel Stenberg
7493db2338 Eric nailed a but in strnequal() for macintosh 2001-12-03 12:57:45 +00:00
Daniel Stenberg
c3ad019c99 the final ftp ipv6 support has been added! 2001-12-03 10:38:31 +00:00
Daniel Stenberg
05b84bfe91 updates 2001-12-03 10:07:49 +00:00
Daniel Stenberg
dbfa1e55b6 updated the copyright year range 2001-12-03 10:00:19 +00:00
Daniel Stenberg
a0fd63f611 cool.haxx.se now only allows http downloads 2001-12-03 09:59:44 +00:00
Daniel Stenberg
4ec0401529 modified the stack trace section slightly 2001-12-03 09:44:11 +00:00
Daniel Stenberg
61e6554b7f pre7 and pre8 details 2001-12-03 08:22:59 +00:00
Daniel Stenberg
f6f3f79aa8 test127~ should not be included! 2001-12-03 07:43:42 +00:00
Daniel Stenberg
c16c017f8b more careful re-use of connections when SSL is used over proxies 2001-12-02 14:16:34 +00:00
Daniel Stenberg
2f03ef39d1 SM renamed the debug DLL 2001-12-02 12:09:00 +00:00
Daniel Stenberg
db33926432 added a in_addr_t #define 2001-12-02 12:07:36 +00:00
Daniel Stenberg
946090b9cd documented CURLOPT_HTTP_VERSION and CURLOPT_FTP_USE_EPSV 2001-11-30 13:40:23 +00:00
Daniel Stenberg
1f7f0fda71 added --disable-epsv 2001-11-30 13:30:02 +00:00
Daniel Stenberg
b84d947be4 no include, no const in strdup 2001-11-30 09:29:31 +00:00
Daniel Stenberg
07c67138c9 fixed the option parser to not loop when a long option is specified 2001-11-30 09:26:06 +00:00
Daniel Stenberg
10717bd39b remove the command file after each test 2001-11-29 20:15:59 +00:00
Daniel Stenberg
302bb4a4b3 test126 renamed to test190 as it has to be last among the FTP tests because
of some problems in the test server :-/
2001-11-29 20:15:41 +00:00
Daniel Stenberg
81b5af2d1b test 127 --disable-epsv 2001-11-29 19:58:16 +00:00
Daniel Stenberg
87c562845c --disable-epsv 2001-11-29 19:42:51 +00:00
Daniel Stenberg
6c81d74626 fixes for tru64, fixes for mac 2001-11-29 12:50:35 +00:00
Daniel Stenberg
533c24a471 disabling EPSV is now possible 2001-11-29 12:49:10 +00:00
Daniel Stenberg
6a9697387a stdin is file descriptor 0 2001-11-29 12:48:08 +00:00
Daniel Stenberg
85c8981b3d mac fixes 2001-11-29 12:47:41 +00:00
Daniel Stenberg
6c5b8e1d59 added mac stuff 2001-11-29 12:42:50 +00:00
Daniel Stenberg
2cc16d89e6 updated mac specific include files 2001-11-29 12:40:36 +00:00
Daniel Stenberg
42eb74922d unix newlines 2001-11-29 12:33:02 +00:00
Daniel Stenberg
c528a7ee33 wrongly set binary 2001-11-29 12:32:25 +00:00
Daniel Stenberg
eb2da7ec2b mucho stuff since pre6! 2001-11-28 23:29:38 +00:00
Daniel Stenberg
01ed950bbe added CURLOPT_FTP_USE_EPSV 2001-11-28 23:21:55 +00:00
Daniel Stenberg
b1076e0a9e in_addr_t added 2001-11-28 23:21:31 +00:00
Daniel Stenberg
332eb7651a CURLOPT_FTP_USE_EPSV can now be set to FALSE to prevent libcurl from
attempting to use EPSV before the standard PASV.
2001-11-28 23:20:14 +00:00
Daniel Stenberg
cfdcf5c933 fill memory with junk on malloc() 2001-11-28 23:19:17 +00:00
Daniel Stenberg
820de919b6 now sets a type for in_addr_t even if it isn't found in the #include files
like on my linux box
2001-11-28 23:14:20 +00:00
Daniel Stenberg
a32cd520bd more more more MORE 2001-11-28 16:00:18 +00:00
Daniel Stenberg
b93a60daf9 the perform "state machine" is more explained now 2001-11-28 15:46:25 +00:00
Daniel Stenberg
e2844f5e04 mods 2001-11-28 15:25:01 +00:00
Daniel Stenberg
cabb46db3d adjusted to new FTP commands in the command sequence 2001-11-28 13:45:50 +00:00
Daniel Stenberg
d09b436937 Added an in_addr_t check 2001-11-28 13:16:56 +00:00
Daniel Stenberg
10fdb1d743 EPSV and SIZE adjustments 2001-11-28 13:07:49 +00:00
Daniel Stenberg
f0d3fccd4b Added EPSV which is now unconditionally always tried before PASV, which
makes it work reaaaaly nicely on IPv6-enabled hosts!
Added SIZE before RETR is made, always done on downloads. It makes us know
the size prior to download much more frequently.
Unfortunately, this breaks all the FTP test cases. *fixfixfix*
2001-11-28 13:05:39 +00:00
Daniel Stenberg
aff19f64b5 use in_addr_t for inet_addr() return code. Now, now portable is this *REALLY*?
We should add some configure tests for this!
2001-11-28 12:16:52 +00:00
Daniel Stenberg
15a56b42d6 used in the new multi interface, not yet actually part of libcurl but
added to CVS to make them available to others
2001-11-28 11:09:18 +00:00
Daniel Stenberg
d3706814e9 support para makes more sense now 2001-11-27 13:37:29 +00:00
Daniel Stenberg
6513dcef68 language 2001-11-27 13:34:59 +00:00
Daniel Stenberg
81f22465ba the list of contributors are in the THANKS file these days 2001-11-27 13:33:21 +00:00
Daniel Stenberg
dccc77a325 Eric Lavigne updates 2001-11-27 07:27:32 +00:00
Daniel Stenberg
13ac89af24 for building on Mac before OS X 2001-11-27 07:27:05 +00:00
Daniel Stenberg
ffefcab1bc greep at mindspring.com provided an index.html file that links to all the
existing HTML documents. It makes it easier to browse all the docs with
your browser.
2001-11-27 06:53:39 +00:00
Daniel Stenberg
0226b53b75 EPSV details 2001-11-27 00:53:13 +00:00
Daniel Stenberg
bbf80d0f93 commented out the EPSV support 2001-11-27 00:50:52 +00:00
Daniel Stenberg
6003f24f78 initial code added to support EPSV (IPv6-style PASV) 2001-11-27 00:48:45 +00:00
Daniel Stenberg
4382a80b9a recent changes 2001-11-27 00:47:52 +00:00
Daniel Stenberg
9fe920cd90 made the -C more correct and detailed 2001-11-26 09:57:02 +00:00
Daniel Stenberg
f0ee7115d3 Andrs Garca's minor fix to make it compile on win32 2001-11-23 09:04:56 +00:00
Daniel Stenberg
5986c653ef recent fixes 2001-11-22 14:16:21 +00:00
Daniel Stenberg
0e7203be89 this fix seems to make the connect fail properly even on IPv4-only Linux
machines!
2001-11-22 13:57:00 +00:00
Daniel Stenberg
52dbc96c32 updated the list of machines 2001-11-22 13:03:11 +00:00
Daniel Stenberg
1c8da21083 Eric fixed a wild write 2001-11-22 09:40:34 +00:00
Daniel Stenberg
8f304d8167 Eric found a missing comma!! 2001-11-22 09:39:03 +00:00
sm
30a0bd9cf5 Fixed release-ssl build 2001-11-22 00:12:48 +00:00
sm
ae40cdf92f Undefine long_long - not supported by VC 2001-11-22 00:06:21 +00:00
Daniel Stenberg
b342fbdcda SM corrected wsock32 to ws2_32 2001-11-21 23:11:47 +00:00
Daniel Stenberg
d1ea596f88 SM added connect.obj 2001-11-21 23:10:55 +00:00
Daniel Stenberg
064cf971ef init the errorbuf to prevent junk from being output 2001-11-21 23:01:01 +00:00
Daniel Stenberg
91b1598756 SM's vc target updates 2001-11-21 22:59:29 +00:00
Daniel Stenberg
17b18bca3c added error text for a failed connect case 2001-11-21 22:57:42 +00:00
Daniel Stenberg
be3d601217 another Kevin Roth update 2001-11-21 08:10:29 +00:00
Daniel Stenberg
ca0fd33d2d Georg Horn's STARTTRANSFER_TIME patch 2001-11-20 15:00:50 +00:00
Daniel Stenberg
271f96f78f -p, not -P, for proxy tunneling 2001-11-20 08:03:01 +00:00
Daniel Stenberg
b0130e6b3b use the ws2_32.lib now (Miklos Nemeth reporteD) 2001-11-19 20:09:02 +00:00
Daniel Stenberg
d0c1f3e25b long port => int port, as the c source uses! (Miklos Nemeth found this) 2001-11-19 20:08:01 +00:00
Daniel Stenberg
b244710ddb Miklos Nemeth pointed out the missing connect.obj 2001-11-19 20:06:29 +00:00
Daniel Stenberg
d465291ded recent fixes 2001-11-19 19:56:07 +00:00
Daniel Stenberg
84e462d5f6 Lars M Gustafsson showed us that the free(urlbuffer) was totally unnecessary
and plain wrong.
2001-11-19 19:21:06 +00:00
Daniel Stenberg
508466a175 Kevin Roth's fixes 2001-11-19 09:42:15 +00:00
Daniel Stenberg
e6dd4a6456 Klevtsov Vadim's time condition fix 2001-11-16 11:21:50 +00:00
Sterling Hughes
8d62e21072 looks better on one line (testing the cvs diffing via mail, but I also think
this looks a bit better ;)
2001-11-15 14:16:13 +00:00
Daniel Stenberg
25fe47f262 spell, slightly modified "what you can do" crap 2001-11-14 20:13:38 +00:00
Daniel Stenberg
fe8365d214 added Richard Prescott's email 2001-11-14 13:43:15 +00:00
Daniel Stenberg
2519a8cc9f added Richard Levitte's suggestion to support multiple -T options 2001-11-14 09:32:30 +00:00
Daniel Stenberg
b8ff21124a Samuel Listopad's fix to allow global_init => global_cleanup => global_init
for ssl
2001-11-14 07:11:39 +00:00
Daniel Stenberg
6aafc2dfd2 corrected the ftp_getsize() usage, as the HPUX compiler warned on them 2001-11-13 12:46:29 +00:00
Daniel Stenberg
65b22480f4 uninitialized variable 2001-11-13 12:09:05 +00:00
Daniel Stenberg
60f19269d0 interface to export/import SSL session IDs 2001-11-13 09:56:29 +00:00
Daniel Stenberg
5121499082 more more more 2001-11-13 09:07:32 +00:00
Daniel Stenberg
3e049a90b7 2 removed, 1 added 2001-11-13 09:06:32 +00:00
Daniel Stenberg
c5d97df7f1 disable QUOTEs with NULL 2001-11-13 09:05:10 +00:00
Daniel Stenberg
c2479ccb7a my proxytunnel fix accidentally ruined the normal https connects 2001-11-13 08:34:24 +00:00
Daniel Stenberg
fc07eb45f4 point out that calling this function more than once is a sever error 2001-11-13 07:20:37 +00:00
Daniel Stenberg
c7cdb0f266 make sure to "read out" the server reply even if we didn't get any data from
the server when that's the only error
2001-11-12 22:27:05 +00:00
Daniel Stenberg
92aedf850e made Curl_tvdiff round the diff better and make the subtraction before
the multiply to not wrap-around
2001-11-12 22:10:09 +00:00
Daniel Stenberg
dd157fc349 post-weekend fixes 2001-11-12 14:15:14 +00:00
Daniel Stenberg
05f3ca880f made CURLOPT_HTTPPROXYTUNNEL work for plain HTTP as well 2001-11-12 14:08:41 +00:00
Daniel Stenberg
a18d41a463 include setup.h 2001-11-12 10:19:36 +00:00
Daniel Stenberg
1affbff8f9 new Curl_ConnectHTTPProxyTunnel() function, needs a **lot** of testing!!! 2001-11-12 09:47:09 +00:00
Daniel Stenberg
c55d0bb804 We need at least one millisecond to calculate current speed with! I also
made the getinfo() stuff divide with 1000.0 now to enforce floating point
since Paul Harrington claims the 7.9.1 still uses even second resolution
in the timers there
2001-11-12 08:50:59 +00:00
Daniel Stenberg
0ffec712e1 Marcus Webster reported and fixed this read-one-byte-too-many problem... 2001-11-08 15:06:58 +00:00
Daniel Stenberg
6ebac3dc76 now we make sure that NULL is defined in the gethostbyname_r() compiles
as it turned out they aren't everywhere, and that causes compiles to fail
and then we don't find the proper function call!
2001-11-08 14:48:50 +00:00
Daniel Stenberg
3b976ea9f1 Added two missing return codes... 2001-11-08 12:36:00 +00:00
Daniel Stenberg
2c16dfb526 the proof I did something yesterday as well 2001-11-08 12:16:10 +00:00
Daniel Stenberg
fe3a78ab19 we use signal() to ignore signals only as long as we have to, and we now
restore the previous (if any) signal handler properly on return.
2001-11-07 14:13:29 +00:00
Daniel Stenberg
1a984ea847 get the previous struct keep_sigact 2001-11-07 12:56:13 +00:00
Daniel Stenberg
2a0cde3041 adjusted after Ramana Mokkapati's comments 2001-11-07 09:39:49 +00:00
Daniel Stenberg
3552775b52 moo 2001-11-07 09:37:57 +00:00
Daniel Stenberg
818a632e80 Added VERSIONS that explains about the (lib)curl version numbers 2001-11-07 08:26:51 +00:00
Daniel Stenberg
00afb0f638 bug report #478780 fixed, cygwin stripped on install, some more details on
the changes of yesterday
2001-11-06 19:37:13 +00:00
Daniel Stenberg
2e32d415c0 myalarm() is history, we now use HAVE_ALARM and we now do our very best to
1 - restore the previous sigaction struct as soon as we are about to shut
off our timeout
2 - restore the previous alarm() timeout, in case an application or similar
had it running before we "borrowed" it for a while.

No, this does not fix the multi-thread problem you get with alarm(). This
patch should correct bug report #478780:
//sourceforge.net/tracker/?func=detail&atid=100976&aid=478780&group_id=976

If not, please post details!
2001-11-06 19:33:13 +00:00
Daniel Stenberg
3dfc509d33 Kevin's patch to install the binary stripped 2001-11-06 08:44:58 +00:00
Daniel Stenberg
4379142af7 Ramana Mokkapati's, John Lask's and Detlef Schmier's reports/changes 2001-11-05 14:11:19 +00:00
Daniel Stenberg
8a6dc57212 John Lask's fix that adds "-1/--TLSv1" support 2001-11-05 14:08:27 +00:00
Daniel Stenberg
af636c535c Added an CURL_SSLVERSION_* enum for SSL protocol versions 2001-11-05 14:07:20 +00:00
Daniel Stenberg
2f77b0a4c6 we can now tell ssl to use TLSv1 protocol, and we now use defines instead
of real integers for versions, the defines are added to curl.h
2001-11-05 14:06:42 +00:00
Daniel Stenberg
08ad385e0e Ramana Mokkapati did some good bug hunting, and we these fixes ldap transfers
should work a lot better!
2001-11-05 14:04:57 +00:00
Daniel Stenberg
5623e0bb0e corrected the Curl_tvnow prototype (-Wstrict-prototypes found it) 2001-11-05 12:37:22 +00:00
Daniel Stenberg
3d438d8d64 Curl_ftpsendf() had wrong return type 2001-11-05 12:24:21 +00:00
Daniel Stenberg
d89c495782 added john lask 2001-11-05 11:57:36 +00:00
Daniel Stenberg
f5ba174f4d John Lask's new makefile 2001-11-05 11:56:26 +00:00
Daniel Stenberg
329bcf3a71 7.9.1 cleanup commit 2001-11-04 11:35:12 +00:00
Daniel Stenberg
0cb12d7e78 added test 30, it checks that we return error on no content returned from a
HTTP server
2001-11-04 11:21:32 +00:00
Daniel Stenberg
3bfa06c9a2 improved functionality for new timeout tests 2001-11-02 23:09:25 +00:00
Daniel Stenberg
f34573c8e2 new tests 2001-11-02 23:09:02 +00:00
Daniel Stenberg
4163b86cd2 failf() now only overwrites the error buffer the first time it gets called
for each *_perform(). It makes things a lot easier, as the first one that
detects the error get to write the final error reason...
2001-11-02 22:30:34 +00:00
Daniel Stenberg
5b948512f9 Replaced read() and write() with recv() and send() 2001-11-02 14:23:11 +00:00
Daniel Stenberg
2297a7a70c more accurate 2001-11-02 13:16:29 +00:00
Daniel Stenberg
dc82f9e6df Replaced read() and write() with recv() and send() for socket operations
even under normal unixes.
2001-11-02 13:04:23 +00:00
Daniel Stenberg
e60e7414b9 re-ordered, cleaned up 2001-11-02 12:51:18 +00:00
Daniel Stenberg
c6caa9fd60 Added connect.c. I really need someone to better maintain this makefile... 2001-11-02 08:32:38 +00:00
Daniel Stenberg
c84ad40ccd Jrn added connect.c 2001-11-02 08:32:13 +00:00
Daniel Stenberg
ab7f25ab41 another day another commit 2001-11-01 15:26:43 +00:00
Daniel Stenberg
6d213e207d libcurl can init winsock since 7.8.1 2001-11-01 14:51:02 +00:00
Daniel Stenberg
9b6545c479 ConnectionExists() now returns FALSE immediately if it finds a connection
that is dead, because it can only find one entry anyway and if that is dead
there won't be any other entry that matches
2001-11-01 13:54:32 +00:00
Daniel Stenberg
96fb118251 added comments and function headers 2001-11-01 12:47:22 +00:00
Daniel Stenberg
617d6eb7ce Update the byte counters in the loop so that aborted transfers have the
information as well. Improves debug outputs etc.
2001-11-01 12:18:53 +00:00
Daniel Stenberg
99888388dc Use Curl_tvdiff to compare times 2001-11-01 12:17:51 +00:00
Daniel Stenberg
7d24ce9651 less I, more we 2001-11-01 09:12:35 +00:00
Daniel Stenberg
cbc35b1fb8 minor mods to make solaris plain 'make' to not die on this 2001-11-01 07:27:09 +00:00
Daniel Stenberg
027fc719cc fixed FTPSENDF for ipv6 compiles 2001-10-31 20:59:24 +00:00
Daniel Stenberg
f6b2e9e8a4 a bunch 2001-10-31 20:54:21 +00:00
Daniel Stenberg
c4f1a9f690 Removed the SocketIsDead() stuff for SSL again as it doesn't work. We must
rely on the new go-ahead-and-try mechanism that I just added to Transfer()
2001-10-31 15:14:52 +00:00
Daniel Stenberg
542055074b If Curl_do() fails with CURLE_WRITE_ERROR on a re-used connection, this
new logic can retry the same operation on a new connection!
2001-10-31 15:13:19 +00:00
Daniel Stenberg
7b93348aae Curl_sendf now returns a CURLcode 2001-10-31 15:08:16 +00:00
Daniel Stenberg
eaf475b538 return type cleanup 2001-10-31 15:07:45 +00:00
Daniel Stenberg
4118c68df1 check Curl_ftpsendf return codes 2001-10-31 15:06:38 +00:00
Daniel Stenberg
69d5d88259 Added better checking of return codes when we send data to sockets/connections 2001-10-31 14:57:00 +00:00
Daniel Stenberg
7e6a36ea7b major commit, now we check the return code on every invoke of Curl_ftpsendf
- which now is made using a macro named FTPSENDF. I turned it all caps just
to make it more visible that it is in fact a macro.
2001-10-31 14:56:12 +00:00
Daniel Stenberg
6878c0b88f check return code when issuing the request 2001-10-31 14:48:10 +00:00
Daniel Stenberg
bbdc9f15e7 added typecasts to make the timers calculate with doubles, not longs as they
accidentally did after the Curl_tvdiff() interface change
2001-10-31 14:45:47 +00:00
Daniel Stenberg
ae4f8243a9 added some -c talk, spell checked 2001-10-31 13:42:38 +00:00
Daniel Stenberg
1c83dee948 no need for mumbojumbo 2001-10-31 12:48:18 +00:00
Daniel Stenberg
b66dedc017 added cool.haxx.se as an official mirror site 2001-10-31 10:19:16 +00:00
Daniel Stenberg
b07e2a08f9 nonblock => Curl_nonblock, remade the check for a live SSL connection (again) 2001-10-31 08:44:11 +00:00
Daniel Stenberg
64543e09ec Added -0/--http1.0 2001-10-30 15:39:11 +00:00
Daniel Stenberg
58936efff6 removed the 'in documentation' part, as I've expressed in public before 2001-10-30 15:32:48 +00:00
Daniel Stenberg
dbd32278f8 Added an additional SSL check for a dead socket before we re-use an SSL
connection. The simple socket-check is not enough in these cases.
2001-10-30 15:21:45 +00:00
Daniel Stenberg
6d35984286 prevent strdup()ing NULL -- Paul Harrington's report 2001-10-30 12:08:17 +00:00
Daniel Stenberg
c046dc904c Corrected the -T description 2001-10-30 08:09:57 +00:00
Daniel Stenberg
bc8375a1e8 removed silly old -t usage from here, added some blurb about the "new" -t
that sets telnet options
2001-10-30 08:09:08 +00:00
Daniel Stenberg
83877d5ec6 Kevin Roth updates 2001-10-29 22:17:19 +00:00
Daniel Stenberg
3f248dd163 corrected return code, general cleanup 2001-10-29 13:41:16 +00:00
Daniel Stenberg
c9954d1941 added curl_formadd 2001-10-29 13:28:44 +00:00
Daniel Stenberg
e165332211 minor fix to support multiple files in one formadd() call 2001-10-29 13:21:25 +00:00
Daniel Stenberg
d25310cb6f 29 October fixes 2001-10-29 10:46:20 +00:00
Daniel Stenberg
fbb9d23a25 Kevin Roth's cygwin package fixes 2001-10-29 10:32:39 +00:00
Daniel Stenberg
2d32e8831b Cygwin moved into the win32 drawer 2001-10-29 10:31:52 +00:00
Daniel Stenberg
42a9d96fae fixed conn->name error on connection re-use and enlarged the 'gname' array
to hold 512 bytes (for user+password+hostname)
2001-10-29 10:10:21 +00:00
Daniel Stenberg
3edd9b4dfc SM's waitconnect return code fix! 2001-10-29 07:49:57 +00:00
Daniel Stenberg
1a8cf79ae0 changed the Location: to match one Paul Harrington reports a problem with 2001-10-26 12:36:25 +00:00
Daniel Stenberg
b736bdc8e5 ldap fix, test28 added 2001-10-26 11:34:02 +00:00
Daniel Stenberg
babb985f1a made 'timespent' a double, which makes more accurate calculations for quick
downloads
2001-10-26 11:25:03 +00:00
Daniel Stenberg
b22a5f756c test28 added for "Location: extraspace" test 2001-10-26 11:01:33 +00:00
Daniel Stenberg
d733061873 bug report #474568 -
We need to set "no further data to download" before the Curl_ldap() function
returns, as otherwise it'll hang on that assumed transfer.
2001-10-25 08:28:29 +00:00
Daniel Stenberg
bca0c8d253 added "s390 Linux" as a platform that curl was compiled for, and I also sorted
the list of machines
2001-10-24 14:16:57 +00:00
Daniel Stenberg
53ac8004e7 added a section about cross compiling that Jim Duey wrote down for us 2001-10-24 11:54:42 +00:00
Daniel Stenberg
7b76499e82 lots and lots 2001-10-24 11:44:18 +00:00
Daniel Stenberg
9f45190fa1 test case 27 added, to make sure cookie replacing don't leak anything 2001-10-24 11:39:48 +00:00
Daniel Stenberg
f933cb3b75 now reports the CORRECT pid on demand 2001-10-24 11:39:15 +00:00
Daniel Stenberg
c6822f5a7f T. Bharath found this memory leak. It occurs when we replace an internally
already existing cookie with a new one.
2001-10-24 11:36:55 +00:00
Daniel Stenberg
4e276b1b68 pack_hostent() now aligns the data properly on 64bit boundaries to work on
more CPU architectures
2001-10-23 12:11:43 +00:00
Daniel Stenberg
50e9f8ffd3 grammar grammar! 2001-10-23 10:12:28 +00:00
Daniel Stenberg
7d3daa598f added "3.12 Why do FTP specific features over HTTP proxy fails?" 2001-10-23 10:12:00 +00:00
Daniel Stenberg
7349940bdb added AC_PREREQ(2.50) to prevent autoconf mistakes 2001-10-23 07:54:16 +00:00
Daniel Stenberg
78000dbd5d An SGI (IRIX) compiler doesn't like indended #-instructions, so they're all
in column zero now!
2001-10-22 22:15:50 +00:00
Daniel Stenberg
b585f411cd make sure the connect can't return OK but return a NULL as addr 2001-10-22 12:52:25 +00:00
Daniel Stenberg
5ccd6bb842 2000 => 2001 2001-10-22 06:39:47 +00:00
Daniel Stenberg
5193894603 rephrased the WRITEFUNCTION description a bit 2001-10-22 06:35:19 +00:00
Daniel Stenberg
29b76a52fb failed transfers will now close the connection 2001-10-22 06:34:14 +00:00
Daniel Stenberg
0436bc22f2 added cygwin package makefile 2001-10-22 06:32:54 +00:00
Daniel Stenberg
cd16efa2f2 Cygwin files 2001-10-22 06:27:12 +00:00
Daniel Stenberg
56562bad59 Kevin Roth's cygwin fixes 2001-10-22 06:26:30 +00:00
Daniel Stenberg
a26081b555 A Kevin Roth patch. -- It's a post 1.4.2 patch that will become part of
libtool 1.4.3, and it's required to allow "make install" to function properly
on cygwin.
2001-10-22 06:08:09 +00:00
Daniel Stenberg
aa9c01ad3e new return code: CURLE_GOT_NOTHING 2001-10-19 11:59:04 +00:00
Daniel Stenberg
4e37187e44 now counts header size return from server and if nothing is returned from a
HTTP server we return error
2001-10-19 11:58:32 +00:00
Daniel Stenberg
74d5a6fb3b curl_easy_duphandle() now properly clones the cookie option
- patch by T. Bharath
2001-10-19 11:57:50 +00:00
Daniel Stenberg
83da58ce91 added test 37 2001-10-19 11:56:23 +00:00
Daniel Stenberg
45cc78fdbc CURLOPT_FAILONERROR now only returns error if the HTTP code is 400 or above
unconditionalliy. Previously, the code check was for >= 300 unless follow-
location was enabled...
2001-10-19 06:27:24 +00:00
Daniel Stenberg
010044e03c the malloc debug system only logs data if the logfile FILE * is set, which
makes it easier to disable debug output when built with debug functions
2001-10-17 12:33:35 +00:00
Daniel Stenberg
db0e3cc60c call Curl_done() in Curl_perform() after Transfer() was called, even it it
returned an error as there might be stuff in there we must free/cleanup.
This fixes the memory leak Yanick Pelletier posted about 16 Oct 2001
2001-10-17 12:24:51 +00:00
Daniel Stenberg
8dd6a4e369 don't use 'strict' anymore, as it doesn't work good with the cygwin fixes
also, always kill/restart the HTTP server on startup if it is our test server
2001-10-17 11:51:02 +00:00
Daniel Stenberg
92abbcef4c Kevin Roth's cygwin adjustment 2001-10-16 07:59:43 +00:00
Daniel Stenberg
1e8f0c5771 added AC_LIBTOOL_WIN32_DLL for cygwin setup issues 2001-10-16 07:58:41 +00:00
Daniel Stenberg
532bca41e5 Curl_tvdiff() now returns a millisecond diff, no double like before 2001-10-12 12:32:20 +00:00
Daniel Stenberg
b438c46764 progress meter fixes 2001-10-12 12:31:43 +00:00
Daniel Stenberg
ef48c73783 extensively commented source code, parts refreshened, the "current speed" is
now more accurate since it is based on actual spent time without the
assumptions from before
2001-10-12 12:31:06 +00:00
Daniel Stenberg
2c5e416591 better check for absolute URL redirects, adjusted to new Curl_tvdiff() proto 2001-10-12 12:30:06 +00:00
Sterling Hughes
8e91d5de8e looks nicer and is better compatible with older vim versions 2001-10-11 09:32:19 +00:00
Daniel Stenberg
2f85f3b147 cleanup on language, content and facts 2001-10-11 09:07:46 +00:00
Daniel Stenberg
20a47acb3a getservbyname is not used by libcurl, don't check for it 2001-10-11 07:41:52 +00:00
Daniel Stenberg
6bc85a94f9 removed WRITEINFO from here, it's not been supported since 7.4... 2001-10-11 06:24:27 +00:00
Daniel Stenberg
71bf8a6985 checkserver() bugged, Kevin Roth detected and fixed 2001-10-10 22:04:42 +00:00
Daniel Stenberg
59a76e4010 Kevin Roth's fixes to make tests work on cygwin 2001-10-10 21:59:10 +00:00
Daniel Stenberg
65b9c0d44d CURLOPT_WRITEFUNCTION description corrected 2001-10-10 13:11:24 +00:00
Daniel Stenberg
f2a25966cf cookiejar now enables the cookie engine 2001-10-10 12:48:32 +00:00
Daniel Stenberg
51afc3d8c5 hm 2001-10-09 12:04:33 +00:00
Daniel Stenberg
0c2f60036a added chunked encoding tests 2001-10-09 12:03:52 +00:00
Daniel Stenberg
3dcdcfc572 added test 47 - enforced http 1.0 request 2001-10-09 11:34:49 +00:00
Daniel Stenberg
9f8c51cbd8 resolve problem fixed, memory leak with ipv6 gone, configure improved,
MSVC++ project files fixed, connecthost() compiler errors, ignore SIGPIPE,
support CURLOPT_HTTP_VERSION etc...
2001-10-09 06:57:17 +00:00
Daniel Stenberg
de79348a90 New: CURLOPT_HTTP_VERSION
Renamed: the TimeCond type to curl_TimeCond
2001-10-09 06:53:53 +00:00
Daniel Stenberg
56bc31e9f9 Added -0/--http1.0 to enforce HTTP 1.0 requests 2001-10-09 06:53:11 +00:00
Daniel Stenberg
a9181f8f00 added the option CURLOPT_HTTP_VERSION that can specify which HTTP version
libcurl should use in its request
2001-10-09 06:52:37 +00:00
Daniel Stenberg
3685f792cb ignore SIGPIPE, as that can be actually get sent when we write to a socket 2001-10-09 06:23:26 +00:00
Daniel Stenberg
e227a276ce updated the cookiejar comment 2001-10-08 11:07:06 +00:00
Daniel Stenberg
7b5b60d275 hm, an unknown error from bind() when binding the outgoing socket would
failf("%d") without the error as argument... it would always make a weird
number get output
2001-10-08 06:56:00 +00:00
Daniel Stenberg
e719f4169c corrected cookie-jar comment 2001-10-08 06:43:22 +00:00
Daniel Stenberg
d8fb2b2e63 using a HTTP proxy will disable some protocol-specific features that non-
HTTP procotols may allow
2001-10-05 07:30:07 +00:00
Daniel Stenberg
fdeaae678d SM's patch applied, we should not use arguments or variables that have the
same name as common functions...
2001-10-05 06:05:56 +00:00
sm
f30102f038 VC ID project workspace - fixes compile under win32 2001-10-05 02:30:27 +00:00
sm
a27ac6f394 VC ID project now uses ws2_32.lib - fixes compile under win32 2001-10-05 02:29:47 +00:00
sm
093c0a098e Makefile.vc6 changed to include connect.c 2001-10-05 02:27:26 +00:00
Daniel Stenberg
c3363f833c Albert Chin's improved gethostbyname_r() tests 2001-10-04 14:05:12 +00:00
Daniel Stenberg
47def8091c made sure the correct pieces of code are compiled on IPv4-only hosts, and
the pack_hostent() is only compiled if gethostbyname_r() isn't present.
2001-10-04 13:36:11 +00:00
Daniel Stenberg
cfb32ec0cd supports the new ADDR prefix for getaddrinfo() and freeaddrinfo() tracing 2001-10-04 13:25:40 +00:00
Daniel Stenberg
5d9ae88f58 getaddrinfo() cleanups 2001-10-04 13:25:12 +00:00
Daniel Stenberg
9d066935e5 Keith McGuigan's excellent fix that makes a cloned copy of the hostent struct
for when gethostbyname() is used so that we have the memory of the struct
allocated. This turns out to be needed if the curl handled is passed between
threads on Windows and possibly other operating systems where we use that
function.
2001-10-03 21:42:04 +00:00
Daniel Stenberg
bc40063e07 Nico Baggus' updated for 7.9 2001-10-03 21:28:01 +00:00
Daniel Stenberg
3c92d45386 Bjrn Stenberg reported successfully having built curl on StrongARM Linux 2001-10-03 15:08:36 +00:00
Daniel Stenberg
fcf4fccfa4 non-blocking connects *done* 2001-10-03 11:58:12 +00:00
Daniel Stenberg
eafd2c6bd5 me fix curl_formadd() again 2001-10-03 11:55:09 +00:00
Daniel Stenberg
64f00454e5 hm, I edited away the fine functionality and with this edit test case 9
is once again running OK
2001-10-03 09:31:16 +00:00
Daniel Stenberg
d678727430 7.9.1 pre-release 1 status 2001-10-03 08:16:26 +00:00
Daniel Stenberg
efc15fb128 The ARRAY stuff is now added 2001-10-03 08:02:17 +00:00
Daniel Stenberg
3d4cd8c9aa added new curl_formadd() stuff 2001-10-03 08:01:38 +00:00
Daniel Stenberg
420259993e Georg Huettenegger's fix that makes us no longer use curl_formparse() but
instead entirely rely on the curl_formadd() function. The former one is
subject for removal in a future release.
2001-10-03 08:00:12 +00:00
Daniel Stenberg
66087bdac6 Georg Huettenegger's curl_formadd fixes 2001-10-03 07:54:42 +00:00
Daniel Stenberg
ac70a43452 the changes done since the 7.9 release 2001-10-02 17:22:23 +00:00
Daniel Stenberg
72dbe9da72 praise Bjorn Reese for mastering these dusty corners of socket hacking, now
we check for the error state before believing we are connected in IPv6
cases
2001-10-02 17:18:46 +00:00
Daniel Stenberg
dd02881788 added port number in informational connect message 2001-10-02 12:51:15 +00:00
Daniel Stenberg
ced8955325 IPv6 adjustments, connect()ing to bad ports still don't work properly for
IPv6
2001-10-02 11:26:53 +00:00
Daniel Stenberg
51ca5fcbe0 major connecting updates 2001-10-02 09:40:06 +00:00
Daniel Stenberg
56ff2aa059 pick the correct timeout before the connecthost call 2001-10-01 23:25:59 +00:00
Daniel Stenberg
9f77771ff9 faster bailout on timeouts 2001-10-01 23:25:26 +00:00
Daniel Stenberg
f0fa858885 added comment to the tvdiff 2001-10-01 22:50:20 +00:00
Daniel Stenberg
3298630500 removed warning 2001-10-01 22:50:03 +00:00
Daniel Stenberg
dc27488c47 corrected for IPv6 2001-10-01 22:42:46 +00:00
Daniel Stenberg
375e615a6d added five non-blocking #defines 2001-10-01 22:34:08 +00:00
Daniel Stenberg
6918427fae conn->hp is now conn->hostaddr
changed the Curl_connethost() proto again
2001-10-01 22:32:37 +00:00
Daniel Stenberg
9d342bbf07 sessionhandle->hp => hostaddr 2001-10-01 22:31:43 +00:00
Daniel Stenberg
afc81ada0c renamed the stupid 'hp' to 'hostaddr' which actually says what it is 2001-10-01 22:31:10 +00:00
Daniel Stenberg
5cd267b2be removed obsoletetd myalarm() calls 2001-10-01 11:35:29 +00:00
Daniel Stenberg
09da90076f moved the myalarm() usage, and now makes sure to switch it off after the
name resolving, as that should be the *ONLY* section in libcurl that may
take a while in a synchronous call.
2001-10-01 11:27:39 +00:00
Daniel Stenberg
d0079d9054 fixed the connecthost proto: added the timeout argument 2001-10-01 11:26:21 +00:00
Daniel Stenberg
ede5b54edc corrected the #include files 2001-10-01 11:25:27 +00:00
Daniel Stenberg
c5fdeef41d introduced non-blocking connects 2001-10-01 08:59:17 +00:00
Daniel Stenberg
6ca45beaed Added non-blocking sockets test 2001-10-01 08:58:03 +00:00
Daniel Stenberg
2a07626aa8 moved to the java module 2001-10-01 07:46:45 +00:00
Daniel Stenberg
9127554852 moved to the perl module 2001-10-01 07:44:12 +00:00
Daniel Stenberg
9ff28a8237 moved to separate module 2001-10-01 07:40:32 +00:00
Daniel Stenberg
e9aa07f660 filetime should be -1 if the remote time was unknown as 0 is actually a
valid time. we now store the filetime as a long to know for sure it can
hold -1 (there exist some unsigned time_t cases)
2001-09-28 11:04:43 +00:00
Daniel Stenberg
88e21894c7 improved readability slightly 2001-09-28 09:25:59 +00:00
Daniel Stenberg
09da2c1767 fixed the missing getftpresponse edits 2001-09-28 09:19:35 +00:00
Daniel Stenberg
ae2ecfc5cb removed the socket argument from some functions that always passed in the
same socket and it was available from the passed-in struct anyway!
2001-09-28 09:15:19 +00:00
Daniel Stenberg
cc610f0d1f now compiles warning-free when IPv6-enabled 2001-09-28 09:02:57 +00:00
Daniel Stenberg
8333644c84 moved the PORT and PASV code into separate smaller functions for readability
renamed all static ^_ftp_* functions to ^ftp_, prefixing with underscore is
not nice
2001-09-28 08:58:18 +00:00
Daniel Stenberg
4d13b2cc64 more ipv6 cleanups to make smaller functions that are easier to read 2001-09-28 07:46:39 +00:00
Daniel Stenberg
48dc74aecc more transparant support for IPv6 name resolving 2001-09-28 07:05:26 +00:00
Daniel Stenberg
888d39e083 generate bzip2 and zip files too 2001-09-27 12:44:17 +00:00
Daniel Stenberg
7239ecd456 free cookiejar string 2001-09-26 07:12:07 +00:00
Daniel Stenberg
598e8dfbfb Now we're setting a default domain for received cookies so that we can
properly match those cookies in subsequent requests
2001-09-26 07:08:29 +00:00
Daniel Stenberg
9efdb68035 Added test 46, cookie jar functionality 2001-09-26 07:06:00 +00:00
Daniel Stenberg
14b898cb05 we can verify files too 2001-09-26 07:05:00 +00:00
Daniel Stenberg
8d16b2b119 winsock 2 fixes 2001-09-25 07:55:19 +00:00
Daniel Stenberg
4d2cb8b32a 7.9 commit 2001-09-25 06:39:18 +00:00
Daniel Stenberg
d5001a3f0b Added httpput.c 2001-09-25 05:55:56 +00:00
Daniel Stenberg
91f5ac4d5c two ipv6 fixes 2001-09-24 07:48:31 +00:00
Daniel Stenberg
f9977df50d moved to parent directory 2001-09-24 07:48:00 +00:00
Daniel Stenberg
711650b178 test 119 proved a memory leak in the FTP parts when IPv6 is enabled and the
RETR fails, this corrects it.
2001-09-23 12:47:07 +00:00
Daniel Stenberg
c9adbc9f1c Adjusted to run on ipv6-enabled hosts 2001-09-23 12:46:04 +00:00
Cris Bailiff
611fbfa917 Commit Curl_easy v1.1.8 - constants updated for libcurl 7.9 - tests modularised 2001-09-20 09:48:52 +00:00
Daniel Stenberg
ecfacfb334 redirect and ssl connect fixes 2001-09-19 21:57:26 +00:00
Daniel Stenberg
645413f5ef Lots of praise and glory to Vojtech Minarik for setting up a test server
and providing me with test-certificates that helped me nail the problem with
curl not discovering with a bad certificate was used.
2001-09-19 21:49:11 +00:00
Daniel Stenberg
5becdc38b3 http put with --crlf requires chunked content encoding 2001-09-19 14:49:23 +00:00
Daniel Stenberg
f36cea67fe This verifies that bug report #462600 is fixed, a Location: following when
the given URL has no protocol:// part and the Location: redirect contains a
:// section
2001-09-18 18:41:46 +00:00
Daniel Stenberg
b556d6caee fixed bug report #462600, following a Location: when the initial URL didn't
have a protocol:// part did wrong
2001-09-18 18:33:25 +00:00
Daniel Stenberg
a17a78c477 removed Curl_http_close() 2001-09-18 15:30:59 +00:00
Daniel Stenberg
146413a53c the stuff formerly done in Curl_http_close is now done in Curl_close 2001-09-18 15:30:38 +00:00
Daniel Stenberg
437fd064c9 modified GetLine(), removed Curl_http_close() 2001-09-18 15:29:57 +00:00
Daniel Stenberg
28dd4e4f1f made it respond as a http proxy on CONNECT 2001-09-18 15:26:54 +00:00
Daniel Stenberg
f92dc70beb added two https test cases 2001-09-18 15:26:32 +00:00
Daniel Stenberg
6d8f1328bf HTTPS test case 2001-09-18 15:13:40 +00:00
Daniel Stenberg
8d1d93d56d Linus Nielsen Feltzing fixed telnet for win32. 2001-09-17 22:51:48 +00:00
Daniel Stenberg
f8e102c485 curl_easy_duphandle is new 2001-09-17 22:24:35 +00:00
Daniel Stenberg
d816fcc965 Linus Nielsen Feltzing changed winsock lib for linking 2001-09-17 14:38:41 +00:00
Daniel Stenberg
e30dcd0501 Linus Nielsen Feltzing's telnet-for-win32 fixes 2001-09-17 14:10:38 +00:00
Daniel Stenberg
24dc7cffbd libtool 1.4.2 generated 2001-09-17 14:08:47 +00:00
Daniel Stenberg
3bc83926ce just a simple example that seems to work! 2001-09-17 12:20:44 +00:00
Daniel Stenberg
c5cca4d059 fixed the stunnel PEM path 2001-09-17 08:55:32 +00:00
Daniel Stenberg
0db04c4f56 added stunnel PEM 2001-09-17 08:41:45 +00:00
Daniel Stenberg
5c566c9aa3 added the stunnel PEM file 2001-09-17 08:41:28 +00:00
Daniel Stenberg
822f02313d changed the PEM path 2001-09-17 08:41:01 +00:00
Daniel Stenberg
d934890c1e libtool 1.4.2 2001-09-17 06:12:53 +00:00
Daniel Stenberg
0e25cf41c4 modified error message when PWD fails 2001-09-14 12:18:46 +00:00
Daniel Stenberg
5214dbbd02 duphandle(), cipher list, *18* new ftp tests 2001-09-14 12:12:50 +00:00
Daniel Stenberg
0c716d51ad added README and FILEFORMAT to distrbution archive 2001-09-14 12:07:11 +00:00
Daniel Stenberg
86367d675a new FTP tests 2001-09-14 12:03:33 +00:00
Daniel Stenberg
bd8cef5a70 the strip stuff 2001-09-14 12:02:02 +00:00
Daniel Stenberg
708431e2ea fixed the REST again 2001-09-14 12:01:21 +00:00
Daniel Stenberg
db5c1c61e5 added curl_easy_duphandle 2001-09-13 14:50:04 +00:00
Daniel Stenberg
aa4ff6d8b9 Added curl_easy_duphandle 2001-09-13 14:49:35 +00:00
Daniel Stenberg
6d5b8b50e1 minor informatinal output changes 2001-09-13 12:52:58 +00:00
Daniel Stenberg
600d7b11e6 moved lots of the verbose stuff to do logmsg instead 2001-09-13 12:52:24 +00:00
Daniel Stenberg
afa7648be6 initial test suite file format description 2001-09-13 12:51:32 +00:00
Daniel Stenberg
5c344fc23a ftp tests added 2001-09-13 12:51:07 +00:00
Cris Bailiff
5a905e0bb8 Release 1.1.7 - documentation update with licence info only. 2001-09-13 11:27:59 +00:00
Cris Bailiff
c31216949d Update documentation to explicitly state Curl::easy licence is dual MIT/X - MPL. 2001-09-13 05:00:13 +00:00
Daniel Stenberg
2cb893575d moved a 100K buffer from the transfer loop to the urlstate struct, as it
seriously decreases the amount of used stack space
2001-09-12 12:02:12 +00:00
Daniel Stenberg
63f1f58077 removed perl and php makefiles 2001-09-12 11:31:58 +00:00
Daniel Stenberg
36e9507e29 reverted. twas no memory leak and the "fix" didn't even compile on windows... 2001-09-12 08:59:00 +00:00
Daniel Stenberg
1fde1431c9 narrowed some source lines to fit in 80 cols 2001-09-12 08:14:35 +00:00
Daniel Stenberg
bec97a0999 ConnectionKillOne() _can_ return -1 as an indication of error
This is T. Bharath's fix
2001-09-12 08:00:30 +00:00
Daniel Stenberg
07de3c9df0 T. Bharath's patch that sets up a few necessary buffers in the duphandle()
function
2001-09-12 07:57:33 +00:00
Daniel Stenberg
8950a2dfa1 *TERRIBLE* terrible memory leak occuring on all systems that have no
gethostbyname_r() function, most notably windows machines...
2001-09-12 07:19:11 +00:00
Daniel Stenberg
be47d83555 added CURLOPT_SSL_CIPHER_LIST 2001-09-11 22:36:43 +00:00
Daniel Stenberg
d5054ad52d --ciphers now sets CURLOPT_SSL_CIPHER_LIST 2001-09-11 22:36:03 +00:00
Daniel Stenberg
051fad8d88 now can set list of ciphers 2001-09-11 22:35:23 +00:00
Daniel Stenberg
c4532b9a07 added --ciphers 2001-09-11 22:34:54 +00:00
Daniel Stenberg
0e7824d1a9 documented CURLOPT_SSL_CIPHER_LIST 2001-09-11 22:29:30 +00:00
Daniel Stenberg
a2c78607a6 CURLOPT_SSL_CIPHER_LIST support 2001-09-11 22:23:16 +00:00
Daniel Stenberg
cc1a4edf3d added cipher_list 2001-09-11 22:21:26 +00:00
Daniel Stenberg
db7bde1d7a added ability to set prefered list of ciphers 2001-09-11 22:21:02 +00:00
Daniel Stenberg
719008596a changes since pre3 2001-09-11 12:00:36 +00:00
Daniel Stenberg
377e78d917 removed the 'perl' and 'php' dirs from the release archive 2001-09-11 10:15:40 +00:00
Daniel Stenberg
894b47da9b ouputs the start and expire dates of the server certificate on verbose
output
2001-09-11 10:00:49 +00:00
Daniel Stenberg
54e7246342 cleaned up, now closes the listener port in PASV and it doesn't re-use the
same passive port number
2001-09-11 07:45:12 +00:00
Daniel Stenberg
9b3b050640 some unixes have the netrc description in the ftp(1) man page 2001-09-11 06:39:54 +00:00
Daniel Stenberg
a0e389caa2 generated .h file cut off 2001-09-10 12:17:23 +00:00
Daniel Stenberg
b747408f9e updated to allow separate packaging 2001-09-10 12:15:17 +00:00
Daniel Stenberg
d3e55d8155 Added project curl source header 2001-09-10 12:14:40 +00:00
Cris Bailiff
96c7253cea Fix perl segfault due to changes in header callback behaviour since curl-7.8.1-pre3 2001-09-10 09:17:02 +00:00
Daniel Stenberg
3f5227dfc7 Curl_cookie_output() must check that there's a cookie struct present before
trying to address it!
2001-09-10 07:43:08 +00:00
Daniel Stenberg
b91103099a updated tool versions 2001-09-10 06:05:38 +00:00
Daniel Stenberg
82d3ded922 checks for sys/utime.h 2001-09-07 09:53:40 +00:00
Daniel Stenberg
5a8d1c4cd1 HAVE_SYS_UTIME_H adjustments 2001-09-07 09:53:21 +00:00
Daniel Stenberg
46372c04ee made it compile properly when not building with SSL support 2001-09-07 09:40:46 +00:00
Sterling Hughes
6147879837 Added formatting sections for emacs and vim 2001-09-07 04:01:32 +00:00
Sterling Hughes
e2e3c95d3b fix for emacs 2001-09-07 03:30:30 +00:00
Daniel Stenberg
c3b448dcea moved the session ID cache state variables into the UrlState struct within
the SessionHandle. It was previously wrongly put in UserDefined
2001-09-06 08:32:01 +00:00
Daniel Stenberg
86da31e031 Curl_SSL_Close_All() now checks that we have a session cache before we run
around killing entries in it!
2001-09-06 06:26:24 +00:00
Daniel Stenberg
1d7075e339 added -R description 2001-09-05 13:26:54 +00:00
Daniel Stenberg
610ec27d93 first shaky and stumbling attempts at a *_duphandle() function 2001-09-05 07:24:01 +00:00
Daniel Stenberg
70f2717c11 added curl-mode.el 2001-09-05 06:56:24 +00:00
Daniel Stenberg
b31a54c46a emacs lisp setup for hacking curl code 2001-09-05 06:55:08 +00:00
Sterling Hughes
08238f4320 Fix formatting when tabs and spaces got mixed up (if tabstop was not set to
8 this looked quite funny :)

Added a small formatting section for vim at the bottom, it also contains an
emacs portion (copied it from another project I'm working on), I don't know
if this is correct, but its a step (the vim part is correct :)
2001-09-05 02:49:04 +00:00
Daniel Stenberg
06993556f3 defined HAVE_UTIME and HAVE_UTIME_H 2001-09-03 14:31:48 +00:00
Daniel Stenberg
144459d364 corrected the comment to be valid chunk format 2001-09-03 12:51:23 +00:00
Daniel Stenberg
0fa61eff77 -R removes a TODO 2001-09-03 12:32:44 +00:00
Daniel Stenberg
a0be515d2d -R added 2001-09-03 12:10:48 +00:00
Daniel Stenberg
5900c0f767 utime() and utime.h adjustments for curl -R 2001-09-03 12:00:38 +00:00
Daniel Stenberg
d10cf2ba94 introducing -R/--remote-time which uses the remote file's time to set the
local file's time
2001-09-03 12:00:08 +00:00
Daniel Stenberg
bae1a75731 use the LIBCURL_NAME instead of the "hardcoded" string 2001-09-03 07:01:49 +00:00
Daniel Stenberg
f5adc8e53f libtool 1.4.1 2001-09-03 07:00:59 +00:00
Daniel Stenberg
67df4c9e6c removed unused #defines 2001-09-01 10:20:12 +00:00
Daniel Stenberg
50adfe3be9 Heikki Korpela noticed openbsd problems and libtool 2001-09-01 09:43:52 +00:00
Daniel Stenberg
71794da389 as generated with libtool 1.4.0a 2001-09-01 09:42:22 +00:00
Daniel Stenberg
6ef11f0b13 Heikki Korpela fixed the 'make -C' invokes. make -C is banned. 2001-09-01 09:39:40 +00:00
Daniel Stenberg
a5705acc9c the big struct rename of the year 2001-08-30 23:03:22 +00:00
Daniel Stenberg
47e7a3e678 a few more struct fixes 2001-08-30 22:59:58 +00:00
Daniel Stenberg
0ece1b5c34 Major rename and redesign of the internal "backbone" structs. Details will
be posted in a minute to the libcurl list.
2001-08-30 22:48:34 +00:00
Daniel Stenberg
315954c175 updated a bit 2001-08-29 15:02:46 +00:00
Daniel Stenberg
27ce46a85d removed cookies and SSL sessions 2001-08-29 12:14:18 +00:00
Daniel Stenberg
ea3cc81487 new ftp upload example, brand new cookie functionality and more 2001-08-29 09:51:44 +00:00
Daniel Stenberg
a9b139b25c added CURLOPT_COOKIEJAR details 2001-08-29 09:47:33 +00:00
Daniel Stenberg
bbdd5adf6e '-c -' 2001-08-29 09:45:44 +00:00
Daniel Stenberg
d425f5389d -c/--cookie-jar documented 2001-08-29 09:44:35 +00:00
Daniel Stenberg
26983053c4 take port numbers into account when finding a previous session from the
cache
2001-08-29 09:36:41 +00:00
Daniel Stenberg
8e0043165a added COOKIEJAR 2001-08-29 09:32:50 +00:00
Daniel Stenberg
c13dbf7bae uses the new cookie jar feature 2001-08-29 09:32:35 +00:00
Daniel Stenberg
a2b6ef3478 cookie jar adjustments 2001-08-29 09:32:18 +00:00
Daniel Stenberg
b6526af442 added ftpupload.c 2001-08-29 07:12:04 +00:00
Daniel Stenberg
4edba42c7c lots of crap 2001-08-28 09:02:33 +00:00
Daniel Stenberg
1180ef4b31 added the most recent one from automake 1.5, it complained on the former
one being "too old"
2001-08-28 09:01:50 +00:00
Daniel Stenberg
94bf462473 up'ed the version-info 2001-08-28 08:58:27 +00:00
Daniel Stenberg
233b3f718f curl_formadd() adjustments by Georg Huettenegger 2001-08-28 08:55:59 +00:00
Daniel Stenberg
0452fd8657 Georg Huettenegger's updates 2001-08-28 08:55:26 +00:00
Daniel Stenberg
613eafaf02 automake 1.5 complained on my SUFFIXES line! 2001-08-28 08:55:12 +00:00
Daniel Stenberg
725bd1dddf Georg Huettenegger's fixes and improvements to curl_formadd() 2001-08-28 08:54:33 +00:00
Daniel Stenberg
9835629801 Georg Huettenegger added code to deal with error 417 when doing form posts.
NOTE: we might do this for *ALL* errors when doing form posts.
2001-08-28 08:54:09 +00:00
Daniel Stenberg
3c52c53ddd Added SSL session ID caching, moved some SSL code from url.c to ssluse.c 2001-08-28 08:37:54 +00:00
Sterling Hughes
321ba15a82 we should be using start here. 2001-08-26 20:51:16 +00:00
Daniel Stenberg
9e5dfc15ac improved the test 2001-08-26 14:28:05 +00:00
Daniel Stenberg
8d52681e1d Added #include <string.h> and removed a silly mistakenly added , 2001-08-26 14:27:07 +00:00
Daniel Stenberg
56f6815d3d rewrite to work around BSD announcement license issues, this is also
somewhat easier to understand if I may say so. It is slightly slower.
2001-08-24 10:25:02 +00:00
Daniel Stenberg
ce07e79f3c cookies are stored in the reversed order now (which in turn means that
the order is _not_ actually reversed like it used to be)
2001-08-24 10:18:14 +00:00
Daniel Stenberg
723ced9336 T. Bharath's patch => linking with multithreaded versions of the c runtime
library for use in multithreaded apps
2001-08-24 07:45:16 +00:00
Daniel Stenberg
73417b59c7 T. Bharath's patch. It is kind of dirty, as it #pragma aways a whole bunch
of compiler warnings, but I guess they make the life somewhat easier to live
for a ms dude compiling this. For a rainy day: remove the pragmas and correct
the source code that cause the warnings!
2001-08-24 07:43:24 +00:00
Daniel Stenberg
f4e2774ab8 newly re-generated from the modified getdate.y 2001-08-24 07:41:51 +00:00
Daniel Stenberg
d5112c0dec include setup.h properly, not config.h 2001-08-24 07:39:50 +00:00
Daniel Stenberg
aace68c91b extern declarations no longer done on windows (T. Bharath's patch) 2001-08-24 07:39:15 +00:00
Daniel Stenberg
4034f31823 cleanups 2001-08-24 07:24:34 +00:00
Daniel Stenberg
5323340cae Kevin Roth's comments about -G have been addressed:
o -G -I works on the same command line and makes HEAD instead of GET
o -G with an already present question mark in the URL makes an ampersand get
  added as a separator instead
2001-08-24 07:01:09 +00:00
Daniel Stenberg
3aae2ec511 Tim Costello's bug report #454856 2001-08-24 06:31:34 +00:00
Daniel Stenberg
df09214c62 strcasecmp() is banned from our code, should be strequal() everywhere!
Tim Costello reported bug report #454858.
2001-08-24 06:20:47 +00:00
Daniel Stenberg
12acab9b86 When setting *_URL or *_PROXY in *_setopt(), it is important that we check
and possibly free the existing pointer first, and then clear the "allocated"
bit. We previously mistakenly could free the new pointer passed to us by
the friendly user...!
2001-08-23 14:06:38 +00:00
Daniel Stenberg
c9c2115088 started working on a function for writing (all) cookies, made it possible
to read multiple cookie files, no longer writes to the URL string passed
to the _add() function. The new stuff is now conditionally compiled on the
COOKIE define. Changed the _init() proto.
2001-08-23 14:05:25 +00:00
Daniel Stenberg
d73d28a75b added FTPS to the list of supported protocols 2001-08-23 11:12:07 +00:00
Daniel Stenberg
13bf964b78 item 4.6 is now an indication of a crash, not a timeout 2001-08-23 11:11:13 +00:00
Daniel Stenberg
3fb9c5727c As Steve Lhomme pointed out, this generates 'libcurl.dll' now instead of
the previous 'curl.dll'
2001-08-23 11:06:10 +00:00
Daniel Stenberg
b69f33ed44 Nico's update: "modified the build procedure to restore to the right current
directory where the build was started and it will autosense where is was run
from and set up the correct default directory at start of the script."
2001-08-23 10:56:48 +00:00
Daniel Stenberg
56e8d073bf curl_formadd() using example, the 7.9 style of building rfc1867 form posts 2001-08-23 08:45:20 +00:00
Daniel Stenberg
83a8786fe1 I want Sterling to be my friend, so I wasted some time on splitting up the
huge monster function _ftp() into more little functions. There are still
more that can be done, but this is at least improving readability and
maintainability... :-)
2001-08-23 06:10:01 +00:00
Daniel Stenberg
e3d7cc895b Georg Huettenegger's fixes, man pages converted to HTML pages and included
in release archive
2001-08-22 11:25:39 +00:00
Daniel Stenberg
0f425b01aa CURLOPT_FTPASCII is the old name, CURLOPT_TRANSFERTEXT is the new 2001-08-22 11:24:57 +00:00
Daniel Stenberg
c5a4b52d83 libcurl.3 has the info now 2001-08-22 11:23:53 +00:00
Daniel Stenberg
fc2d24105c CURLOPT_POST isn't needed these days 2001-08-22 11:23:07 +00:00
Daniel Stenberg
6704d44dd4 updated 2001-08-22 11:22:43 +00:00
Daniel Stenberg
3d9aeccc90 libcurl.3 is the man page 2001-08-22 11:22:28 +00:00
Daniel Stenberg
08655d8d5d Georg Huettenegger's patch curl-7.8.1-pre5-patch-20010819 2001-08-21 13:18:07 +00:00
Daniel Stenberg
3e5dbac7a2 added test44 formpost without Expect:, modified test9 2001-08-21 12:46:23 +00:00
Daniel Stenberg
05d9c9b849 run 'make clean' before 'make dist' to make sure the HTML files are up-to-date 2001-08-21 09:16:43 +00:00
Daniel Stenberg
4c2fb64e21 added a 'html' target that builds HTML versions from the man page sources.
It requires 'gnroff' and 'man2html' for now. 'make html' will be invoked by
the 'maketgz' script and the HTML files are included in release archives.
2001-08-21 09:16:09 +00:00
Daniel Stenberg
46a897f604 make html runs make html in the docs dir 2001-08-21 09:14:31 +00:00
Daniel Stenberg
d4b23198fa this is replaced with libcurl.3 2001-08-21 06:56:13 +00:00
Daniel Stenberg
6581663687 fflush the progress output, fixed configure.in for SSL without --with-ssl 2001-08-21 06:50:45 +00:00
Daniel Stenberg
4398151fd5 Troy Engel's fix for running configure without --with-ssl 2001-08-21 06:36:30 +00:00
Daniel Stenberg
d5fbfa3d0b As Andrs Garca reported we need to fflush() the data->err so that the
progress meter looks better on windows (and if the data->err is redirected
from stderr it also makes a point)
2001-08-21 06:29:56 +00:00
Daniel Stenberg
3a588fc9e7 added "4.5 FIGURE OUT WHAT A POST LOOKS LIKE"
added an online URL to this document
corrected a bad use of -t
2001-08-20 13:22:37 +00:00
Daniel Stenberg
7dbad3c382 7.8.1 2001-08-20 07:59:03 +00:00
Daniel Stenberg
8f55c3d47d libtool 1.3.5 leftover 2001-08-20 07:46:25 +00:00
Daniel Stenberg
732d80a770 updated version in header as we have 7.8.1 details in here 2001-08-20 07:36:57 +00:00
Daniel Stenberg
bd277e3daa RFC2732 parsing, curl-config patching, -G added, kerberos name space fixing,
configure fixes, libtool cleanups
2001-08-20 07:25:18 +00:00
Daniel Stenberg
a1cec0e49a Albert Chin's neat configure/package fixes 2001-08-20 07:10:28 +00:00
Daniel Stenberg
9027005411 SM's fix for -G on URLs with host name only 2001-08-19 17:09:06 +00:00
Sterling Hughes
1d3542a38f <couldn't resist>
Use a more appropriate variable name
</couldn't resist>
2001-08-18 02:42:23 +00:00
Daniel Stenberg
429b09ee04 Curl_ prefix added to a few function calls 2001-08-17 10:24:59 +00:00
Daniel Stenberg
6c2a9009e9 include getinfo.h for Curl_getinfo() proto 2001-08-17 10:19:26 +00:00
Daniel Stenberg
1b00298b52 modified to use the renamed kerberos functions with Curl_ prefix 2001-08-17 10:14:06 +00:00
Daniel Stenberg
5ad4a52281 Added two fields in the connectdata struct for kerberos fiddles 2001-08-17 10:13:32 +00:00
Daniel Stenberg
db5e67e34a use the Curl_ name space
removed unused code
removed use of global variable(s)
2001-08-17 10:12:51 +00:00
Daniel Stenberg
a2688b6ca1 removed dead/unused code
removed use of global variables
removed name space pollutions (added Curl_ prefixes)
2001-08-17 10:11:46 +00:00
Daniel Stenberg
ceb8f1cb22 Curl_ prefix 2001-08-17 10:10:15 +00:00
Daniel Stenberg
a7a3d49996 cleaned up rewrite 2001-08-17 10:02:34 +00:00
Daniel Stenberg
c36fc521bd Added -G 2001-08-16 13:40:22 +00:00
Daniel Stenberg
ca43cd46a7 updated to the latest fixes to the shell script 2001-08-16 13:11:29 +00:00
Daniel Stenberg
47ff6f29f4 hm, --cflags should only show the flags a 3rd party program would need 2001-08-16 13:09:20 +00:00
Daniel Stenberg
861ca06f11 removed --include again and stuffed the libcurl's include path in --cflags 2001-08-16 13:05:00 +00:00
Daniel Stenberg
d9e54a3cdf Added --include to set the compiler include flag for libcurl 2001-08-16 13:02:46 +00:00
Daniel Stenberg
32eaf9e83a Added -lcurl for --libs so that single option should now suffice to use
when building anything with libcurl
2001-08-16 12:58:53 +00:00
Daniel Stenberg
9ce94207e2 IPv6-addresses can have dots too! 2001-08-15 21:54:24 +00:00
Daniel Stenberg
9518e06413 extract IPv6-style specified IP-addresses properly 2001-08-15 21:40:09 +00:00
Daniel Stenberg
aa21e42d5b const fixes 2001-08-15 18:42:17 +00:00
Daniel Stenberg
16215e80d2 - 2001-08-15 18:40:43 +00:00
Daniel Stenberg
658c7e8afc Corrected the years in the copyright line 2001-08-15 18:38:56 +00:00
Daniel Stenberg
666d0b67d1 const argument 2001-08-15 18:34:25 +00:00
Daniel Stenberg
97f3099ff6 curl_getenv() now takes a const char * as argument 2001-08-15 18:33:52 +00:00
Daniel Stenberg
5a0a51a7ac add include of stdio.h, so that base64.c compiles 2001-08-15 18:17:14 +00:00
Daniel Stenberg
38783506fe CURL_GLOBAL_WIN32, config-vms.h, Borland makefile, -w %{http_code},
Bug #12733 over on php.net
2001-08-15 13:41:48 +00:00
Daniel Stenberg
70ad8a0b2b Using CURLOPT_POST without using CURLOPT_POSTFIELDS caused us to strlen()
a NULL pointer. Now, we treat a missing CURLOPT_POSTFIELDS as if there is
no data to send.
2001-08-15 13:38:36 +00:00
Daniel Stenberg
cec8a3afb2 removed one compiler error and two "unused variable" warnings 2001-08-15 12:26:34 +00:00
Daniel Stenberg
f78de2d8c1 SM's -G patch. There's some room for improvements still, as a command line
like: "curl -d moo=foo -G daniel.haxx.se" currently fails.
2001-08-15 07:22:32 +00:00
Sterling Hughes
7d17713d62 more _ftp_cwd 2001-08-15 07:21:21 +00:00
Sterling Hughes
546f4dca52 ftp_cwd() abstraction
"%" -> "%s"
2001-08-15 07:14:51 +00:00
Sterling Hughes
09a9b57bae This can be used in another place (Curl_ftp_done :)...
declare at the top of the file, put the private functions at the bottom of
the file, however, this is clearer imho (since _ftp is already there).
2001-08-15 06:58:56 +00:00
Daniel Stenberg
10ab082188 non-public functions should not use CURL * as arguments, so I changed them
to use 'struct UrlData *' instead
2001-08-15 06:55:42 +00:00
Daniel Stenberg
4999087879 modified the Curl_perform() proto 2001-08-15 06:54:51 +00:00
Sterling Hughes
bff5f1b944 must merge before commit
must merge before commit
must merge before commit
2001-08-15 06:54:16 +00:00
Daniel Stenberg
6e22b74253 removed protos that were moved to url.h and the new getinfo.h 2001-08-15 06:54:09 +00:00
Daniel Stenberg
a547f3a21e moved the url.c prototypes to here 2001-08-15 06:53:34 +00:00
Daniel Stenberg
db9bb9221f calls Curl_initinfo() in perform(). 2001-08-15 06:53:10 +00:00
Sterling Hughes
7994817185 begin abstraction process... 2001-08-15 06:52:42 +00:00
Daniel Stenberg
5ce97dbf0a prototypes for getinfo.c 2001-08-15 06:52:33 +00:00
Daniel Stenberg
0879515d4c Added Curl_initinfo() that's supposed to init session-specific getinfo-
variables
2001-08-15 06:52:15 +00:00
Daniel Stenberg
2a6e1ea83c internal functions should not use 'CURL *' as arguments, I replaced them
with the more appropriate 'struct UrlData *' instead.
2001-08-15 06:51:37 +00:00
Daniel Stenberg
ea6d35d973 added getinfo.h 2001-08-15 06:50:30 +00:00
Daniel Stenberg
a80f65c578 David James made it build 7.8.1 pre 5 2001-08-15 06:13:58 +00:00
Daniel Stenberg
7751756636 CURL_GLOBAL_WIN32 updates 2001-08-14 11:04:58 +00:00
Daniel Stenberg
2de6d8baf6 "added in 7.8.1" 2001-08-14 11:04:40 +00:00
Daniel Stenberg
b8c69928db geez, I'd ruined Nico's socklen_t define, corrected it now 2001-08-14 09:51:35 +00:00
Daniel Stenberg
b73746ae43 Nico's updates 2001-08-14 09:48:45 +00:00
Daniel Stenberg
ca06bbe583 redirected stderr problem fixed, VC build with SSL makefile fix, big form
post fix, no more globals in ssl code fix, size_t and const fix, a few VMS
changes
2001-08-14 09:41:51 +00:00
Daniel Stenberg
a9665b092b exchanged the second and third argument to fwrite(), as that makes it look
good on VMS.
Removed a '#if 0' section, made Curl_getmyhost static and cut off the 'Curl_'
prefix
2001-08-14 09:26:32 +00:00
Daniel Stenberg
1ad7023758 #include <curl/mprintf.h> 2001-08-14 09:25:15 +00:00
Daniel Stenberg
1a7e13e166 curl_memdebug takes a const argument now 2001-08-14 09:24:48 +00:00
Daniel Stenberg
3a37c0ae23 (un)signed and const cleanup 2001-08-14 09:16:46 +00:00
Daniel Stenberg
ccb3a13ce6 --enable-debug now sets the following CFLAGS:
-W -Wall -Wwrite-strings -pedantic -g
2001-08-14 08:49:16 +00:00
Daniel Stenberg
94a3886455 minor fixes for compiler warnings 2001-08-14 08:40:39 +00:00
Daniel Stenberg
616d8eda41 Curl_open() only take one argument now,
Curl_ldap_done() and Curl_dict_done() were removed,
compiler warnings corrected
2001-08-14 08:40:06 +00:00
Daniel Stenberg
85bb25e628 const and (un)signed fixes 2001-08-14 08:39:01 +00:00
Daniel Stenberg
83a5e39065 const and unsigned/signed fixes 2001-08-14 08:38:08 +00:00
Daniel Stenberg
bd0afd8db4 removed the use of the global array for the password that was necessary
for OpenSSL versions prior to 0.9.4, this is conditional and should still
work with older versions.
2001-08-14 08:36:30 +00:00
Daniel Stenberg
2d68ea45d8 size_t and const 2001-08-14 08:34:55 +00:00
Daniel Stenberg
5f42ef8f5b cleaned up some of the size_t and const mess 2001-08-14 08:34:09 +00:00
Daniel Stenberg
dff0145447 removed unused code, added const 2001-08-14 08:33:24 +00:00
Daniel Stenberg
8e1f95ac7d cleaned up some picky compiler warnings and indented the code curl style 2001-08-14 08:32:50 +00:00
Daniel Stenberg
95e7e551f6 added const char * => char * typecast 2001-08-14 08:32:03 +00:00
Daniel Stenberg
5afc694879 const-ified lots of function arguments 2001-08-14 08:31:27 +00:00
Daniel Stenberg
b1c57788f3 const-ified the code, removed Curl_ldap_done() 2001-08-14 08:30:43 +00:00
Daniel Stenberg
3d4bb3be22 fixed picky compiler warnings, unused arguments, const at proper places and
I also indented the source code to fit curl "standard"
2001-08-14 08:30:08 +00:00
Daniel Stenberg
0c063f85fc Curl_httpchunk_read now takes size_t size arguments instead of the previous
ssize_t
2001-08-14 08:29:09 +00:00
Daniel Stenberg
c11a1bf72a made some char * into const char * and I removed the check for size > 0
in the add_buffer function.
2001-08-14 08:28:15 +00:00
Daniel Stenberg
f195502064 added const to the prompt char * in the proto 2001-08-14 08:27:07 +00:00
Daniel Stenberg
4df9d94414 added typecast when converting const char * to char * 2001-08-14 08:26:20 +00:00
Daniel Stenberg
9a7fc9ce3a added const to the function protos 2001-08-14 08:25:47 +00:00
Daniel Stenberg
9fa464aa94 Curl_ftpsendf's third argument is now a const char * 2001-08-14 08:25:08 +00:00
Daniel Stenberg
d95ed06aa9 corrected the size_t weirdness. Expect size_t to be unsigned. Moved most
over to ssize_t that is signed. Removed all the special-purpose VMS #ifdefs
that were added for this.
2001-08-14 08:24:37 +00:00
Daniel Stenberg
5abe5f664a added a few consts and a few typecasts to please picky compiler options 2001-08-14 08:23:20 +00:00
Daniel Stenberg
e9e5197cea size_t => ssize_t, removed the special VMS fix for that purpose 2001-08-14 08:22:27 +00:00
Daniel Stenberg
7b4b166718 added typecasts when converting from unsigned int to int 2001-08-14 08:20:17 +00:00
Daniel Stenberg
e32641d412 Added an empty win32_cleanup for non-windows systems to prevent compiler
warnings, changed the Curl_open() call as the second argument was never
used anyway
2001-08-14 08:19:40 +00:00
Daniel Stenberg
1603f64771 removed the *done() function as it served no purpose, added type casts when
converting from 'const char *' to 'char *' to please my picky compiler
options
2001-08-14 08:18:35 +00:00
Daniel Stenberg
c8926138d1 commented out empty else blocks to shut up pedantic compilers 2001-08-14 08:17:29 +00:00
Daniel Stenberg
ab6c8a06e0 Added 'const' to the string arrays 2001-08-14 08:16:53 +00:00
Daniel Stenberg
f35b6e90f5 corrected dubious use of the same variable twice in a function call,
gcc 3.0 warned about it
2001-08-14 06:06:15 +00:00
Daniel Stenberg
b49565308f curl_formparse() should no longer have any size-limit in the data section
after this patch from Peter Todd
2001-08-13 06:33:26 +00:00
Daniel Stenberg
f8c357e4ff corrected minor source indentation error 2001-08-10 14:10:19 +00:00
Daniel Stenberg
4b6c240832 moved the download/upload speed calculations, to be made on every invoke
of the progressupdate, as on very quick transfers they wouldn't always get
calculated!
2001-08-10 06:24:49 +00:00
sm
022ea42265 Fixed bugs for building debug and SSL lib in VC makefile 2001-08-09 22:43:43 +00:00
Daniel Stenberg
b54b68ac7b Added CURLOPT_HTTPGET and CURLOPT_SSL_VERIFYHOST, added notes to the two
timeout-options that they don't work in multi-threaded programs.
2001-08-09 12:08:23 +00:00
Daniel Stenberg
1ddf2907c7 non-blocking connect please 2001-08-09 12:04:16 +00:00
Daniel Stenberg
33dc9c1f95 strip off user-agent before checking protocol 2001-08-09 11:58:56 +00:00
Daniel Stenberg
f112cc14b9 The redirected error stream was closed before curl_easy_cleanup() was made,
and when VERBOSE was enabled, that used the stream. Also, the stream was
closed even if we looped to get more files.
Corrects Dustin Boswell's bug report #441610
2001-08-09 09:47:53 +00:00
Daniel Stenberg
5de39884c3 removied $Id:$ again, this is treated as a binary file and then that field
isn't updated! :-O
2001-08-09 09:13:36 +00:00
Daniel Stenberg
e840c109e7 Added $Id:$ to the header 2001-08-09 09:10:36 +00:00
Daniel Stenberg
f1ce203686 Added $Id:$ string for file version in the header 2001-08-09 09:10:13 +00:00
Daniel Stenberg
d6ccc33dec when a test expects an error code but gets a different one, we now output
both of them
2001-08-08 07:51:00 +00:00
Daniel Stenberg
1b2f4031e1 Nico's notes about porting to VMS 2001-08-08 07:50:14 +00:00
Daniel Stenberg
64822958e6 test cases, verifyhost, curl -E 2001-08-08 07:49:00 +00:00
Daniel Stenberg
af59b9b94c added unfortunate but necessary special-purpose files for VMS and RISC OS 2001-08-08 07:46:44 +00:00
Daniel Stenberg
59ab21ed07 The file name given to -E can now contain drive letters on windows, if they
start the file name as in 'X:\' where X is any letter. The colon otherwise
normally separate the file name from the password.
2001-08-08 07:35:57 +00:00
Daniel Stenberg
edec65246a credit where credit is due, added a bunch of recent contributors 2001-08-08 07:23:23 +00:00
Daniel Stenberg
95837043e2 Patrick Bihan-Faou introduced CURLOPT_SSL_VERIFYHOST and code to deal with
it.
2001-08-08 07:16:47 +00:00
Daniel Stenberg
dcfb10fb31 Patrick Bihan-Faou's verifyhost addition 2001-08-08 07:15:00 +00:00
Daniel Stenberg
0553ab8181 config.h file for RISC OS compiles 2001-08-08 06:05:06 +00:00
Daniel Stenberg
410dd54da7 script to build curl on VMS 2001-08-08 06:04:34 +00:00
Daniel Stenberg
7b9ec9507f replacing FILE * with common file descriptors? 2001-08-07 21:36:07 +00:00
Daniel Stenberg
4045cd5ec0 language correction 2001-08-07 21:21:24 +00:00
Daniel Stenberg
81b6ebc0f4 added Rick Jones's more polite wording of 1.7, makes it better and friendlier 2001-08-07 18:02:37 +00:00
Daniel Stenberg
56da5a05be nine new test cases 2001-08-07 12:42:23 +00:00
Daniel Stenberg
c528dc53c9 added "1.7 What about CURL from curl.com?" 2001-08-07 11:17:37 +00:00
Daniel Stenberg
ed786290e2 test 202 - two file:// URLs in one command line 2001-08-07 09:21:30 +00:00
Daniel Stenberg
8b2861da85 added test 201, file:// with missing file 2001-08-07 09:16:49 +00:00
Daniel Stenberg
2a70465434 VMS fixes, file:// changes, curl-config --libs patch 2001-08-06 13:44:36 +00:00
Daniel Stenberg
d60cd937b7 Heikki Korpela posted a patch that makes --libs include the directory in
which libcurl itself is installed in.
2001-08-06 13:35:58 +00:00
Daniel Stenberg
76125e196c Nico's VMS fixes added 2001-08-06 13:19:43 +00:00
Daniel Stenberg
8219990012 Added curlmsg.msg to the distribution 2001-08-06 13:18:34 +00:00
Daniel Stenberg
f8d09660cd used under VMS 2001-08-06 13:18:06 +00:00
Daniel Stenberg
823fa6d273 Nico's fixes for VMS, most of these are fixes for bad uses of size_t that
forgets that it is very often unsigned. These should be fixed globally and
then many #ifdef VMS lines can be removed.
2001-08-06 12:47:39 +00:00
Daniel Stenberg
2cf45f68b0 Curl_FormFree renamed to Curl_formclean, as it turns out VMS for example
requires all global symbols to be *case insentively* unique! curl_formfree
is a global function we shouldn't touch.
2001-08-06 12:36:18 +00:00
Daniel Stenberg
7950a95401 adjusted for VMS 2001-08-06 12:27:28 +00:00
Daniel Stenberg
24805e17d7 Nico's config.h for VMS 2001-08-06 12:26:27 +00:00
Daniel Stenberg
490d46affb Nico's VMS fixes 2001-08-06 12:24:22 +00:00
Daniel Stenberg
d30c478378 Nico's VMS adjustment 2001-08-06 12:23:31 +00:00
Daniel Stenberg
5b6640960a VMS adjustments. The IOCTL_3_ARGS #define used now should be moved to become
a configure checked one.
2001-08-06 12:22:48 +00:00
Daniel Stenberg
6f543f3ede Nico Baggus made it work and compile under VMS! 2001-08-06 12:20:28 +00:00
Daniel Stenberg
93bcfd4e65 Nico Baggus' VMS adjustments 2001-08-06 12:19:26 +00:00
Daniel Stenberg
1400561a5a VMS #ifdefs added. several related to size_t problems that we must address
globally anyway... check these as soon as the size_t fixes are in place
2001-08-06 12:17:43 +00:00
Daniel Stenberg
8dc4ac2147 made this whole file #ifdef WIN32 2001-08-06 12:16:19 +00:00
Daniel Stenberg
7948b0becc VMS #include fixes,
file:// URL treatment improvements
2001-08-06 12:14:53 +00:00
Daniel Stenberg
72e67d3b9d adjusted to the correct treatmeant of file:// URLs 2001-08-06 12:10:00 +00:00
Daniel Stenberg
711a3a79e3 Added RISC OS and OpenVMS to ported operating systems 2001-08-06 10:09:43 +00:00
Daniel Stenberg
a6a3673804 7.8.1-pre3 commit 2001-08-06 08:43:37 +00:00
Daniel Stenberg
944f9a73f4 Jonathan Hseu noticed that you couldn't get a header callback unless you
set CURLOPT_WRITEHEADER to non-NULL, even if you didn't care about that
  data. This is now fixed.
2001-08-06 08:22:26 +00:00
Daniel Stenberg
5ab1a10e9c corrected the comment for CURLOPT_WRITEHEADER in setopt(), and made it
read a void * and not a FILE *, as that was how it used to work and not
anymore...
2001-08-06 08:18:15 +00:00
Daniel Stenberg
1813d2ddf7 many fixes mailed in during July 2001-08-05 13:00:40 +00:00
Daniel Stenberg
2827f5327a curl_escape() no longer attempts to detect already encoded stuff (in order
not to re-encode it).
2001-08-05 12:34:07 +00:00
Daniel Stenberg
47bb09e908 - Sergio Ballestrero provided a patch for reading responses from NCSA httpd
1.5.x servers, as they return really screwed up response headers when asked
  for with HTTP 1.1.
2001-08-05 12:30:57 +00:00
Daniel Stenberg
7f21669ef2 -G or similar to make -d data get into a GET 2001-08-04 14:42:41 +00:00
Daniel Stenberg
3a145180cc complete rewrite to avoid the BSD license in the previous version 2001-08-03 15:11:28 +00:00
Daniel Stenberg
f24d54a9c4 clarified '-d @filename' with a tiny example 2001-08-03 14:06:25 +00:00
Daniel Stenberg
9478d796a3 fixed the header that wrongly was the krb4-style one 2001-08-03 13:52:06 +00:00
Daniel Stenberg
00b00c6931 Andrew Francis base64 decode, my previous base64 encoder, new source header.
No BSD-style license.
2001-08-03 13:51:44 +00:00
Daniel Stenberg
e791f6ec58 added CURLOPT_HTTPGET 2001-08-03 11:53:16 +00:00
Daniel Stenberg
8987244758 httpreq cleanup fix 2001-08-03 11:52:53 +00:00
Daniel Stenberg
9b69f6faab httpsserver.pl added to release archive 2001-08-03 06:39:00 +00:00
Sterling Hughes
e7b966b9eb Funny, I skipped right over this before.
everyting -> everything
2001-08-02 17:29:08 +00:00
Daniel Stenberg
e7801afed1 manual fix, select() loop fix, progress callback fix 2001-08-02 17:25:33 +00:00
Daniel Stenberg
929366b5ae Frank Keeney pointed out a manual mistake for certificate convertions 2001-08-02 17:12:07 +00:00
Daniel Stenberg
e1d8c5daa7 "Add an interface that enables a user to select prefered SSL ciphers to use."
Rob Styles posted the question, as he could've used this...
2001-08-02 17:08:24 +00:00
Daniel Stenberg
2b44fdab2e don't do final newline output when using progress callback 2001-08-02 17:05:11 +00:00
Daniel Stenberg
3e0a95bb78 FD_ZERO() the keepfd variables properly when keepon is modified (Tomasz Lacki
reported 12 Jul 2001)
2001-08-02 16:52:12 +00:00
Sterling Hughes
f0efa89484 Leftover -- add a note about this in the examples file :) 2001-07-12 02:00:24 +00:00
Sterling Hughes
45037a39aa Add win32 initialization support to curl_global_init() and
curl_global_cleanup().  Update corresponding man pages...

Improve the logic in curl_global_cleanup() and curl_global_init() so that
they are not called twice if the application libraries have been
initialized and make sure to reset the init flags in curl_global_cleanup().
2001-07-12 01:57:28 +00:00
Daniel Stenberg
31336d63ae borland makefile fix 2001-07-02 09:23:50 +00:00
Daniel Stenberg
2c39a4381a added more ideas that've been floating around lately 2001-07-02 08:21:25 +00:00
Daniel Stenberg
532624bafe removed the "change test suite" item, as that is already made 2001-07-02 07:04:16 +00:00
Daniel Stenberg
8469918306 Added an item about the cookie jar stuff, contains a link to the dev file
about this subject
2001-07-02 07:02:47 +00:00
Daniel Stenberg
9646a8b346 removed static, removed curl special return type, added include windows.h 2001-06-29 11:33:00 +00:00
Daniel Stenberg
5e2a74fcc4 added strtok.c as a source file 2001-06-29 11:18:27 +00:00
Daniel Stenberg
813d7585c7 Nic Roets brought a fix for the certificate verification when using SSL. 2001-06-29 07:38:11 +00:00
Daniel Stenberg
ae55c1c144 added test 43 2001-06-28 13:25:28 +00:00
Daniel Stenberg
1a6143feba HTTP Location: following over HTTP proxy 2001-06-28 13:24:19 +00:00
Daniel Stenberg
b70a4227b3 now runs ok on IPv6 enabled hosts 2001-06-27 22:04:00 +00:00
Daniel Stenberg
7d82bc81a2 now does OK even on IPv6-enabled hosts 2001-06-27 22:01:37 +00:00
Daniel Stenberg
be449bdea1 better strip 2001-06-27 22:01:08 +00:00
Daniel Stenberg
798aaf0c0a multiple file transfers with resume fix 2001-06-25 12:58:19 +00:00
Daniel Stenberg
6f2fca53ad 'resume from'-fix. When using "-C -" and doing multiple file download, the
first resume was used on all files instead of being reset between each file.
As found by Bjrn Stenberg.
2001-06-25 12:56:06 +00:00
Daniel Stenberg
cd4aed6690 - Anton Kalmykov provided a fix that makes curl work with form field names
with spaces like when -F is used.
2001-06-25 09:49:14 +00:00
Daniel Stenberg
fa601af722 Anton Kalmykov's fix for dealing with form names with spaces! 2001-06-25 09:39:35 +00:00
Daniel Stenberg
303b3cf41c added return type void in SYNOPSIS 2001-06-21 09:39:19 +00:00
Daniel Stenberg
fc535aa086 libcurl.5 is renamed to libcurl.3 2001-06-21 09:34:37 +00:00
Daniel Stenberg
cd33795903 all changes from year 2000 was moved to CHANGES.2000 and that is now
only available in CVS
2001-06-20 07:50:49 +00:00
Daniel Stenberg
c9d233d34a the changelog from year 2000 2001-06-20 07:50:22 +00:00
Daniel Stenberg
bd192d5387 ftp cut off transfer fix, configure --with-ssl fix 2001-06-20 07:48:09 +00:00
Daniel Stenberg
4ac7a087c6 when --with-ssl is used with a specified path, we use that path immediately
to check libs and include files in, we don't check the default places first!
2001-06-20 07:43:36 +00:00
Daniel Stenberg
2d5039184e Added items we've discussed previously, and URLs to dev notes discussing
the matter
2001-06-19 09:12:27 +00:00
Daniel Stenberg
b1bbaebb17 better treatment of truly aborted transfers 2001-06-19 06:04:21 +00:00
Daniel Stenberg
8f6997cbde files to ignore by default in cvs operations 2001-06-18 14:37:23 +00:00
Daniel Stenberg
e18ecaf108 made stdin testing work, also made 'nocheck=true' work when set on the
reply data section
2001-06-14 12:16:07 +00:00
Daniel Stenberg
fe67ba6d2b three more HTTP tests added from the old test suite 2001-06-14 12:05:30 +00:00
Daniel Stenberg
e39e6c537e removed a failf() that would overwrite the previous error message 2001-06-12 18:22:52 +00:00
Daniel Stenberg
4e4a899306 better ssl error msg, libcurl.def fix, -version-info corrected, more test
cases and fixed FTP ranges
2001-06-12 09:23:13 +00:00
Daniel Stenberg
9a78db6e59 Salvador Dvila's ftp range download fix 2001-06-12 09:21:37 +00:00
Daniel Stenberg
6475600afa New test cases added 2001-06-12 09:12:59 +00:00
Daniel Stenberg
e450888b15 supports SIZE now 2001-06-12 08:38:11 +00:00
Daniel Stenberg
23522a66d1 corrected the -version-info 2001-06-11 12:31:51 +00:00
Daniel Stenberg
116462a512 Added a check that 'localhost' resolves before the gethostbyname_r() checks,
as they depend on the resolving of that name. It seems this mistake is
happening from time to time and people have a hard time finding out why
configure can't detect their gethostbyname_r()-setup.
2001-06-11 12:29:08 +00:00
Daniel Stenberg
217e033120 duplicate curl_unescape entry removed 2001-06-07 11:44:58 +00:00
Daniel Stenberg
259ac2dd77 7.8 commit 2001-06-07 09:39:29 +00:00
Daniel Stenberg
4ebf001d37 SM's suggested update of the Microsoft and SSL compiling section 2001-06-07 06:21:27 +00:00
Daniel Stenberg
5e326014cd SDavila posted a fix that sets conn->bits.use_range properly when doing
resumed downloads
2001-06-07 05:59:20 +00:00
Daniel Stenberg
0b0bbffa35 Jrn corrected the mingw32 makefile 2001-06-07 05:41:30 +00:00
Daniel Stenberg
2b35432fcc S. Moonesamy updates, strtok.[ch] issues 2001-06-06 14:26:50 +00:00
Daniel Stenberg
ef8a2bc4fc Added note about src/hughelp.c and the new *.cvs file that can be used if
you really can't generate that file.
2001-06-06 09:39:07 +00:00
Daniel Stenberg
96d235d9a3 For people using CVS but with no perl, like all those windows losers. They
can just rename this file and cut off the extension instead...
2001-06-06 09:37:15 +00:00
Daniel Stenberg
eaf51b62b9 corrected the CVS note about not creating a subdirectory... which it does now 2001-06-06 09:33:46 +00:00
Daniel Stenberg
80994a123e MUTE is gone, PHP examples, new CVS structure 2001-06-05 11:48:30 +00:00
Daniel Stenberg
b1cd033c27 made the test-program in the bottom compile/build, remember to link with
strequal.o as well!
2001-06-05 11:27:40 +00:00
Sterling Hughes
268867311e Add documentation for the --vernum attribute 2001-06-01 21:56:58 +00:00
Daniel Stenberg
6840f80d21 CURLOPT_CONNECTTIMEOUT works on win32 these days, S. Moonesamy pointed out 2001-06-01 07:33:38 +00:00
Sterling Hughes
cac6876734 Update the cvs instructions. 2001-06-01 04:46:15 +00:00
Sterling Hughes
753011c8db Test (and revert change from previous test). 2001-06-01 00:02:44 +00:00
Sterling Hughes
2774dc390a testing... testing... 1, 2, 3 2001-05-31 23:56:28 +00:00
Daniel Stenberg
eb4534f735 removed CURLOPT_MUTE, it is not used anymore 2001-05-31 13:55:13 +00:00
Daniel Stenberg
efb957039d MUTE is now considered obsolete 2001-05-31 13:52:59 +00:00
Daniel Stenberg
fe82ddda46 CURLOPT_MUTE and data->bits.mute are history, removed, gone! 2001-05-31 13:50:28 +00:00
Daniel Stenberg
94af496ac4 the global init stuff, strtok.h mess, _REENTRANT fixed 2001-05-31 13:32:55 +00:00
Sterling Hughes
6f17c2f140 add entry for getbinarypageinvar.php 2001-05-31 12:33:38 +00:00
Sterling Hughes
490c00fb30 Change to // comments and add <?php and ?> wrappers 2001-05-31 12:32:04 +00:00
Sterling Hughes
2d0dbd87c3 Update comments and wrap in <?php and ?> 2001-05-31 12:25:49 +00:00
Sterling Hughes
13a5e16f35 update the comment style from '#' to '//' which is the "un-official"
standard PHP comment.  Also wrap the code in <?php and ?> and finally
add getbinarypageinvar.php to Makefile.am and README
2001-05-31 12:14:12 +00:00
Sterling Hughes
3d54ba1b9e Add the getbinarypageinvar.php, which shows how to use the
CURLOPT_BINARYTRANSFER, added in PHP 4.0.6 along with the
CURLOPT_RETURNTRANSFER option.
2001-05-31 11:59:39 +00:00
Sterling Hughes
e051f904f2 Test and substance patch.
This is my first CVS commit :), what it does:

- Makes sure that parts of the cURL library don't get initialized twice
- Makes sure that we only free what we initialize
2001-05-31 11:30:34 +00:00
Daniel Stenberg
f8d94a3849 Added CVS $Id$ keyword for inline version tracking 2001-05-31 08:41:42 +00:00
Daniel Stenberg
ac691cae88 updated to again set the flags of what to init, and now also feature a
set of available flags
2001-05-31 08:35:26 +00:00
Daniel Stenberg
43d0d75688 fixed the dlopen check 2001-05-31 08:24:50 +00:00
Daniel Stenberg
77f34915ce removed _REENTRANT define 2001-05-31 07:03:04 +00:00
Daniel Stenberg
72b8993164 re-generated 2001-05-31 07:02:31 +00:00
Daniel Stenberg
6b9bd96c06 include setup.h _before_ system includes 2001-05-31 07:02:13 +00:00
Daniel Stenberg
6532f737eb if NEED_REENTRANT is set, define _REENTRANT already here since it has to
be defined as many include files as possible (Solaris req)
2001-05-31 07:01:08 +00:00
Daniel Stenberg
928ff54388 includes setup.h, and thus I could remove the _REENTRANT define 2001-05-31 07:00:21 +00:00
Daniel Stenberg
95c94bf658 the CURL_GLOBAL flags are now used to set what parts to init globally 2001-05-31 06:10:25 +00:00
Daniel Stenberg
7f295939d0 went back to the version where the flags argument to curl_global_init()
specify exactly what global parts to init. Thanks to Sterling Hughes really
for arguing wisely.
2001-05-31 06:06:37 +00:00
Daniel Stenberg
aa27db6986 removed the prototype and made it include string.h instead
If your system, such as Solaris 2.7, lacks the strtok_r() prototype in
   string.h, then you'll face a bunch of warnings on all instances
   where strtok_r() is used.

   There's not much we can do about it. Adding a prototype here screws
   everything up on other platforms! :-(
2001-05-31 06:05:32 +00:00
Daniel Stenberg
4ce5fa3ea9 Sterling Hughes suggested we set 'static' before size_t... 2001-05-31 05:55:42 +00:00
Daniel Stenberg
ffa7c13117 libcurl now has MUTE and NOPROGRESS set by default 2001-05-30 12:51:24 +00:00
Daniel Stenberg
fbca7a83fc 7.8-pre2 2001-05-30 11:24:26 +00:00
Daniel Stenberg
870bacd689 include strtok.h to get the prototype 2001-05-30 11:06:56 +00:00
Daniel Stenberg
d9f39cc99b finally fixed the 'ret' compiler warning 2001-05-30 11:06:33 +00:00
Daniel Stenberg
f2e6d235f2 removed python interface, there is one now! ;-) 2001-05-30 10:42:18 +00:00
Daniel Stenberg
baa220c1af -# fix, thread fix, easy.c compile fix and more 2001-05-30 10:34:14 +00:00
Daniel Stenberg
cabef4732d made the automake line re-build from _all_ Makefile.am files in the source tree 2001-05-30 10:29:39 +00:00
Daniel Stenberg
cab90bf98a english fix 2001-05-30 08:01:35 +00:00
Daniel Stenberg
ab449cce73 now uses CURL_GLOBAL_DEFAULT 2001-05-30 08:01:09 +00:00
Daniel Stenberg
b541537c66 curl_global_init() support for CURL_GLOBAL_NOT_SSL 2001-05-30 08:00:29 +00:00
Daniel Stenberg
285e998fae Sterling Hughes's fixes 2001-05-30 07:59:47 +00:00
Cris Bailiff
c503930b8d Added Solaris 'pkgadd' building support to packages collection and autoconf/automake files 2001-05-30 04:31:32 +00:00
Daniel Stenberg
5c6859e537 not used in autoconf version 2.50 2001-05-29 19:28:50 +00:00
Daniel Stenberg
4e376a2f1a check for strtok_r 2001-05-29 19:25:28 +00:00
Daniel Stenberg
edd608aa76 curl_ => Curl_ 2001-05-29 19:20:37 +00:00
Daniel Stenberg
88d536eb3b re-indented to follow "project curl"-style, renamed curl_ prefix to Curl_ 2001-05-29 19:20:21 +00:00
Daniel Stenberg
d567659bf4 strtok() replaced with strtok_r() 2001-05-29 19:17:39 +00:00
Daniel Stenberg
e0558ae541 adjusted for automake 1.4+ 2001-05-29 19:17:19 +00:00
Daniel Stenberg
034f6378da Added strtok.[ch] 2001-05-29 19:17:03 +00:00
Daniel Stenberg
af129c499e we rqeuire autoconf 2.50 now 2001-05-29 19:14:46 +00:00
Daniel Stenberg
8b4809a898 fixed the -# to write to the same as --stderr is set to 2001-05-29 18:30:47 +00:00
Daniel Stenberg
88d14e96ca 3.11 How do I POST with a different Content-Type? 2001-05-29 14:02:20 +00:00
Daniel Stenberg
04d1491a6b clarified the MUTE option 2001-05-29 13:28:03 +00:00
Daniel Stenberg
de16ddd5b4 updated, improved language at a few places 2001-05-29 13:23:41 +00:00
Daniel Stenberg
27751df6ec moved list of authors to the separate THANKS file and added that to the
release archive
2001-05-29 12:09:47 +00:00
Daniel Stenberg
cf02eb11f6 text: added in 7.8 2001-05-29 12:09:15 +00:00
Daniel Stenberg
22b8d387bc beauty fix 2001-05-29 08:27:43 +00:00
Daniel Stenberg
bfd89c8078 global_init() takes that flag argument 2001-05-29 07:20:31 +00:00
Daniel Stenberg
223c48e6b5 7.8-pre1 commit 2001-05-28 21:50:00 +00:00
Daniel Stenberg
7bb7550e23 fixes 2001-05-28 21:49:45 +00:00
Daniel Stenberg
adf00f5b2e added libtool 2001-05-28 21:49:01 +00:00
Daniel Stenberg
0844c4fdb2 major: curl_general_init/cleanup 2001-05-28 21:45:36 +00:00
Daniel Stenberg
38cabc4fdb ftps:// works 2001-05-28 21:45:10 +00:00
Daniel Stenberg
ec340e3e33 adjusted the global_init() call to pass the new flag argument too 2001-05-28 15:31:12 +00:00
Daniel Stenberg
f44f512f24 global_init() takes a flag option now, to tell libcurl what _not_ to init.
it will make it better when the application uses several libs that use
openssl and it also enables us to do the win32 winsock initing in the future
if we want to
2001-05-28 15:30:38 +00:00
Daniel Stenberg
ce0e2cc017 better -v use, passes -I to all perl invokes 2001-05-28 15:26:15 +00:00
Daniel Stenberg
b082832220 added calls to curl_global_*, they aren't really needed for this application
but it shows good manner to always cleanup
2001-05-28 15:06:46 +00:00
Daniel Stenberg
1e5e0f9a26 added 'curl-config --vernum' for hardcore hex version output 2001-05-28 14:58:07 +00:00
Daniel Stenberg
ac3ae8f775 changed the check for command1.txt to test1, so that automatic testing
in 'make distcheck' will work
2001-05-28 14:32:05 +00:00
Daniel Stenberg
a51fd91db2 increased interface age 2001-05-28 14:12:58 +00:00
Daniel Stenberg
d300cf4d84 T. Bharath's comments about SSL cleanup incorporated, and the two new
curl_global_* functions
2001-05-28 14:12:43 +00:00
Daniel Stenberg
a9d0a85842 curl_global_cleanup and curl_global_init added to the family 2001-05-28 14:11:02 +00:00
Daniel Stenberg
81da4fc995 Added more test cases 2001-05-28 12:31:07 +00:00
Daniel Stenberg
b6ca1be1cd test case converted to the new file format 2001-05-28 12:30:21 +00:00
Daniel Stenberg
20d67917c4 test: HTTP over proxy 2001-05-28 11:19:44 +00:00
Daniel Stenberg
915b10052c Removed references to the previous file format, added some tests about
the new format but there's still much more to be said and done
2001-05-23 15:05:43 +00:00
Daniel Stenberg
d3516810a7 adjusted to the new test case formats 2001-05-23 15:02:58 +00:00
Daniel Stenberg
68af9a222e Removed the former files using the old-style test case format, added the
new ones. Many more of the old ones must be "ported" to this new format
to make the test suite complete again.
2001-05-23 15:02:24 +00:00
Daniel Stenberg
58c3bdc1a4 new test case file format 2001-05-23 15:00:48 +00:00
Daniel Stenberg
72dec6cfec Added Andres' comments about field 2 in netscape cookie files 2001-05-23 13:04:19 +00:00
Daniel Stenberg
8dc9f4330c Andrs Garca's netscape cookie file parser fix 2001-05-23 09:26:45 +00:00
Daniel Stenberg
c77f77a1ce general autoconf and automake fixes 2001-05-22 21:17:58 +00:00
Daniel Stenberg
2966ef6661 store httpcode _before_ doing the FAILONERROR check so that getinfo works
afterwards (bug #426442)
2001-05-22 21:09:09 +00:00
Daniel Stenberg
93c53424c8 cleanup commit for new autoconf+automake+libtool versions 2001-05-22 18:16:24 +00:00
Daniel Stenberg
4a2812c5e8 fixes and improvments 2001-05-22 12:05:05 +00:00
Daniel Stenberg
4852a4930c turned newlines into DOS styles 2001-05-21 21:45:11 +00:00
Daniel Stenberg
b555ca5baa made it binary in CVS to maintain DOS newlines and turned those newlines
into the DOS kind!
2001-05-21 21:42:38 +00:00
Daniel Stenberg
4a6eaf1b95 Added text about the test case numbering 2001-05-21 13:40:54 +00:00
Daniel Stenberg
a8bc40fe4e doesn't run ssl tests if libcurl wasn't built with ssl support (and reports
about the libcurl SSL status)
2001-05-21 13:38:38 +00:00
Daniel Stenberg
1b9e26a287 added a lame double-check for libcrypto as otherwise it wouldn't get added
properly! (?) Anyone has any better solution then please step forward!
2001-05-21 13:33:03 +00:00
Daniel Stenberg
9f24645a5b Added test case 400, the first ftps:// one 2001-05-21 13:31:49 +00:00
Daniel Stenberg
441a957d57 ftps test case data 2001-05-21 13:31:05 +00:00
Daniel Stenberg
adc0edc44b slightly "hackish" approach to disable SSL during download if the connection
is a FTPS connection as the data transfer is then done unencrypted!
2001-05-21 13:30:01 +00:00
Daniel Stenberg
4836154cef this should not set a SSL path to LDFLAGS or CPPFLAGS unless it really needs
to
2001-05-18 14:42:41 +00:00
Daniel Stenberg
0058e87ed5 added some, removed some, moved around some. 2001-05-18 12:55:13 +00:00
Daniel Stenberg
23903306a7 nicer OpenSSL header check 2001-05-18 12:36:38 +00:00
Daniel Stenberg
49b9926d5a our internal strlcat() is now named Curl_strlcat() 2001-05-18 12:03:30 +00:00
Daniel Stenberg
6c50d2ee7d strlcat() is now Curl_strlcat() instead to prevent collisions when used with
other libs
2001-05-18 10:02:44 +00:00
Daniel Stenberg
9e8615ae1d strlcpy() turned static 2001-05-18 10:02:12 +00:00
Daniel Stenberg
bb51c20c8b Added #define CURLE_ALREADY_COMPLETE to not break compiles that use that
symbol, but libcurl will not return this ever
2001-05-16 14:45:50 +00:00
Daniel Stenberg
a84af986fd added pointer to the examples/getinmemory.c source code for paragraph
5.2 "How can I receive all data into a large memory chunk?"
2001-05-15 13:09:27 +00:00
Daniel Stenberg
3ab3be1b6e Added getinmemory.c 2001-05-15 13:08:23 +00:00
Daniel Stenberg
3ceb2bcbb9 this might actually compile too... 2001-05-15 13:04:53 +00:00
Daniel Stenberg
2457a31948 an example on how you can use the write callback to receive data in a memory
chunk
2001-05-15 13:03:53 +00:00
Daniel Stenberg
9e1e318691 We need -lpthread for the pthread example 2001-05-15 12:56:38 +00:00
Daniel Stenberg
e1132ecbe6 corrected 2001-05-15 12:55:35 +00:00
Daniel Stenberg
ccb92f1a8a Added Pawel A. Gajda 2001-05-15 11:00:29 +00:00
Daniel Stenberg
8526fa97ce Pawel A. Gajda fixed resumed transfers on persistent connections 2001-05-15 07:21:13 +00:00
Daniel Stenberg
f85c29aad8 Added the first https test: 300 2001-05-14 12:25:04 +00:00
Daniel Stenberg
4677f733b2 pid files fixes, ftp server already-running-but-no-control check 2001-05-14 12:09:47 +00:00
Daniel Stenberg
e82d2dc634 Jun-ichiro itojun Hagino fixed FTP PORT for IPv6-enabled libcurl 2001-05-14 11:29:47 +00:00
Daniel Stenberg
b56f1e5185 added a pointer to the download web page 2001-05-14 07:08:22 +00:00
Daniel Stenberg
c7c942861a Added tons of comments all over 2001-05-12 16:11:14 +00:00
Daniel Stenberg
a50fac0e63 multiple transfer path fixes, location fixes, resume download changes,
ssl peer verify fixes and more
2001-05-12 09:49:04 +00:00
Daniel Stenberg
e0f56897d5 CURLE_ALREADY_COMPLETE is removed
CURLE_SSL_PEER_CERTIFICATE is added
2001-05-12 09:37:51 +00:00
Daniel Stenberg
c7dbde9f3f Uses the Curl_SSLConnect() according to the new return type 2001-05-12 09:30:42 +00:00
Daniel Stenberg
8fd89d6b93 fixed Curl_SSLConnect() to return CURLcode errors, including the new error
code for peer certificate errors
2001-05-12 09:29:56 +00:00
Daniel Stenberg
632e951e14 changed wording to make it more obvious I don't continuously work on this. 2001-05-11 14:07:58 +00:00
Daniel Stenberg
a3a2d200fa two new FTP file transfer resume test cases added 2001-05-11 11:40:52 +00:00
Daniel Stenberg
4c2ca97d6d removed unused #ifdef'ed section 2001-05-11 11:38:42 +00:00
Daniel Stenberg
11f2464a22 when asking for a resumed FTP transfer, even though the entire file has
already been transfered no longer returns error but instead is OK. The
reasoning behind this is of course that no extra actions need to be taken
and it is as if a transfer had been successfully performed.
2001-05-11 11:38:13 +00:00
Daniel Stenberg
291075b12f checkheader() added to check headers+contents instead of the previous
strnequal() approach that really didn't follow the RFC properly
2001-05-11 07:52:58 +00:00
Daniel Stenberg
282939c6fe another multiple FTP transfer fix 2001-05-11 06:40:04 +00:00
Daniel Stenberg
fef1fc0d32 Ingo Wilken's redirect fixes 2001-05-11 06:10:48 +00:00
Daniel Stenberg
dc6da007ad Ingo Wilken's patch to support multiple spaces after "Location:" 2001-05-10 11:29:47 +00:00
Daniel Stenberg
7be8993f94 When re-using a connection, the path pointers were not setup properly so
that multiple FTP transfers were not possible
2001-05-10 09:31:48 +00:00
Daniel Stenberg
bad4c8967b added ftpsserver.pl stunnel.pm 2001-05-10 07:51:29 +00:00
Daniel Stenberg
4dbac041f1 removed some texts like "starting with version XXX" blabla 2001-05-08 12:39:40 +00:00
Daniel Stenberg
dd344b65f2 made clear that the cookie file format understood is Netscape _and_ Mozilla 2001-05-08 12:30:37 +00:00
Daniel Stenberg
5c25c7bbfa when getting a FTP file with NOBODY, we will no longer return error if
SIZE doesn't work, we just don't output any size info!
2001-05-08 12:10:14 +00:00
Daniel Stenberg
a6d9ccf66b Added stunnel.pem 2001-05-07 21:25:37 +00:00
Daniel Stenberg
89ba66e071 corrected the read-callback typecase since FILE * was replaced with void * 2001-05-07 12:38:28 +00:00
Daniel Stenberg
85631150ce fixed 'storefread' to not make a warning 2001-05-07 11:17:18 +00:00
Daniel Stenberg
3654bd1b56 7.7.3 2001-05-07 11:12:03 +00:00
Daniel Stenberg
237edbc9d8 changed FILE * to void * in all callbacks 2001-05-07 10:51:23 +00:00
Daniel Stenberg
4127903183 Added multithread.c 2001-05-04 09:35:55 +00:00
Daniel Stenberg
2ffc20dc7c example using multiple threads to get URLs 2001-05-04 09:35:43 +00:00
Daniel Stenberg
a2a446cb2f updated contributors list 2001-05-04 08:46:11 +00:00
Daniel Stenberg
9304055df5 'FILE *' changed to 'void *' in all callback functions 2001-05-04 07:47:11 +00:00
Daniel Stenberg
53e0c1b1a6 fixed the link to the OS/2 Patch for OpenSSL 2001-05-04 06:17:01 +00:00
Daniel Stenberg
4efa1e8e4c corrected bad use of the CURLOPT_HTTPPOST header 2001-05-03 14:24:37 +00:00
Daniel Stenberg
ecba113125 Cris changes 2001-05-03 11:09:00 +00:00
Daniel Stenberg
350c536f6c Cris Bailiff's fix to disable chunked transfers on re-used persistent
connections.
2001-05-03 10:53:01 +00:00
Daniel Stenberg
a33eb9881c Cris Bailiff's fix to never attempt to get the body of a 304-reply! 2001-05-03 10:45:39 +00:00
Daniel Stenberg
bbe8aa073e buildconf added, Sterling Hughes added that file 2001-05-03 09:13:53 +00:00
Daniel Stenberg
14521b418e useful script to run after updating from CVS 2001-05-03 09:12:53 +00:00
Daniel Stenberg
73982c65d2 fixed the EXTRA_DIST line 2001-05-03 09:10:07 +00:00
Daniel Stenberg
2eb94acb95 When Content-Length:0 is received, we now bail now and return success
directly after all the headers are received!
2001-04-27 18:03:44 +00:00
Daniel Stenberg
6a80fb3482 bugs, fixes and updates 2001-04-27 14:48:04 +00:00
Daniel Stenberg
26d4c80049 clarified and updated 2001-04-27 14:46:17 +00:00
Daniel Stenberg
3974f30ed4 improved treatment of "Content-Length: 0", which is done by having
maxdownload set to -1 when not used
2001-04-27 08:02:10 +00:00
Daniel Stenberg
44c246dbf2 new 2001-04-27 07:58:26 +00:00
Daniel Stenberg
ef07903a51 Curl_GetFTPResponse() is rewritten to read all incoming data in large
chunks, which makes it a lot faster and will make ftps work better...
2001-04-26 10:29:24 +00:00
Daniel Stenberg
a7dc45997f split curl and libcurl into two strings in the initial display 2001-04-26 08:32:12 +00:00
Daniel Stenberg
583c2e2f09 connection re-using didn't work on non-default ports when not using proxy
until now
2001-04-25 21:24:27 +00:00
Daniel Stenberg
90cce2ae3a added some verbose summary output stuff 2001-04-24 21:47:01 +00:00
Daniel Stenberg
775dc07eb5 no name no test 2001-04-24 21:46:37 +00:00
Daniel Stenberg
a652db18bd include debugmem for memory leak detection 2001-04-24 21:41:29 +00:00
Daniel Stenberg
48f3feed59 SSL based tests 2001-04-24 21:11:34 +00:00
Daniel Stenberg
4ddb3fbbf4 new tests, new server invoke system 2001-04-24 21:09:53 +00:00
Daniel Stenberg
cc872ebc19 fixed 2001-04-24 21:09:27 +00:00
Daniel Stenberg
ba46006896 stunnel and diff are added requirements 2001-04-24 21:09:12 +00:00
Daniel Stenberg
0b7e0638a9 on albert chin's comment I remade the fix to set '\0' instead of 0 since
they're chars
2001-04-24 06:12:07 +00:00
Daniel Stenberg
be49b01952 libcurl.5 replaces LIBCURL as main libcurl overview document 2001-04-23 12:37:27 +00:00
Daniel Stenberg
8d0c1d5495 minor rephrasing 2001-04-23 12:36:02 +00:00
Daniel Stenberg
2769a9ab0b form post, not just form 2001-04-23 11:57:50 +00:00
Daniel Stenberg
8ea5b5bbd0 clarified and extended with an example 2001-04-23 11:55:25 +00:00
Daniel Stenberg
0ce49cb7ed Added comment about where to find the HTML versions of the man pages 2001-04-23 11:42:24 +00:00
Daniel Stenberg
d802dfe86a Added curl_mprintf and curl_strequal in the list of "useful functions" 2001-04-23 11:40:53 +00:00
Daniel Stenberg
aabc0c08a1 curl_printf became curl_mprintf 2001-04-23 08:30:22 +00:00
Daniel Stenberg
476addb9c1 curl_printf is curl_mprintf now 2001-04-23 08:29:56 +00:00
Daniel Stenberg
37d7a198d5 Added zero termination, as the OpenSSL version string was written without
it!
2001-04-23 07:54:12 +00:00
Daniel Stenberg
16fe0c9be3 curl 7.7.2 2001-04-23 07:34:55 +00:00
Daniel Stenberg
f88ff705a4 borland fixes, broken host: for persistent connections 2001-04-23 07:27:12 +00:00
Daniel Stenberg
e83550f511 persistent is spelled with an 'e', not an 'a' 2001-04-23 07:09:15 +00:00
Daniel Stenberg
fde31f0988 no need to copy the name when re-using the connection, we already have the
same name in that buffer from the URL parsing!
2001-04-23 06:11:08 +00:00
Daniel Stenberg
d3090ac3f9 Rosimildo da Silva corrected them to build a proper lib and to use options
for multi-threading compiling
2001-04-22 17:39:04 +00:00
Daniel Stenberg
2cf26d4fb7 copy the name properly when re-using a connection 2001-04-22 16:47:55 +00:00
Daniel Stenberg
f470a131a6 added missing (new) man pages 2001-04-22 15:50:12 +00:00
Daniel Stenberg
04b20b7ed2 old krb4 fix for strlcat() prototype 2001-04-22 15:49:17 +00:00
Daniel Stenberg
ff4f4abe4b brand new 2001-04-22 15:48:05 +00:00
Daniel Stenberg
f4703aee2f removed done entries 2001-04-22 15:47:20 +00:00
Daniel Stenberg
4c485994db updated and spell checked 2001-04-22 15:45:27 +00:00
Daniel Stenberg
a921ee7b52 spell checked 2001-04-22 15:44:33 +00:00
Daniel Stenberg
f6d4a25f68 updated with the Java stuff and so 2001-04-22 15:44:13 +00:00
Daniel Stenberg
2dfd2c642d Added an examples section with examples I made up for the web page 2001-04-20 14:45:15 +00:00
Daniel Stenberg
a2072a1fd0 This is LIBCURL turned into man page format! 2001-04-20 14:44:55 +00:00
Daniel Stenberg
03fea9722c Cris Bailiff's 1.1.5 changes: Add latest CURLOPT_ and CURLINFO_ constants to
the constants list
2001-04-20 11:03:40 +00:00
Daniel Stenberg
a44a8cef99 Cris Bailiff's 1.1.4 changes: Fix case where curl_slists such as 'HTTPHEADERS'
need to be re-set over persistant requests
2001-04-20 06:49:58 +00:00
Daniel Stenberg
97ad165a63 minor corrections 2001-04-20 06:05:33 +00:00
Daniel Stenberg
a508e73a8d SM's real name is now used where he's credited 2001-04-20 06:00:00 +00:00
Daniel Stenberg
32f966b239 A Linus Nielsen Feltzing-patch that removes the decimals from the size
outputs...
2001-04-19 11:24:29 +00:00
Daniel Stenberg
60a43561e2 fixed an nroff syntax mistake 2001-04-19 11:19:54 +00:00
Daniel Stenberg
a91b7d461d Added a brief description of curl-config, mentioned that curl_* functions are
the only public ones
2001-04-19 10:31:23 +00:00
Daniel Stenberg
8755c44d40 Albert Chin's patch posted to the mailing list 19 Apr 2001 2001-04-19 06:01:48 +00:00
Daniel Stenberg
5dd1cb0614 added an include to build on ultrix 2001-04-18 14:06:47 +00:00
Daniel Stenberg
b34bee45ca confirmed install on ultrix 4.3a 2001-04-18 14:06:12 +00:00
Daniel Stenberg
e22fb3e7bc works! 2001-04-18 14:05:44 +00:00
Daniel Stenberg
6ea51f3cd7 Last two days' changes, loadsa 2001-04-18 14:05:18 +00:00
Daniel Stenberg
8e9f0a73d0 Georg Horn's updates, this is _also_ called 1.1.3 ! ;-) 2001-04-18 13:41:04 +00:00
Daniel Stenberg
80fbcdf2f2 Added curl-config.1 2001-04-18 13:16:57 +00:00
Daniel Stenberg
0fd9f64287 brand new command, brand new docs! 2001-04-18 13:16:34 +00:00
Daniel Stenberg
b6175ec792 Added contributors 2001-04-18 11:53:19 +00:00
Daniel Stenberg
1ee7f92ce4 configure sets variables that curl-config uses to display what features
that have been built-in
2001-04-18 09:28:55 +00:00
Daniel Stenberg
3fd65fb7d8 Remade resume stuff to keep data in the connectdata struct instead of the
main handle struct to work with persistant connections
2001-04-18 07:25:11 +00:00
Daniel Stenberg
ebcafe73b3 Cris Bailiff's and Georg Horn's big improvements 2001-04-18 06:51:30 +00:00
Daniel Stenberg
8274bee963 init the speed index variable between transfers 2001-04-17 15:00:17 +00:00
Daniel Stenberg
60aa975610 Frederic Lepied's ftp download resume fix 2001-04-17 13:21:13 +00:00
Daniel Stenberg
28a9108257 more intial fixes 2001-04-17 12:37:38 +00:00
Daniel Stenberg
d1b0b08ba0 Added curl-config as a script that now gets installed 2001-04-17 12:33:02 +00:00
Daniel Stenberg
cc7fc20251 libcurl version, not curl version 2001-04-17 12:32:37 +00:00
Daniel Stenberg
5ab751f5d0 Generates curl-config now 2001-04-17 12:27:59 +00:00
Daniel Stenberg
fb1ce5fd5b tiny tool for outputting curl config variables 2001-04-17 12:23:06 +00:00
Daniel Stenberg
fd8ea204c0 use GMT for the conditional timed gets (reported by Phil Karn) 2001-04-17 07:28:49 +00:00
Daniel Stenberg
b86674174a Added text about curl.haxx.se not being a good test target for people's
libcurl experiments...
2001-04-12 11:13:28 +00:00
Daniel Stenberg
69994f0114 we must fix SSL when IPv6 is enabled, since we can still connect to ipv4
sites and then SSL works perfectly
2001-04-12 06:16:20 +00:00
Daniel Stenberg
879c6c5711 calling curl_easy_perform() with no URL set, now returns an error as
early as possible
2001-04-11 14:14:28 +00:00
Daniel Stenberg
18f044f19d we don't use the HTTP_PROXY environment variable in uppercase anymore, since
it might become a security problem (Bugs item #415391)
2001-04-11 14:13:52 +00:00
Daniel Stenberg
d7b54eb835 now it works 2001-04-11 13:45:55 +00:00
Daniel Stenberg
5eafb69bdb minor updates, still crashes 2001-04-11 10:06:28 +00:00
Daniel Stenberg
a086e99bae added Linux hints 2001-04-11 10:03:14 +00:00
Daniel Stenberg
62056a644f oops, missed the shut-off non-blocking fix 2001-04-11 06:59:00 +00:00
Daniel Stenberg
b2362bf51c interfaces, windows non-blocking connect, progress meter fix and more 2001-04-11 06:51:43 +00:00
Daniel Stenberg
022099266e SM made the connection timeout work for windows boxes! 2001-04-11 06:41:54 +00:00
Daniel Stenberg
870cea2aea initial silly README 2001-04-10 15:41:36 +00:00
Daniel Stenberg
04c10e021c C header to java converter 2001-04-10 15:30:01 +00:00
Daniel Stenberg
d712a4e800 initial java interface commit: IT DOES NOT WORK 2001-04-10 15:29:32 +00:00
Daniel Stenberg
d9f989c8c8 Added CURLOPT_HEADERFUNCTION description 2001-04-10 07:38:59 +00:00
Daniel Stenberg
90bb87b40e setopt() works with the new CURLOPT_HEADERFUNCTION: 2001-04-10 06:51:25 +00:00
Daniel Stenberg
025fa762f6 Added new CURLOPT_HEADERFUNCTION callback for writing headers only 2001-04-10 06:49:32 +00:00
Daniel Stenberg
ac510ab6a4 corrected by SM to build better with openssl 2001-04-09 05:56:39 +00:00
Daniel Stenberg
65b286ca35 SM's updates 2001-04-09 05:55:58 +00:00
Daniel Stenberg
cc5c53454a formfree() fix, version display fixed, curl_escape() fix 2001-04-07 18:39:18 +00:00
Daniel Stenberg
f7874cad29 Andrs Garca pointed out a mistake with CURLOPT_EGDSOCKET 2001-04-07 18:36:22 +00:00
Daniel Stenberg
84e71e1c50 Andrs Garca fixed curl_escape() 2001-04-07 18:35:28 +00:00
Daniel Stenberg
88bb054e1d show openssl 0.9.6a properly 2001-04-06 08:48:42 +00:00
Daniel Stenberg
b054fbaebd NULL argument crashes this in 7.7.1 and before 2001-04-06 05:57:23 +00:00
Daniel Stenberg
53e3c225ee curl_formfree() can be called with a NULL argument 2001-04-06 05:52:23 +00:00
Daniel Stenberg
50a53d4eec 7.7.1 commit 2001-04-04 06:23:43 +00:00
Daniel Stenberg
6bd1ed034a bugfixed the Location: following that must've been bad since the persistant
connections were introduced
2001-04-03 13:37:53 +00:00
Daniel Stenberg
fa491ed910 - disabling port on absolute redirects is wrong
- removed #ifdefed code
2001-04-03 13:18:41 +00:00
Daniel Stenberg
66a1e3df69 two crashes removed 2001-04-03 12:37:48 +00:00
Daniel Stenberg
28497e7ee4 better error checks for failure conditions (based on Puneet Pawaia's reports) 2001-04-03 10:20:23 +00:00
Daniel Stenberg
87c7f403a9 Puneet Pawaia pointed out the lack of http_chunks in several places. 2001-04-03 08:57:06 +00:00
Daniel Stenberg
1a2c3acb3b elaborated more in CURLOPT_HTTPHEADER section 2001-03-30 08:43:52 +00:00
Daniel Stenberg
b54d752783 ftps:// added and the perl interfaces changed 2001-03-29 11:25:29 +00:00
Daniel Stenberg
b1328430c9 ftps:// support added 2001-03-29 08:16:55 +00:00
Daniel Stenberg
34efa74a59 Georg Horn's and my fixes to make it compile with 7.7 2001-03-29 06:45:04 +00:00
Daniel Stenberg
794d08a728 Georg Horn set -Wall 2001-03-29 06:44:34 +00:00
Daniel Stenberg
0abc999c4d Georg Horn's updates 2001-03-29 06:43:46 +00:00
Daniel Stenberg
3e65062be2 make sure the alarm is off when returning from curl_easy_perform() 2001-03-27 21:24:46 +00:00
Daniel Stenberg
45ffb16c2a Added a line about the new makefile example 2001-03-27 09:10:53 +00:00
Daniel Stenberg
0b8b0b7c86 Added Makefile.example as an example makefile that can build the example
source files (if edited slightly)
2001-03-27 09:09:09 +00:00
Daniel Stenberg
053bf49bd2 Added ftpget.c just to show that it is exactly as easy to get FTP files 2001-03-27 09:00:18 +00:00
Daniel Stenberg
8b08dfed38 no more ' as first letter of a row, and made the quotes match in the top
.BI line
2001-03-27 08:45:50 +00:00
Daniel Stenberg
ba3a3553dc Added some text to WRITEHEADER about the fact that libcurl will always write
complete header lines one-by-one to that file handle
2001-03-27 08:41:37 +00:00
Daniel Stenberg
6a26104724 7.7.1-beta1 2001-03-26 13:49:50 +00:00
Daniel Stenberg
8b35b89f4d persistant fix for http/1.0 2001-03-26 09:07:44 +00:00
Daniel Stenberg
31f9d4016d 'Connection: keep-alive' is now understood when sent by a HTTP/1.0 server
as an indication of a persistant connection
2001-03-26 06:19:11 +00:00
Daniel Stenberg
bb601731ea numerous corrections since the 7.7 release 2001-03-24 18:50:55 +00:00
Daniel Stenberg
9a85172896 Colin Watson's man patch as posted to debian bug tracker numer #90281 2001-03-24 18:28:43 +00:00
Daniel Stenberg
a0eb52bee1 two Qs added:
1.5 Who makes cURL?
 1.6 What do you get for making cURL?
2001-03-23 15:28:13 +00:00
Daniel Stenberg
6235a8d969 make should be $(MAKE) 2001-03-23 14:29:10 +00:00
Daniel Stenberg
0d6a87ed7a match the new never-read-body when doing HEAD 2001-03-23 14:26:23 +00:00
Daniel Stenberg
b6241b3c89 curl_setopt() should be curl_easy_setopt() 2001-03-23 09:07:04 +00:00
Daniel Stenberg
1e14f8d4c7 DONT TOUCH the data->url as it may point to read-only memory!!! 2001-03-23 08:24:47 +00:00
Daniel Stenberg
bc5954fe2d updates by SM nttp at iname.com 2001-03-23 08:16:24 +00:00
Daniel Stenberg
02f6894af5 now always stops reading a HEAD reply after all the headers have been returned
RFC 2616, section 9.4 says: "The HEAD method is identical to GET except that
the server MUST NOT return a message-body in the response."
2001-03-23 07:52:45 +00:00
Daniel Stenberg
76576cd1e2 ConnectionExists() wrongly returned TRUE for too many connections if proxy
was not used...
2001-03-23 07:46:14 +00:00
Daniel Stenberg
997672ba9a updated with the new don't-encode-already-encoded-data concept 2001-03-22 20:06:31 +00:00
Daniel Stenberg
ec1f42a154 Treat 302-redirects the same way we treat 303-redirects 2001-03-22 20:02:52 +00:00
Daniel Stenberg
aa1c3bb46d reset the follow location counter in Curl_perform() so that we can follow
new locations on the same connection that was previously followed on
2001-03-22 19:14:35 +00:00
Daniel Stenberg
95f0714ff8 brand new Curl_ prefixes on global symbols 2001-03-22 19:07:38 +00:00
Daniel Stenberg
c050619b36 made it use Curl_ prefixes on global symbols 2001-03-22 18:44:43 +00:00
Daniel Stenberg
58085dbbf6 Jim Drash suggested and I made it not encode what looks like an already
encoded letter (in curl_escape)
2001-03-22 18:06:08 +00:00
Daniel Stenberg
546572da04 7.7 commit 2001-03-22 17:21:07 +00:00
Daniel Stenberg
005536cc28 removed the duplicates! 2001-03-22 15:42:10 +00:00
Daniel Stenberg
3d5b6aa3b0 added escape and unescape 2001-03-22 11:53:12 +00:00
Daniel Stenberg
f8d883355d the new escape/unescape function setup 2001-03-22 11:40:58 +00:00
Daniel Stenberg
c23df41d83 (un)escape, configure hack, betas run fine 2001-03-22 11:24:21 +00:00
Daniel Stenberg
8e7b261984 added how to pronounce curl! ;-) 2001-03-22 11:23:48 +00:00
Daniel Stenberg
08e3d034ef don't mention explicit version 7.8
removed escape/unescape as they're now documented
2001-03-22 11:22:47 +00:00
Daniel Stenberg
2f869f89ff added escape and unescape man pages 2001-03-22 11:22:09 +00:00
Daniel Stenberg
0f310a5001 not exactly new, but documented for 7.7 2001-03-22 10:32:56 +00:00
Daniel Stenberg
ad1abee441 Andrs Garca's problems on the mailing list made me realize that we can't
allow this script to simply detect a gethostbyname_r() if it can't figure
out how to use it. From now on, this script will fail when that happens.
2001-03-22 08:51:24 +00:00
Daniel Stenberg
669709f80e GNUTLS is another new SSL library we can add support for. Anyone? 2001-03-20 10:13:47 +00:00
Daniel Stenberg
ea409d0374 7.7-beta5 commit 2001-03-19 08:42:00 +00:00
Daniel Stenberg
eaaa1a1fd4 test case 39 added, HTTP location and continue 2001-03-19 08:36:08 +00:00
Daniel Stenberg
78b4851da1 Added support for HTTP code 100 continue, as 8.2.3 in RFC2616 defines 2001-03-19 07:47:57 +00:00
Daniel Stenberg
38c47803dd detect if chunked transfers are aborted 2001-03-16 15:45:12 +00:00
Daniel Stenberg
455663ba5e corrected the close to sclose() so that the memdebug stuff works 2001-03-16 15:44:38 +00:00
Daniel Stenberg
efb5d9a403 new directories 2001-03-16 15:22:51 +00:00
Daniel Stenberg
b1a5208e6b removed the CURL_SEPARATORS define 2001-03-16 15:21:26 +00:00
Daniel Stenberg
e6dacd92ec re-generated with the memdebug.h include 2001-03-16 15:20:36 +00:00
Daniel Stenberg
952b3a2c0f added memdebug.h include 2001-03-16 15:19:36 +00:00
Daniel Stenberg
721f9bca84 moved to ../../php/examples/ 2001-03-16 13:45:42 +00:00
Daniel Stenberg
ad4d5fabf8 the PHP examples are moved 2001-03-16 13:44:57 +00:00
Daniel Stenberg
aa860990ad fix the new makefiles in php/ and perl/ 2001-03-16 13:35:45 +00:00
Daniel Stenberg
0fa9135d9f use perl in two ways 2001-03-16 13:35:11 +00:00
Daniel Stenberg
8f0114a4dd Short about the perl interface 2001-03-16 13:34:08 +00:00
Daniel Stenberg
5980c2977b filled in 2001-03-16 13:30:56 +00:00
Daniel Stenberg
19f8d71508 for the php examples 2001-03-16 13:29:57 +00:00
Daniel Stenberg
6f3bccd911 PHP examples 2001-03-16 13:28:11 +00:00
Daniel Stenberg
96f81a5c4a new PHP section 2001-03-16 13:27:42 +00:00
Daniel Stenberg
ca05d1b59c a perl script that can be used to mirror all curl archives 2001-03-16 13:10:42 +00:00
Daniel Stenberg
895dc5e530 Added README for releases 2001-03-16 13:09:21 +00:00
Daniel Stenberg
bcc6ca6fd1 Added to build proper releases 2001-03-16 13:09:05 +00:00
Daniel Stenberg
d538241a58 Georg Horn's Curl::easy interface for perl 2001-03-16 13:05:39 +00:00
Daniel Stenberg
71b4b2ffa9 moved to contrib/ 2001-03-16 13:05:18 +00:00
Daniel Stenberg
65b4a63f56 moved here from ../ 2001-03-16 13:04:57 +00:00
Daniel Stenberg
ecbee01f4b moved the documentation item to 7.8, it is rather important to have things
documented
2001-03-15 14:45:03 +00:00
Daniel Stenberg
34fed76a35 updated to have the windows builds instructions use the root Makefile that
is delivered with each source archive
2001-03-15 14:44:01 +00:00
Daniel Stenberg
0adf0cfde7 connection timeouts added 2001-03-15 14:38:54 +00:00
Daniel Stenberg
d6c456db85 added connect timeout support 2001-03-15 14:38:30 +00:00
Daniel Stenberg
36c88343d3 Added --connect-timeout support 2001-03-15 14:38:03 +00:00
Daniel Stenberg
2360e5ce12 Added CURLOPT_CONNECTTIMEOUT 2001-03-15 14:37:41 +00:00
Daniel Stenberg
d445eac162 connection timeout is now supported 2001-03-15 14:37:17 +00:00
Daniel Stenberg
e0a6d20e20 Jrn's win32-fix to make it work better 2001-03-15 12:34:40 +00:00
Daniel Stenberg
3bb979b897 corrected it, did I mention IPv6 with HTTP proxy? 2001-03-15 09:14:43 +00:00
Daniel Stenberg
010daec776 Put more concentrated unix install help already at the top, with a note that
you might need to be root to use 'make install'.
2001-03-15 08:38:15 +00:00
Daniel Stenberg
e2b0ad8429 added some text for -d that says it "emulates filling in HTML forms" as that
is what most people will use -d for
2001-03-14 19:48:29 +00:00
Daniel Stenberg
6eed95103a ipv6 adjustments 2001-03-14 18:26:54 +00:00
Daniel Stenberg
4eb2a165e8 removed a bunch of warnings for IPv6-compiles 2001-03-14 18:24:07 +00:00
Daniel Stenberg
b7fc1e45b5 now works with IPv6 and HTTP proxy 2001-03-14 18:18:02 +00:00
Daniel Stenberg
3395a2fa9e netrc fix 2001-03-14 16:59:49 +00:00
Daniel Stenberg
a564a54e21 hm, don't free the home dir and append the .netrc part properly 2001-03-14 16:12:47 +00:00
Daniel Stenberg
92186dc3d3 checks for a few functions and include files more for the new getpwuid()
stuff in lib/netrc.c
2001-03-14 16:05:31 +00:00
Daniel Stenberg
7bd6507eec uses getpwuid() to find user's home dir 2001-03-14 16:05:00 +00:00
Daniel Stenberg
d4cc810de3 added a missing \ 2001-03-14 14:35:35 +00:00
Daniel Stenberg
bea7bbee1b always append the incoming request to the server.input file, it allows
the mainscript to verify a whole series of requests
2001-03-14 14:26:56 +00:00
Daniel Stenberg
fe64570d5d updated to work with the modified http server 2001-03-14 14:26:16 +00:00
Daniel Stenberg
df6ad8d8d6 Added test case 38 2001-03-14 14:25:57 +00:00
Daniel Stenberg
f8e1fc32de Edin Kadribaic's bug report #408488 forced a rearrange of two struct fields
from urldata to connectdata, quite correctly.
2001-03-14 14:11:11 +00:00
Daniel Stenberg
8c6d56f1f9 Added the --egd-file and --random-file options 2001-03-14 11:47:55 +00:00
Daniel Stenberg
1841c8ee6a curl 7.7 beta 3 2001-03-14 11:25:44 +00:00
Daniel Stenberg
70793595fe removed the two unnecessary include files 2001-03-14 10:27:13 +00:00
Daniel Stenberg
28a8e1602d ssluse fixed, various win32 fixes 2001-03-14 10:21:52 +00:00
Daniel Stenberg
cce05b9138 Bjrn Stenberg corrected the silly '(void)data' usage when SSL is not
used
2001-03-14 10:15:42 +00:00
Daniel Stenberg
72a7fd4dc7 Jrn's updated file 2001-03-14 10:06:23 +00:00
Daniel Stenberg
9a6a476cf5 the URL escape/unescape functions are also public but undocumented 2001-03-14 08:59:34 +00:00
Daniel Stenberg
5d0efedd2d First Jrn's updates were applied, then
my take at removing the private functions from the list, then I renamed
the *str(n)equal functions...
2001-03-14 08:58:36 +00:00
Daniel Stenberg
a426818a78 no longer includes the curl/types.h and curl/easy.h include files
explicitly, as they're taken care of indirectly by curl/curl.h these
days.
2001-03-14 08:55:17 +00:00
Daniel Stenberg
bfe413d8bd increased the 'current' number for the interface 2001-03-14 08:54:18 +00:00
Daniel Stenberg
dbbd20646f Curl_str(n)equal renamed to curl_str(n)equal 2001-03-14 08:53:31 +00:00
Daniel Stenberg
b8fe4deb13 documented the undocumented public functions in libcurl 2001-03-14 08:51:04 +00:00
Daniel Stenberg
332a016e3c chunked bugfix, Jrn's fixes, the interface number increase 2001-03-14 08:49:11 +00:00
Daniel Stenberg
3738e4bdc0 The Curl_* prefixes are now changed for curl_* ones, as these two functions
are used externally and thus are public symbols.
2001-03-14 08:47:56 +00:00
Daniel Stenberg
3201d2dafa Jrn added "#define socklen_t int" 2001-03-14 08:28:54 +00:00
Daniel Stenberg
0a1e002ca4 Jrn fixed it to compile on win32 again 2001-03-14 08:28:19 +00:00
Daniel Stenberg
9195bb64d4 Jrn Hartroth added a set of files 2001-03-14 08:23:51 +00:00
Daniel Stenberg
11ee547a0e Jrn Hartroth fixed a bad #endif placement 2001-03-14 08:20:41 +00:00
Daniel Stenberg
147de35d41 re-added the default switch for weird states 2001-03-13 23:29:53 +00:00
Daniel Stenberg
e16e9b91ae removed the random seeding and persistant stuff, as both are already in
this version!
2001-03-13 22:31:56 +00:00
Daniel Stenberg
f9cde0646f Added a failf() error message when the chunked read returns failure 2001-03-13 22:20:14 +00:00
Daniel Stenberg
195233ed5c updated the chunked state-machine to deal with the trailing CRLF that comes
after the data part
2001-03-13 22:16:42 +00:00
Daniel Stenberg
048e654514 made 'X to Y' sequences not include X twice 2001-03-13 22:14:53 +00:00
Daniel Stenberg
dfbd45142d corrected the chunked format 2001-03-13 22:13:06 +00:00
Daniel Stenberg
ff681f7bfd 7.7 beta 2 fixes 2001-03-13 15:44:31 +00:00
Daniel Stenberg
60bbb64a81 EXTRA_DIST got too long, I shortened it now but we have to do something
else as it will grow a lot more...
2001-03-13 13:31:14 +00:00
Daniel Stenberg
c622f2bb4e failf() now respects the mute flag 2001-03-13 13:22:58 +00:00
Daniel Stenberg
cd59f13da6 Guenole Bescon's bug found on march 8 is added 2001-03-13 13:14:21 +00:00
Daniel Stenberg
11d718bf52 exchanged I and me to we and us in a lot of places
updated for persistant connections and 7.7
2001-03-13 11:47:30 +00:00
Daniel Stenberg
8e8846d876 Added test case 37, HTTP GET with name+password in the URL 2001-03-13 09:44:09 +00:00
Daniel Stenberg
7d562bb685 a whole new section on persitant connections and how they're treated
internally
2001-03-13 08:16:54 +00:00
Daniel Stenberg
20ddd35669 we speak HTTP 1.1 now
more braging about the portability
2001-03-13 08:16:25 +00:00
Daniel Stenberg
063f88cd14 close policies 2001-03-13 07:59:19 +00:00
Daniel Stenberg
87b0b7cab9 initial close policy support 2001-03-13 07:54:18 +00:00
Daniel Stenberg
70d0d9d4da Added 'created' to the connectdata struct to hold the creation date, to
be used for the close policy decision
2001-03-13 07:53:59 +00:00
Daniel Stenberg
4ae3bd71ea Curl_tvnow is now properly declared with (void) 2001-03-13 07:53:06 +00:00
Daniel Stenberg
a9390665b8 curl_getinfo is removed, not a public function 2001-03-13 07:46:19 +00:00
Daniel Stenberg
fb7a6e3423 added --random-file and --egd-file to the command line client 2001-03-12 16:02:29 +00:00
Daniel Stenberg
cc99e3f7de Added the two new seeding options 2001-03-12 15:52:18 +00:00
Daniel Stenberg
e6b40bb6ac two new random seed options for the ssl config struct 2001-03-12 15:47:41 +00:00
Daniel Stenberg
f2fd1b8856 two new random seed options: CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET 2001-03-12 15:47:17 +00:00
Daniel Stenberg
cb4efcf275 better chunked error detection 2001-03-12 15:29:04 +00:00
Daniel Stenberg
56a27d608a Added test case 36:
[HTTP GET with badly formatted chunked Transfer-Encoding]
2001-03-12 15:27:01 +00:00
Daniel Stenberg
46c9075eab updated the comment for the chunked reading 2001-03-12 15:21:11 +00:00
Daniel Stenberg
d95fa648e9 made it return illegal hex in case no hexadecimal digit was read when at
least one was expected
2001-03-12 15:20:35 +00:00
Daniel Stenberg
563ad213dc added an error code for illegal hex values in the chunked stream 2001-03-12 15:20:02 +00:00
Daniel Stenberg
0121d7d731 Added new libcurl options in include/curl/curl.h, they're documented in
curl_easy_setopt.3 and they're partly implemented in lib/url.c

Slowly, we're getting there...
2001-03-12 15:11:38 +00:00
Daniel Stenberg
8495fac1c5 Added options for the persistant support, they're also documented in
curl_easy_setopt.3 now
2001-03-12 15:06:29 +00:00
Daniel Stenberg
38c349f751 support for a few new libcurl 7.7 CURLOPT_* options added 2001-03-12 15:05:54 +00:00
Daniel Stenberg
542df800ab Added four new options that come with the new persitant support:
CURLOPT_MAXCONNECTS, CURLOPT_CLOSEPOLICY, CURLOPT_FRESH_CONNECT and
CURLOPT_FORBID_REUSE
2001-03-12 14:54:00 +00:00
Daniel Stenberg
3e88b1cac5 the client is adjusted to work with persistant curl handles, and *gee* it
seems to be working!!!
2001-03-12 13:59:38 +00:00
Daniel Stenberg
d774b10afb Added infof() calls for persistant connection info, we are very likely to
need these at least for debugging 7.7 and probably later as well...
2001-03-12 13:58:03 +00:00
Daniel Stenberg
b449b94393 moved the libcurl init call 2001-03-12 13:57:02 +00:00
Daniel Stenberg
a6cb9b08b2 persistant updates 2001-03-12 13:55:06 +00:00
Daniel Stenberg
440a3101d0 added a note about persitant connections through HTTP proxies 2001-03-12 13:54:46 +00:00
Daniel Stenberg
9778a5356b Added some persistant notes 2001-03-12 13:54:10 +00:00
Daniel Stenberg
de7dcdbc54 modified to make the curl client with persistant connection support do
correct
2001-03-12 13:47:07 +00:00
Daniel Stenberg
070968abbc include the failed test case numbers in the end summary 2001-03-12 13:46:23 +00:00
Daniel Stenberg
e97fc2aab5 Added description of the new test case ranges support 2001-03-12 12:58:57 +00:00
Daniel Stenberg
a23ac24192 made it support test case ranges on the command line, specified as
"X to Y", where X is smaller than Y.
2001-03-12 12:58:30 +00:00
Daniel Stenberg
9ee14644a7 adjusted to work with the HTTP 1.1-speaking libcurl 2001-03-12 12:45:12 +00:00
Daniel Stenberg
c576e114b9 output the protocol data to stderr when verbose is on 2001-03-12 12:44:44 +00:00
Daniel Stenberg
639a7982ba server problems,
libcurl *works* persistant over HTTP proxy!!!!
2001-03-12 10:18:01 +00:00
Daniel Stenberg
5bbe189420 modified Curl_disconnect() so that it unlinks itself from the data struct,
it saves me from more mistakes when the connectindex is -1 ... also, there's
no point in having its parent do it as all parents would do it anyway.
2001-03-12 10:13:42 +00:00
Daniel Stenberg
93ff159e32 split up the big printf() into several ones to never use strings longer
than 509 letters (as newer gcc warns on with -Wall)
2001-03-12 09:47:23 +00:00
Daniel Stenberg
8eb8a0a8e4 bugfix: don't use the connectindex if it is -1 2001-03-12 09:44:57 +00:00
Daniel Stenberg
a4af638867 added persistant connection details 2001-03-12 09:44:08 +00:00
Daniel Stenberg
75a9a87ec2 replaced I and my with we and us 2001-03-12 09:43:43 +00:00
Daniel Stenberg
b5ba011110 updated 2001-03-12 09:42:22 +00:00
Daniel Stenberg
e9b763ff05 use the new name and hostname even though an old connection is reused, since
we can re-use a proxy connection that actually has different host names on
the same connection
2001-03-09 16:50:08 +00:00
Daniel Stenberg
ac0bad2433 remake Host: for each connection and it'll work with proxies too 2001-03-09 16:48:18 +00:00
Daniel Stenberg
67d5c0a970 for HTTP/1.0 we default to non keep-alive connections, but when we get a
1.0-reply from a proxy we use and the Proxy-Connection: keep-alive header
is used, we switch it on and live happily ever after
2001-03-09 16:02:59 +00:00
Daniel Stenberg
580896d615 Added httpversion to the progress struct, we do read it, we can just as well
store it.
2001-03-09 15:58:36 +00:00
Daniel Stenberg
11693c0faa the socklen_t check is more involved now, but works on linux at least 2001-03-09 15:38:59 +00:00
Daniel Stenberg
26cd8eda4a Added socklen_t 2001-03-09 15:24:33 +00:00
Daniel Stenberg
8cd3f44040 added a check for socklen_t
removed the tiny/Makefile that was added accidentaly before
2001-03-09 15:21:00 +00:00
Daniel Stenberg
2b30bfc349 all comments for the former public "low level" interface have been removed
since they were out-of-date and not correct anymore.

moved around some struct fields
2001-03-09 15:19:42 +00:00
Daniel Stenberg
8ec4dba599 removed handles and states from the main structs
renamed prefixes from curl_ to Curl_
made persistant connections work with http proxies (at least partly)
2001-03-09 15:18:25 +00:00
Daniel Stenberg
1efec6572e curl_transfer became Curl_perform() to better match the public name and
use the correct prefix
2001-03-09 15:17:09 +00:00
Daniel Stenberg
781dd7a9bf prefix changes curl_ to Curl_
made it work (partly) with persistant connections for HTTP/1.0 replies
moved the 'newurl' struct field for Location: to the connectdata struct
2001-03-09 15:16:28 +00:00
Daniel Stenberg
beb8761b22 #include <string.h> removed a warning 2001-03-09 15:14:51 +00:00
Daniel Stenberg
071c7de9fe removed curl_read() and curl_write() - they weren't used and the public
"low leve" interface is dumped
2001-03-09 15:14:22 +00:00
Daniel Stenberg
3e7ebcd051 uses socklen_t now 2001-03-09 15:13:34 +00:00
Daniel Stenberg
c67952fc5c curl_ prefix modified to Curl_ 2001-03-09 15:13:11 +00:00
Daniel Stenberg
7d7c24f915 accept() and getsockname() now use socklen_t types, as that was just added
to configure
2001-03-09 15:12:22 +00:00
Daniel Stenberg
0dc8c4d451 use unsigned int hex to receive the hex digit in, caused a warning with
-Wall and a new gcc
2001-03-09 15:11:39 +00:00
Daniel Stenberg
9cf4434ae2 Modified to use Curl_* functions instead of curl_* ones 2001-03-09 15:10:58 +00:00
Daniel Stenberg
8ccd8b6dbc only generate maximum 509 characters in each string 2001-03-09 13:11:28 +00:00
Daniel Stenberg
b4f70aa2c8 version 7.7-beta1 2001-03-08 12:35:51 +00:00
Daniel Stenberg
f54a282ccc persistant adjusts 2001-03-08 12:32:03 +00:00
Daniel Stenberg
2a11bdc216 HTTP HEAD tests 2001-03-08 10:39:36 +00:00
Daniel Stenberg
5cd4c3ed24 return from transfer when all headers have been received and nobody is set,
as is the case when doing HEAD requests
2001-03-08 10:32:27 +00:00
Daniel Stenberg
147a673063 updated for persistant connections 2001-03-08 09:25:09 +00:00
Daniel Stenberg
9ce5827fc1 made it split the version number on - too to make 7.7-blabla make a better
version number define in the header file
2001-03-08 09:23:11 +00:00
Daniel Stenberg
97f1c93674 added lots of numbers for the error codes as they're often printed
and used
2001-03-08 09:04:43 +00:00
Daniel Stenberg
e61ceaf1bd clarified the 0001-files use a bit, I couldn't understand it myself! :-) 2001-03-08 08:33:17 +00:00
Daniel Stenberg
1118612249 Added test #34 - HTTP GET with chunked Transfer-Encoding 2001-03-08 08:30:35 +00:00
Daniel Stenberg
a23db7b7c7 "Transfer-Encoding: chunked" support added 2001-03-07 23:51:41 +00:00
Daniel Stenberg
f6b6dff46a added the http_chunks files 2001-03-07 23:50:00 +00:00
Daniel Stenberg
55b8ceac18 chunked transfer encoding support 2001-03-07 23:28:22 +00:00
Daniel Stenberg
bcf448ee32 connection timeout is in for 7.7 2001-03-07 23:24:23 +00:00
Daniel Stenberg
91e4da7ddb initial chunked transfer-encoding support 2001-03-07 17:12:12 +00:00
Daniel Stenberg
2873c18132 removed compiler warning if HAVE_RAND_STATUS is false 2001-03-07 17:08:20 +00:00
Daniel Stenberg
5dd0a8a63e Added persistant connections blurb even if it doesn't really work yet... 2001-03-06 14:37:37 +00:00
Daniel Stenberg
2103dc41f5 cleaned up for the 7.7 fixes 2001-03-06 12:50:42 +00:00
Daniel Stenberg
2ef13230cb new seeding stuff as mentioned by Albert Chin 2001-03-06 00:04:58 +00:00
Daniel Stenberg
9479ac6dda Added a persistant connection example 2001-03-05 16:56:10 +00:00
Daniel Stenberg
4e878eae79 updated to libcurl 7.7 conditions 2001-03-05 15:51:34 +00:00
Daniel Stenberg
1e8e90a220 mucho updated with new 7.7 concepts 2001-03-05 15:38:06 +00:00
Daniel Stenberg
fe95c7dc34 removed an incorrect comment 2001-03-05 14:52:23 +00:00
Daniel Stenberg
6dae34d5da all test cases run OK now (again) 2001-03-05 14:13:15 +00:00
Daniel Stenberg
36c621c9df more details on debugging with the test suite 2001-03-05 14:08:22 +00:00
Daniel Stenberg
1717963e3d show the ftp server invoke line when -d is used 2001-03-05 14:03:48 +00:00
Daniel Stenberg
4646a1ffa9 talks more on verbose 2001-03-05 14:03:20 +00:00
Daniel Stenberg
0cb4eba002 free the struct on done 2001-03-05 14:01:13 +00:00
Daniel Stenberg
5eba359b5d telnet without any static variables 2001-03-05 13:59:43 +00:00
Daniel Stenberg
07ce7539a8 set download size properly for HTTP downloads 2001-03-05 13:40:31 +00:00
Daniel Stenberg
c21f848c1c enable persistant connections by default 2001-03-05 13:40:08 +00:00
Daniel Stenberg
84e94fda8b remade FILE:// support to look more as the other protocols 2001-03-05 13:39:01 +00:00
Daniel Stenberg
ebd6897b10 runtests -g explained 2001-03-04 18:11:25 +00:00
Daniel Stenberg
5ab8a9d32f persistant support protocol updates 2001-03-04 18:07:13 +00:00
Daniel Stenberg
cf8704ccdf 7.7 alpha 2 commit 2001-03-04 16:34:20 +00:00
Daniel Stenberg
5543c2f11f Added include of easy.h to enable libcurl-using programs to *only* have to
include <curl/curl.h>
2001-03-04 15:32:44 +00:00
Daniel Stenberg
90ac37a683 Curl_http() could crash on connection re-use 2001-03-04 15:25:54 +00:00
Daniel Stenberg
dd893fd8a4 ipv6 fix for the 'port' no longer in urldata 2001-03-03 17:50:01 +00:00
Daniel Stenberg
834f079918 fixed for persistant stuff 2001-03-03 16:28:59 +00:00
Daniel Stenberg
2665c763df latest 2001-03-02 15:38:06 +00:00
Daniel Stenberg
d1cfbd51b5 remade the port number stuff so that following locations work and doing
intermixed HTTP and FTP persistant connections also work!
2001-03-02 15:34:15 +00:00
Daniel Stenberg
a3ba6b7a6a Added the disconnect proto 2001-03-02 07:44:22 +00:00
Daniel Stenberg
415d2e7cb7 removed the slist -functions from here
added the Curl_ftp_disconnect function for FTP-specific disconnects
2001-03-02 07:44:05 +00:00
Daniel Stenberg
af4451ec26 improved connections 2001-03-02 07:43:20 +00:00
Daniel Stenberg
7c6562683a extending connectdata 2001-03-02 07:42:35 +00:00
Daniel Stenberg
b6fa2f882c moved the slist-functions here from FTP since they're more generic than simply
for FTP-stuff
2001-03-02 07:42:11 +00:00
Daniel Stenberg
b6c5da337a strdup() takes a const char * now 2001-03-02 07:41:40 +00:00
Daniel Stenberg
9bc24e4876 cleanup better when connects fail 2001-02-28 14:03:46 +00:00
Daniel Stenberg
4af55809e4 added some infof() calls for persistant info 2001-02-22 23:51:17 +00:00
Daniel Stenberg
9c63fcf210 we only allocate the HTTP struct if we need to 2001-02-22 23:41:15 +00:00
Daniel Stenberg
1f17fb5f89 Now persistant connection download works thanks to the Content-Length taken
into account
2001-02-22 23:32:41 +00:00
Daniel Stenberg
584dbffe60 moved the dynamicly set pointers to the connectdata struct 2001-02-22 23:32:02 +00:00
Daniel Stenberg
1c6f6f6972 Douglas R. Horner's corrections applied 2001-02-22 22:33:49 +00:00
Daniel Stenberg
da06a6e7e3 IPv6-adjustments 2001-02-21 17:15:09 +00:00
Daniel Stenberg
46e0937263 corrected memory leaks when re-using connections 2001-02-20 17:46:35 +00:00
Daniel Stenberg
a1d6ad2610 multiple connection support initial commit 2001-02-20 17:35:51 +00:00
Daniel Stenberg
5f3d63ed5b bugfix 2001-02-20 13:58:56 +00:00
Daniel Stenberg
63b5748eb6 -g runs the specified test(s) with gdb! 2001-02-20 13:58:39 +00:00
Daniel Stenberg
e2590430c5 removed the #ifdef 2001-02-20 13:57:50 +00:00
Daniel Stenberg
ada9bc2b24 win32sockets.c is now added with winsock init/cleanup example functions 2001-02-20 13:56:38 +00:00
Daniel Stenberg
43da41e73e Added three tiny PHP examples 2001-02-19 13:39:21 +00:00
Daniel Stenberg
720fa45b56 blurb about different languages and environments added 2001-02-19 13:38:29 +00:00
Daniel Stenberg
7de874c438 just a few PHP/curl examples 2001-02-19 13:38:05 +00:00
Daniel Stenberg
2078c1a01a added two VC++ files for project stuff 2001-02-19 09:29:40 +00:00
Daniel Stenberg
f7a8909372 Made CURLOPT_POST no longer necessary when CURLOPT_POSTFIELDS is used 2001-02-19 09:29:19 +00:00
Daniel Stenberg
250df30e64 Moved a bunch of prototypes from curl.h here, they're no longer public and
I merely stuffed them here before I decide where they belong and if they
are to remain at all
2001-02-19 09:28:10 +00:00
Daniel Stenberg
b887cf7521 removed a bunch of "low level" functions that were never used and are about
to never become reality either
2001-02-19 09:27:12 +00:00
Daniel Stenberg
630e932091 MS VC++ stuff 2001-02-19 09:26:29 +00:00
Daniel Stenberg
cdabd67aa9 Bob Schader updated this 2001-02-19 09:26:01 +00:00
Daniel Stenberg
42e4f9d776 added stuff to the mailing list chapter 2001-02-19 09:25:18 +00:00
Daniel Stenberg
c111033595 removed --continue task (done)
added URL to the NTLM task
2001-02-16 13:41:34 +00:00
Daniel Stenberg
26d1aaccdf 2.2 - rephrased 2001-02-16 13:41:09 +00:00
Daniel Stenberg
ce95d2020f better english timeouted => timed out, as suggested by Larry Fahnoe 2001-02-13 21:57:04 +00:00
Daniel Stenberg
948c3b3aa9 7.6.1 commit 2001-02-13 13:37:14 +00:00
Daniel Stenberg
a140e5311d moved the protocol-specific free to allow easier multiple transfers 2001-02-13 13:34:16 +00:00
Daniel Stenberg
7686ac3f2c ftp response fix, netrc fix for non-http/ftp, https put research 2001-02-12 13:20:04 +00:00
Daniel Stenberg
54778134e4 corrected the prototype 2001-02-12 13:19:09 +00:00
Daniel Stenberg
c59baa06f0 Added 3.10 and a few minor updates 2001-02-12 10:05:09 +00:00
Daniel Stenberg
c107303ade very minor indentation fix 2001-02-12 08:22:19 +00:00
Daniel Stenberg
21b05afc99 removed getenv.h from the package as it was unused 2001-02-12 08:21:45 +00:00
Daniel Stenberg
eebcf7d4f5 Not used anymore 2001-02-09 07:33:58 +00:00
Daniel Stenberg
8d169dfadd Added a failf() call in the error-check just added 2001-02-09 07:14:28 +00:00
Daniel Stenberg
b12e334d83 if netrc is parsed and our host was found in there, set data->bits.user_passwd
unconditioanlly!
2001-02-08 13:53:13 +00:00
Daniel Stenberg
7e36c4437e today's FTP response check fix 2001-02-08 13:52:38 +00:00
Daniel Stenberg
3c7a80a275 postit.c was added as a HTML form file upload example 2001-02-08 08:26:54 +00:00
Daniel Stenberg
61e2a8108b 7.6.1-pre3 2001-02-07 09:49:06 +00:00
Daniel Stenberg
abb14de7e0 GetLine() didn't properly act on -1 lengths returned from Curl_read() 2001-02-07 09:31:03 +00:00
Daniel Stenberg
ccd57e58f6 Added #define ssize_t int since ssize_t doesn't seem to exist in normal
win32 systems
2001-02-07 09:23:54 +00:00
Daniel Stenberg
58d70db92e no longer #includes "getenv.h" 2001-02-07 08:36:23 +00:00
Daniel Stenberg
09f6fc22ed silly me, corrected the strlcat() to compile 2001-02-06 09:12:39 +00:00
Daniel Stenberg
833ce37cb9 new openbsd inspired implementation of strlcat() 2001-02-06 09:08:24 +00:00
Daniel Stenberg
07e7018564 nntp@iname.com's suggested fix to set the libpath 2001-02-06 07:14:44 +00:00
Daniel Stenberg
db70cd28b3 adjusted the IPv6 stuff to compile and build on Linux as well 2001-02-05 23:35:44 +00:00
Daniel Stenberg
f6e2bfd464 Jun-ichiro itojun Hagino's IPv6 adjustments 2001-02-05 23:04:44 +00:00
Daniel Stenberg
1ae5dab8fb Robert Weaver's VC experiences 2001-02-05 22:35:55 +00:00
Daniel Stenberg
c6355e6a43 Added a telnet section 2001-02-05 22:35:21 +00:00
Daniel Stenberg
7d26eb61fe Added a few more configure option explanations 2001-02-05 10:24:12 +00:00
Daniel Stenberg
8613ce377f the new getinfo() stuff and the cygwin patch 2001-02-04 20:10:52 +00:00
Daniel Stenberg
d6b94488a1 Added blurb about the win32 thing that precents a DLL from using a pointer
passed to it from user-space!
2001-02-04 20:10:02 +00:00
Daniel Stenberg
5d7b32d09f extended 5.5 2001-02-04 20:08:42 +00:00
Daniel Stenberg
ed16d30ea8 CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD documented 2001-02-04 20:07:53 +00:00
Daniel Stenberg
6f7c70fbbc CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD were
added as suggested by Bob Schader
2001-02-04 20:03:30 +00:00
Daniel Stenberg
9ab5d30e3b Ingo Ralf Blum made it compile with the newest cygwin 2001-02-04 19:00:27 +00:00
Daniel Stenberg
3b44a3df76 7.6.1-pre2 2001-02-01 07:59:46 +00:00
Daniel Stenberg
572c29a4a3 Added support for --enable-debug 2001-02-01 07:58:49 +00:00
Daniel Stenberg
9464c5430d Curl_read() uses ssize_t now 2001-01-31 15:06:56 +00:00
Daniel Stenberg
a14aaaf23f fixed up the telnet to work (using support from Linus Nielsen) 2001-01-31 15:05:44 +00:00
Daniel Stenberg
c41c5a0ef2 curl_read() and Curl_read() now have ssize_t in the last argument 2001-01-31 13:54:12 +00:00
Daniel Stenberg
c0c0283356 Added a check for a working getaddrinfo() that is required for the IPv6
to be considered enabled
2001-01-31 13:53:31 +00:00
Daniel Stenberg
1bcd3e601a changed order of the range and follow-location checks so that a range-request
will work even when following a Location:
2001-01-30 11:52:59 +00:00
Daniel Stenberg
e721f85c83 new test case 2001-01-29 16:04:19 +00:00
Daniel Stenberg
7015c61b86 removed upload.NN files after each test 2001-01-29 15:07:28 +00:00
Daniel Stenberg
30ec0af109 test case 33, HTTP PUT resume 2001-01-29 14:36:49 +00:00
Daniel Stenberg
f585b66af7 7.6-pre1 2001-01-29 11:36:08 +00:00
Daniel Stenberg
1b77c18430 Added an extra text about % in POST data after comments from Daniel Marell 2001-01-29 10:24:51 +00:00
Daniel Stenberg
bd0bd35771 s/to I/do I/ 2001-01-29 10:16:47 +00:00
Daniel Stenberg
368e3526ea Added "3.9 How to I use curl in PHP?" 2001-01-29 10:16:21 +00:00
Daniel Stenberg
1bbe407a4d The PUT stuff is never set! It is set with the UPLOAD... 2001-01-29 07:26:50 +00:00
Daniel Stenberg
513bc44421 HTTP PUT resume now sends Content-Range: headers as I believe the RFC2616
describes, Bob Schader's research seems to agree.
2001-01-29 07:24:20 +00:00
Daniel Stenberg
4cc76d1576 upload sets HTTP request to PUT for "HTTP upload" 2001-01-29 07:23:11 +00:00
Daniel Stenberg
6dc5c6ffc7 the keep-alive issue 2001-01-27 20:51:31 +00:00
Daniel Stenberg
c69c79dd04 bettersupport for HTTP return codes 300-399 2001-01-27 20:31:51 +00:00
Daniel Stenberg
7fca24b14b PUT resume things
progress meter modified for resume
POST/GET/Location adjustments
2001-01-27 20:25:52 +00:00
Daniel Stenberg
2fa0d3dd5f test case 31 and 32 were added 2001-01-27 20:02:11 +00:00
Daniel Stenberg
3a8210c975 Resume is now done with a Content-Range header instead of a Range header if
the request isn't GET. Presumably, this is how it should be made.
2001-01-27 18:57:07 +00:00
Daniel Stenberg
d69302202d minor output fix 2001-01-27 18:51:10 +00:00
Daniel Stenberg
227662d2ed Added -d that enables easier protocol/server debug overview (it invokes
the servers with their -v options)
2001-01-27 18:50:54 +00:00
Daniel Stenberg
3cb3d43913 added test 29 and 30, HTTP resume and partial download tests 2001-01-27 18:49:48 +00:00
Daniel Stenberg
c8a546c941 The progess meter title get an extra output when a resumed transfer is
taking place
2001-01-27 18:23:59 +00:00
Daniel Stenberg
62fec1d28d data->httpreq was not set properly 2001-01-27 17:58:15 +00:00
Daniel Stenberg
ac98c73b04 7.6 2001-01-27 16:16:54 +00:00
Daniel Stenberg
a145654394 http upload resume 2001-01-26 15:53:33 +00:00
Daniel Stenberg
e8382ba290 moved the symbols talk to the library part, updated slightly to match 2001-01-26 15:52:51 +00:00
Daniel Stenberg
fcb347d124 Added a httpreq field in the main struct so that there's one field to check
for what HTTP request that is being used. The old bit-style fields are still
in there as well.
2001-01-26 15:52:01 +00:00
Daniel Stenberg
c331ef02f9 The check for that content-range is received must only be made if we requested
GET resume. Other resumes are upload-wise and don't care about this header
in the download stream
2001-01-26 15:50:56 +00:00
Daniel Stenberg
3a3f632bf0 Made it possible to do "upload resume" over HTTP 2001-01-26 15:49:39 +00:00
Daniel Stenberg
68d7b6f871 7.6-pre4 2001-01-25 13:48:28 +00:00
Daniel Stenberg
c43a9d9068 timespent is now updated in every call to the progress meter update function 2001-01-25 12:32:40 +00:00
Daniel Stenberg
64e80091db Rick's and Jeff's stuff 2001-01-25 12:31:44 +00:00
Daniel Stenberg
4f255ffbeb make the configure script die if select() or socket() is missing 2001-01-25 12:28:46 +00:00
Daniel Stenberg
80d75b0eaf Added Ingo Ralf Blum 2001-01-25 12:28:10 +00:00
Daniel Stenberg
808c4020e6 use this function only once note added 2001-01-25 12:27:44 +00:00
Daniel Stenberg
149d6363b3 modified the Curl_ConnectHTTPProxyTunnel proto 2001-01-25 12:24:34 +00:00
Daniel Stenberg
30eab8ca51 moved curl_read() and curl_write() to sendf.c 2001-01-25 12:23:57 +00:00
Daniel Stenberg
e49a82b06c converted to use Curl_read() and Curl_write() 2001-01-25 12:23:12 +00:00
Daniel Stenberg
45fdb48189 uses Curl_read() and Curl_write()
unfolded telwrite() instead of being a separate single function
2001-01-25 12:22:17 +00:00
Daniel Stenberg
3fcc9677c4 use recv()/send() instead of read()/write() with sockets 2001-01-25 12:21:10 +00:00
Daniel Stenberg
1552bd9c8c sendf is now only Curl_sendf
Curl_write() and Curl_read() are here
2001-01-25 12:20:30 +00:00
Daniel Stenberg
939c0c5521 removed two compiler warnings 2001-01-25 12:19:36 +00:00
Daniel Stenberg
f0b9aefd2e Curl_read() and Curl_write() are now used for reading/writing sockets.
Some functions changed prototype due to this change as well.
2001-01-25 12:19:02 +00:00
Daniel Stenberg
11f3c51e8f Get get-ftp-response function is now using Curl_read() for reading from a
socket. Curl_ConnectHTTPProxyTunnel changed prototype.
2001-01-25 12:17:07 +00:00
Daniel Stenberg
1a329b98a3 replaced sendf() calls with Curl_sendf() 2001-01-25 12:13:35 +00:00
Daniel Stenberg
29bcba9a90 Ingo Ralf Blum's cygwin fixes 2001-01-24 14:44:05 +00:00
Daniel Stenberg
1716dbb68a Robert Weaver's win32 getenv fix, my added comments in some files 2001-01-24 14:04:47 +00:00
Daniel Stenberg
16ecfcf62c Added Robert Weaver as contributor 2001-01-24 14:04:14 +00:00
Daniel Stenberg
8bafc3692d fixed the comment for 'path' 2001-01-24 14:03:48 +00:00
Daniel Stenberg
8a75120568 added comments all over 2001-01-24 12:32:34 +00:00
Daniel Stenberg
3d96ee7423 extended the gname field one byte to avoid a possible overflow
added lots of explaining comments
2001-01-24 12:10:10 +00:00
Daniel Stenberg
b3dbdfa306 Robert Weaver's fix 2001-01-24 09:01:32 +00:00
Daniel Stenberg
25bad589ba generated by autoheader 2001-01-23 13:00:43 +00:00
Daniel Stenberg
0b6cd75004 ipv6 adjustments 2001-01-23 10:29:16 +00:00
Daniel Stenberg
7872cc131a Enabled support for IPv6-style IP-addresses if ENABLE_IPV6 is set. If it isn't,
curl will return an error when such an address is used.
2001-01-23 10:21:30 +00:00
Daniel Stenberg
210aa4371c big reorg to make it not exit when it fails, but instead just not do any
globbing, it makes IPv6 support easier and smoother to add.
2001-01-23 10:14:43 +00:00
Daniel Stenberg
6f438bc8fb Added 'ipv6 enabled' for ipv6 compiled versions 2001-01-23 08:16:59 +00:00
Daniel Stenberg
65840f1fd1 Added simple IPv6 recognition support 2001-01-22 23:54:54 +00:00
Daniel Stenberg
5fc492e5c6 Bjrn's progress meter fix, new test cases and ftpserver.pl patch 2001-01-22 16:25:55 +00:00
Daniel Stenberg
abcd1e7d5a Bjrn Stenberg's patch for making the progress meter betterlooking 2001-01-22 16:21:05 +00:00
Daniel Stenberg
6429c378a2 the custom reply engine was not inited properly 2001-01-22 16:16:18 +00:00
Daniel Stenberg
d830f10417 test case 121 2001-01-22 16:05:12 +00:00
Daniel Stenberg
3d6fcbf97b Added test case 120, ftp with '-Q -' 2001-01-22 16:00:28 +00:00
Daniel Stenberg
609be218c2 Removed the deprecated -c and -t from the --help output. 2001-01-22 10:09:04 +00:00
Daniel Stenberg
41084e57ca Added 5.5 the CURLOPT_FILE problem on win32, DeYoung provided it! 2001-01-22 08:42:00 +00:00
Daniel Stenberg
9afab85105 Added -g/--globoff description 2001-01-19 12:24:46 +00:00
Daniel Stenberg
7822233964 Made the complaint on free-twice errors a lot better 2001-01-19 12:20:30 +00:00
Daniel Stenberg
022315089b removed URL length restrictions, added a test case 2001-01-19 12:20:02 +00:00
Daniel Stenberg
faa5c14aee No more URL length restrictions 2001-01-19 12:15:23 +00:00
Daniel Stenberg
3dd886955b removed MAX_URL_LENGTH, there is no longer any length restrictions on URLs
anywhere within libcurl
2001-01-19 12:14:55 +00:00
Daniel Stenberg
c2dbf21459 corrected url memory handling with --globoff 2001-01-19 12:14:09 +00:00
Daniel Stenberg
133eb220b9 Added files for test case 28 2001-01-19 12:13:37 +00:00
Daniel Stenberg
c5796d9e39 --globoff test case 2001-01-19 12:12:54 +00:00
Daniel Stenberg
d80f87554c version 7.6-pre3 2001-01-19 09:38:48 +00:00
Daniel Stenberg
c1d37470f6 spelling error FPL should be GPL 2001-01-19 09:38:29 +00:00
Daniel Stenberg
9c695393b2 edited the portable code section 2001-01-19 09:37:39 +00:00
Daniel Stenberg
444024ea14 brought up-to-date and extended 2001-01-17 14:17:49 +00:00
Daniel Stenberg
afcd933b4c Transfer and file renaming 2001-01-17 14:17:26 +00:00
Daniel Stenberg
ae0a6835bd Transfer is now Curl_Tranfer() and transfer.h is used instead of highlevel.h
and download.h
2001-01-17 13:23:01 +00:00
Daniel Stenberg
f2f11be8ba download.[ch] is renamed to transfer.[ch], highlevel.[ch] is history 2001-01-17 13:22:27 +00:00
Daniel Stenberg
e09eda9c7c download and highlevel are replaced with transfer 2001-01-17 13:19:01 +00:00
Daniel Stenberg
c6877a414e clarified that vcvars32.bat is not part of the curl package 2001-01-17 08:24:29 +00:00
Daniel Stenberg
a3eb91ffb1 shortened the "what is libcurl" text 2001-01-15 14:59:07 +00:00
Daniel Stenberg
12708473a6 Added a few more similar tools 2001-01-15 12:12:36 +00:00
Daniel Stenberg
9012f8cdb3 removed an old reference to previous license conditions 2001-01-15 10:28:41 +00:00
Daniel Stenberg
e26ee09586 4.2 and 4.3 were updated 2001-01-15 10:26:37 +00:00
Daniel Stenberg
7d09e51162 TELNET was missing in the basic initial description! Updated the language
in the thread-safe question 5.1 to be more clear.
2001-01-11 12:52:07 +00:00
Daniel Stenberg
18ebde6960 I successfully compiled on built curl for StrongARM NetBSD
Added other known platforms
Added the faked autoconf and autoheader trick posted about recently
2001-01-11 12:33:26 +00:00
Daniel Stenberg
b0c0e8d815 7.6-pre2 2001-01-11 09:29:30 +00:00
Daniel Stenberg
16502d7d15 -g added, no more space requirements between short options and their parameters 2001-01-11 08:02:07 +00:00
Daniel Stenberg
ce05deece8 Added -g, fixed so that short options worked again. My last "merged"fix did
screw a few things up.
2001-01-11 08:01:24 +00:00
Daniel Stenberg
b77e2528e7 made short options and their parmaters possible to specify without space
separation
2001-01-10 23:47:08 +00:00
Daniel Stenberg
27f8cf6dfc made "short options" possible to specify -m20 as well as -m 200. 2001-01-10 23:42:03 +00:00
Daniel Stenberg
f5aa7f64bd added missing newlines to two infof() functions about document dates 2001-01-10 22:46:26 +00:00
Daniel Stenberg
44254c4945 getpass_r() fix for SCO (hopefully) 2001-01-10 11:42:00 +00:00
Daniel Stenberg
a9ea507c6a version 7.6-pre1 2001-01-09 12:25:32 +00:00
Daniel Stenberg
b137d5ec23 bugfix for when more -o than URLs is used 2001-01-09 12:25:14 +00:00
Daniel Stenberg
4792eee5d0 multiple URL adjustments 2001-01-09 12:24:49 +00:00
Daniel Stenberg
a84625eca6 Added two tests for multiple URLs (26 + 27) 2001-01-09 12:24:08 +00:00
Daniel Stenberg
19d3fd1185 Loic's fix that removes the % from the instructions in the bottom 2001-01-09 10:09:39 +00:00
Daniel Stenberg
a9be9bc7f5 Additional "docs" about 'make rpms' added by Loic 2001-01-09 10:09:13 +00:00
Daniel Stenberg
e8b99d21e5 Added the curl source-header 2001-01-09 07:41:04 +00:00
Daniel Stenberg
f6c57990ee removed FILES from the RPM 2001-01-08 23:35:45 +00:00
Daniel Stenberg
370d7f7527 Added source header. Made the prototype not being set if HAVE_GETPASS_R is
set, as those systems are likely to have it already set in a system header
and this prototype has proven to cause problems on SCO systems.
2001-01-08 22:30:30 +00:00
Daniel Stenberg
7d38692c4f Added Loic Dachary as a contributor after his major makefile session! 2001-01-08 22:29:31 +00:00
Daniel Stenberg
a997d60304 Loic Dachary's updates to get 'make distcheck' work, including running the
test suite
2001-01-08 22:18:30 +00:00
Daniel Stenberg
ff8fb8cdb0 krb4.c header file, no source header (yet) 2001-01-08 22:02:23 +00:00
Daniel Stenberg
b915ca68f9 'make distcheck' works now 2001-01-08 17:38:23 +00:00
Daniel Stenberg
703fc264f0 Had to add this to get 'make distcheck' to run! 2001-01-08 17:28:53 +00:00
Daniel Stenberg
19d92834ed corrected 2001-01-08 16:32:36 +00:00
Daniel Stenberg
9ade752fa7 distcheck fixes 2001-01-08 16:31:29 +00:00
Daniel Stenberg
e8a5f3026f Added mprintf #include 2001-01-08 16:22:55 +00:00
Daniel Stenberg
2cac4a9c72 better cleanup when existing due to bad usage 2001-01-08 15:02:58 +00:00
Daniel Stenberg
39e939a507 corrected the separator when using URL globbing 2001-01-08 14:48:34 +00:00
Daniel Stenberg
803005892c mostly a dummy 2001-01-08 14:36:34 +00:00
Daniel Stenberg
08cfdf909e use .spec.in files instead of plain .spec files 2001-01-08 13:42:18 +00:00
Daniel Stenberg
434ce48016 removed multiple URL, we do that now! 2001-01-08 13:40:26 +00:00
Daniel Stenberg
10051e6916 generated file 2001-01-08 13:39:49 +00:00
Daniel Stenberg
d54cdf294b adjusted to work with automake 'make dist' 2001-01-08 13:39:21 +00:00
Daniel Stenberg
2e342d5d9b we're now using automake to build archives, this file is obsolete 2001-01-08 12:58:27 +00:00
Daniel Stenberg
fe84071e80 adjusted to use 'make dist' when building the package 2001-01-08 12:57:38 +00:00
Daniel Stenberg
044ca343ad Loic Dachary's makefile/dist/rpm fixes 2001-01-08 10:00:14 +00:00
Daniel Stenberg
f59ea9adb3 krb4 fix, big symbol renaming action, multiple URL support in the client 2001-01-08 07:45:43 +00:00
Daniel Stenberg
0cec4ba6bf generated 2001-01-08 07:42:35 +00:00
Daniel Stenberg
14ca732a8f Multiple URL support added 2001-01-08 07:37:44 +00:00
Daniel Stenberg
53c27c7722 generated file, don't CVS it 2001-01-08 07:37:13 +00:00
Daniel Stenberg
c2f5b71dc9 multiple uses of -d was wrong documented 2001-01-05 13:44:53 +00:00
Daniel Stenberg
6403257886 renamed Curl_ to curl_ for the printf() prefixes 2001-01-05 12:19:42 +00:00
Daniel Stenberg
4031104404 Internal symbols that aren't static are now prefixed with 'Curl_' 2001-01-05 10:11:41 +00:00
Daniel Stenberg
9f9cac7402 release commit 2001-01-05 06:30:18 +00:00
Daniel Stenberg
06730bc905 README.libcurl is renamed to LIBCURL 2001-01-04 12:44:34 +00:00
Daniel Stenberg
0d181b596b license updates 2001-01-04 12:43:53 +00:00
Daniel Stenberg
b60f1b1d17 corrected the license section and added a piece about doing patches against
recent versions of the source
2001-01-04 12:43:35 +00:00
Daniel Stenberg
4d1706798f Added Makefile.dist 2001-01-04 12:39:00 +00:00
Daniel Stenberg
4ac48317cf Things to explain to people who get the sources from the CVS repository 2001-01-04 12:36:56 +00:00
Daniel Stenberg
ed8dbf4ac2 updated license text in headers 2001-01-04 12:27:04 +00:00
Daniel Stenberg
97f43e98e7 Cut out all changes from 1999 and earlier. They're now in the CHANGES.0 file
that is only present in the CVS and won't be included in release archives.
2001-01-04 10:46:32 +00:00
Daniel Stenberg
f76ef1fb67 Changes from 1999 and earlier 2001-01-04 10:45:41 +00:00
Daniel Stenberg
3bcdfd5cb4 new header 2001-01-04 10:37:07 +00:00
Daniel Stenberg
7ce518701b filled in info what happens if the same options are used multiple times 2001-01-04 10:34:05 +00:00
Daniel Stenberg
10272550b6 new license files 2001-01-04 10:31:55 +00:00
Daniel Stenberg
784f57f9eb configure now finds the correct version number even if invoked from outside
the source-tree
2001-01-04 10:28:47 +00:00
Daniel Stenberg
24dee483e9 dual-license fix 2001-01-03 09:29:33 +00:00
Daniel Stenberg
887e728b7d cleanup-commit 2001-01-03 09:13:07 +00:00
Daniel Stenberg
c03e0074c6 ftp commands are now sent single-write() 2001-01-03 09:07:59 +00:00
Daniel Stenberg
0d12c56738 Added -i to allow ingore-patterns to get added 2001-01-03 08:35:16 +00:00
Daniel Stenberg
880208c5b2 only add good links as root links
don't break the loop on root link errors
2001-01-03 08:18:59 +00:00
Daniel Stenberg
f4acbed214 ftpsendf() is remade to send the entire command in one write(), as some
firewalls (like FW-1) seems to dislike split-up writes at times...
2000-12-30 13:12:30 +00:00
Daniel Stenberg
910fc8522a Added '5.4 Does libcurl do Winsock initing on win32 systems?' 2000-12-30 11:48:51 +00:00
Daniel Stenberg
6d90be0757 multi doc lib support
SSL session id support
2000-12-19 14:39:16 +00:00
Daniel Stenberg
3d8bb1c27a include unistd.h if present to prevent compiler warnings on close() 2000-12-19 13:35:23 +00:00
Daniel Stenberg
1c8121a89e removed debug output 2000-12-19 13:34:55 +00:00
Daniel Stenberg
0db48a8109 analyzes fopen() leaks as well 2000-12-19 13:32:30 +00:00
Daniel Stenberg
5594741acb Added fopen() and fclose() leak tracking 2000-12-19 13:23:54 +00:00
Daniel Stenberg
cbaeed7232 updated email and web site 2000-12-19 13:09:23 +00:00
Daniel Stenberg
6d7587d327 configure fix, two -O fixes 2000-12-19 13:08:04 +00:00
Daniel Stenberg
9ee94b3d84 fixed a leaked file descriptor when PORT failed 2000-12-19 09:06:36 +00:00
Daniel Stenberg
2c100371d2 NTLM details added 2000-12-19 07:30:51 +00:00
Daniel Stenberg
184ad46a27 fixed accept() for memory debugging 2000-12-18 16:13:37 +00:00
Daniel Stenberg
74d35416a2 changed the return code checker in the quote command send to only fail
on >= 400 errors
2000-12-16 10:36:08 +00:00
Daniel Stenberg
2fff6a4b0e Added Kermit and link 2000-12-16 10:25:10 +00:00
Daniel Stenberg
bf43b49a20 added socket() / sclose() checks to the memdebug system 2000-12-14 15:56:59 +00:00
Daniel Stenberg
6ad9bd8022 crawls through a whole site and verifies links 2000-12-14 12:19:57 +00:00
Daniel Stenberg
ec5ac82cfe How do a fetch multiple files with libcurl? 2000-12-14 08:37:09 +00:00
Daniel Stenberg
76ac228e44 added include stdio.h for the FILE 2000-12-14 08:34:47 +00:00
Daniel Stenberg
b0828267bc Added a few related RFCs 2000-12-12 13:10:45 +00:00
Daniel Stenberg
9c10cb4684 removed the config file entry as that has been much improved lately 2000-12-12 10:14:31 +00:00
Daniel Stenberg
3d8c4ce526 points to the curl local copy of the netscape cookie spec
points to the development site for wget
reworded some RFC references so that they turn up as links on the converted
web page better
2000-12-12 10:05:49 +00:00
Daniel Stenberg
ec420c62d9 fixed a strdup(NULL) error 2000-12-12 09:30:52 +00:00
Daniel Stenberg
5d44f00201 Francois Petitjean's solaris core dump fix 2000-12-12 08:48:39 +00:00
Daniel Stenberg
cddeb939ed updated the latest added features 2000-12-11 15:35:57 +00:00
Daniel Stenberg
45cf0cf3ec unix style newlines only 2000-12-11 08:16:25 +00:00
Daniel Stenberg
ff7729e2bc unix-style newlines 2000-12-11 08:15:22 +00:00
Daniel Stenberg
7dcda6a370 unix style newlines 2000-12-11 08:14:34 +00:00
Daniel Stenberg
dde277d86a Albert Chin-A-Young fixed the SSL option to use LDFLAGS properly 2000-12-11 07:38:47 +00:00
Daniel Stenberg
a5146c7297 fixed CURLOPT_COOKIE and added CURLOPT_CRLF 2000-12-08 17:25:24 +00:00
Daniel Stenberg
69abefc936 Added SA_RESTART since (some) HPUX doesn't have that define and it doesn't
need it
2000-12-07 09:09:26 +00:00
Daniel Stenberg
dad2317e6e post 7.5 fixes 2000-12-07 09:08:20 +00:00
Daniel Stenberg
22d8aa37e0 urlglob fix to prevent crashing when -o path is longer than url 2000-12-06 10:10:31 +00:00
Daniel Stenberg
160d2a30db Added the borland makefiles 2000-12-05 13:47:30 +00:00
Daniel Stenberg
cb1842cb52 uses the PERL variable configure digs up 2000-12-05 09:15:44 +00:00
Daniel Stenberg
6ced1ba615 changed third argument to size_t to match SCO prototype 2000-12-05 08:04:04 +00:00
Daniel Stenberg
54e46e199c Paul Marquis fixed a 7.4.2-dependency 2000-12-04 14:59:58 +00:00
Daniel Stenberg
ca8196a4dc Jrn fixed a multiple URL output bug 2000-12-04 12:21:18 +00:00
Daniel Stenberg
52707f9590 7.5-commit 2000-12-04 09:44:57 +00:00
Daniel Stenberg
be2369ed14 Craig Davison updated and made it work again! 2000-12-01 07:02:26 +00:00
Daniel Stenberg
76af68e8ab Craig Davison fixed the VC++ lines 2000-12-01 07:01:14 +00:00
Daniel Stenberg
421fccb12a Added -version-info and lots of info 2000-11-30 22:22:08 +00:00
Daniel Stenberg
173f12db68 added a typecast to shut up a VC++ warning when converting from long
to unsigned short
2000-11-30 21:59:51 +00:00
Daniel Stenberg
983e3ae8c5 Craig Davison updated this 2000-11-30 21:54:00 +00:00
Daniel Stenberg
62213e529c README.curl is now MANUAL 2000-11-30 08:08:49 +00:00
Daniel Stenberg
ea3b6914cc Added a small note about referer needing to be complete to comply to the
HTTP spec
2000-11-30 08:08:23 +00:00
Daniel Stenberg
c8cd35e640 Includes MANUAL instead of README.curl now 2000-11-30 07:56:32 +00:00
Daniel Stenberg
706f5e1a5d README.curl is renamed to MANUAL 2000-11-30 07:55:30 +00:00
Daniel Stenberg
db7d772d3e removed #if 0 sections 2000-11-29 08:19:23 +00:00
Daniel Stenberg
64761bc786 removed #if 0 section 2000-11-29 08:17:12 +00:00
Daniel Stenberg
9980568f42 removed '#if 0' sections 2000-11-29 08:16:27 +00:00
Daniel Stenberg
05a1910968 I'd love to see test cases with submitted patches... 2000-11-29 07:48:14 +00:00
Daniel Stenberg
a5217dd10e minor things about the test suite added 2000-11-29 07:47:51 +00:00
Daniel Stenberg
0d7ba0ec61 now counts all test cases and presents a counter at the end 2000-11-28 12:49:39 +00:00
Daniel Stenberg
b2f0ca8a43 maxredirs 2000-11-28 12:45:20 +00:00
Daniel Stenberg
a00bb13766 max-redirs test case data 2000-11-28 09:42:15 +00:00
Daniel Stenberg
7c7923761d free the URL on redirections, this was a previous memory leak 2000-11-28 09:41:01 +00:00
Daniel Stenberg
e9b69bc757 added maxredirs 2000-11-28 09:11:24 +00:00
Daniel Stenberg
2aaae10fe8 Added max-redirs support (James Griffiths' patch) 2000-11-28 09:10:43 +00:00
Daniel Stenberg
6bd75ab840 added maxredirs, moved CURL_PROGRESS* defines to src/main.c 2000-11-28 09:10:04 +00:00
Daniel Stenberg
b8f7d94ef1 James Griffiths' max-redirs fix 2000-11-28 09:05:47 +00:00
Daniel Stenberg
d4cd079b9c Added tests/ftpserver.pl 2000-11-27 15:11:25 +00:00
Daniel Stenberg
013770a7e2 I rearranged it and added 'make test' 2000-11-27 13:39:11 +00:00
Daniel Stenberg
f4c26ddb6a spell check 2000-11-27 13:32:11 +00:00
Daniel Stenberg
9f77434c3a modified for ftp custom commands 2000-11-27 12:53:50 +00:00
Daniel Stenberg
989ff585b1 allows simple custom modifications for single test cases 2000-11-27 12:53:32 +00:00
Daniel Stenberg
f589c1c024 Added the ftpdN.txt file 2000-11-27 12:53:05 +00:00
Daniel Stenberg
e86f3b9144 ftp graceful error detection check data 2000-11-27 12:52:36 +00:00
Daniel Stenberg
79a84d20f2 Added the memdebug include file 2000-11-27 12:04:51 +00:00
Daniel Stenberg
20801181b2 file:// test data 2000-11-27 11:54:35 +00:00
Daniel Stenberg
3723c52057 if the server doesn't output a logfile, the protocol file is not compared
with it! This makes tests without server (like for file://) smarter.
2000-11-27 11:53:50 +00:00
Daniel Stenberg
0e78911ce3 modified the --help output to have the passwords within [brackets] as they
are optional...
2000-11-27 10:24:08 +00:00
Daniel Stenberg
b7a5fb1794 added the new FILETIME stuff 2000-11-22 14:57:58 +00:00
Daniel Stenberg
6f4f3c79b6 7.5-pre3 commit 2000-11-22 14:27:47 +00:00
Daniel Stenberg
593df2f18a multiple URL support? forked? 2000-11-22 14:18:30 +00:00
Daniel Stenberg
fde82cd4e0 adjusted to modified FTP behaviour 2000-11-22 14:15:46 +00:00
Daniel Stenberg
801626de19 Added a curl-target to make it easier to build from this dir 2000-11-22 14:15:15 +00:00
Daniel Stenberg
92f53b0e4d added filetime for opt and info 2000-11-22 13:59:41 +00:00
Daniel Stenberg
d419d975b3 Added cacert and filetime support 2000-11-22 13:51:11 +00:00
Daniel Stenberg
b5739b3a97 document time fixes 2000-11-22 13:50:17 +00:00
Daniel Stenberg
86d4488cc7 Added struct fields to deal with time-of-document 2000-11-22 12:57:16 +00:00
Daniel Stenberg
ce1cb29d20 client_write() proto and defines added 2000-11-22 12:55:55 +00:00
Daniel Stenberg
526eca191a uses client_write() 2000-11-22 12:55:24 +00:00
Daniel Stenberg
79beebdabe uses client_write() now 2000-11-22 12:54:48 +00:00
Daniel Stenberg
39abde5db5 Added the client_write() function 2000-11-22 12:53:56 +00:00
Daniel Stenberg
fb962a281e uses the new client_write() function 2000-11-22 12:51:18 +00:00
Daniel Stenberg
2f6e61d5fb GetLastResponse() modified to return ftp code as integer
initial modified-time support
2000-11-22 12:50:41 +00:00
Daniel Stenberg
ea9ede15e3 HTTP GET fail silently on HTTP error return 2000-11-22 08:57:24 +00:00
Daniel Stenberg
4768c9cdbb Added --cacert 2000-11-22 08:51:41 +00:00
Daniel Stenberg
d6b1162a63 working with the test suite brings things up 2000-11-22 08:16:36 +00:00
Daniel Stenberg
486591f9d1 Added --url 2000-11-22 07:53:15 +00:00
Daniel Stenberg
458ec524e1 updated the config file section 2000-11-22 07:52:48 +00:00
Daniel Stenberg
a40b55d5c8 Added 5.2 How can I receive all data into a large memory chunk? 2000-11-22 07:27:26 +00:00
Daniel Stenberg
5aa5ecb29b modified to work with printf()s that writes 0x-prefix on %p data 2000-11-21 19:37:15 +00:00
Daniel Stenberg
20dd0670ba I run the perl programs with 'perl [script]' instead, to overcome the
hardcoded-path-in-scripts problem.
2000-11-21 19:30:09 +00:00
Daniel Stenberg
43e1e1cd1a upload check, better ability to specify test cases on the command line 2000-11-21 19:28:11 +00:00
Daniel Stenberg
55b7c1c364 REST support seems to work
NLST sends an NLST-looking list
renamed the upload file
2000-11-21 19:25:14 +00:00
Daniel Stenberg
190ecd652a Added the uploadN.txt description 2000-11-21 19:21:31 +00:00
Daniel Stenberg
2677c27b08 FTP test case data 2000-11-21 19:20:14 +00:00
Daniel Stenberg
c938166520 set rangestringalloc to 0 after the string has been freed to prevent it
from being freed twice (a NULL free the second time)
2000-11-21 19:06:55 +00:00
Daniel Stenberg
50d564b4d4 uses the "internal" mprintf() routines for formatted output 2000-11-21 19:05:26 +00:00
Daniel Stenberg
29d21bea18 bad directory name extractor fixed, now always free the file and directory
very early, as that could leak memory before
2000-11-21 19:04:25 +00:00
Daniel Stenberg
b734bc37eb curl_unescape() did not stop at the set length properly when %-codes were
used
2000-11-21 19:01:53 +00:00
Daniel Stenberg
2c123051bb added a command line log that logs all command lines run in the complete
test run
2000-11-21 17:07:16 +00:00
Daniel Stenberg
b82fa8d959 FTP test case data 2000-11-21 17:04:59 +00:00
Daniel Stenberg
c84aa663a1 httpN => protN and some other minor updates 2000-11-21 15:51:05 +00:00
Daniel Stenberg
7db43ae0ed says nothing if no errors were found 2000-11-21 15:50:17 +00:00
Daniel Stenberg
ae58d84429 Added support for verifiedserver that returns a static silly string that
allows the test script to verify that it is our test server running on the
particular port
2000-11-21 15:49:34 +00:00
Daniel Stenberg
eb993c28ca starts and stops both HTTP and FTP servers now
checks memanalyze output better
filters PORT output when doing FTP compares
2000-11-21 15:48:40 +00:00
Daniel Stenberg
2830504f4f removed the twice free_config_all() calls
made the big config struct local (big . => -> replace)
2000-11-21 15:37:54 +00:00
Daniel Stenberg
2a5e68ea89 added some defensive code around the GetHost()'s third argument result 2000-11-21 15:36:38 +00:00
Daniel Stenberg
c06f726614 GetHost() now sets the third pointer to NULL when the lookup fails, as the
memory is then freed in the function
2000-11-21 15:35:45 +00:00
Daniel Stenberg
52909688cf when using PORT, we now free the host name buffer properly 2000-11-21 15:34:40 +00:00
Daniel Stenberg
c1474b9507 http* is now prot* since we're about to use other protocols as well 2000-11-21 14:24:03 +00:00
Daniel Stenberg
708e9cf294 attempt to use a bad protocol 2000-11-21 13:41:11 +00:00
Daniel Stenberg
70778f2cb6 NLST does a LIST (a normal unix ftp client 'ls' becomes NLST)
multiple transfers are supported
2000-11-21 13:36:55 +00:00
Daniel Stenberg
bdb411c6ca STOR works! 2000-11-21 13:22:32 +00:00
Daniel Stenberg
56ac132401 removed the storenonprintable function as it isn't used anymore 2000-11-21 13:18:30 +00:00
Daniel Stenberg
44137c7932 fancier login text
removed lots of wasted comments
cleaned up a little
STOR doesn't work
2000-11-21 12:54:08 +00:00
Daniel Stenberg
19a754dc8c removed the forks, we don't need forking for single-task testing 2000-11-21 12:00:24 +00:00
Daniel Stenberg
641351ee16 runtests.pl -c should be -a 2000-11-21 11:37:58 +00:00
Daniel Stenberg
7b49d40bb0 removed pedantic compiler warnings 2000-11-21 09:38:41 +00:00
Daniel Stenberg
3e5ba33e2d removed two unused variables and added an extra set of parentheses, done
to remove pedantic compiler warnings
2000-11-21 09:31:55 +00:00
Daniel Stenberg
9a9013ac25 typecasted the argument to isspace() to int, to remove a pedantic compiler
warning
2000-11-21 09:31:03 +00:00
Daniel Stenberg
59693250c4 includes http.h for the proxytunnel stuff 2000-11-21 09:30:07 +00:00
Daniel Stenberg
336b0b7d82 added comment on a variable that is unused on some platforms 2000-11-21 09:29:21 +00:00
Daniel Stenberg
f22c690b1f flushes the log handles before fork, now the logs work too! 2000-11-20 16:02:53 +00:00
Daniel Stenberg
05ec503eac QUIT works, and now I can run a unix ftp client against the server and it
runs pretty good
2000-11-20 14:26:09 +00:00
Daniel Stenberg
4b8fd86f04 CWD runs 2000-11-20 13:47:25 +00:00
Daniel Stenberg
16cf5ee1c9 RETR seems to work too 2000-11-20 13:19:22 +00:00
Daniel Stenberg
a7937ed49c this is now a working ftp server, both PASV and PORT run fine, LIST works,
RETR and STORE don't
2000-11-20 13:07:04 +00:00
Daniel Stenberg
4c0bae3649 changed the comment for URL_MAX_LENGTH 2000-11-20 09:40:09 +00:00
Daniel Stenberg
4a7d62c8c3 formfree, config file, --url, more testcases, infinite URL lengths and more 2000-11-20 09:37:57 +00:00
Daniel Stenberg
d4a4b564ec extremely long URL test 2000-11-20 09:04:27 +00:00
Daniel Stenberg
5d4bceda20 removed URL size restrictions, dynamically allocates the needed buffer
size instead
2000-11-20 08:54:32 +00:00
Daniel Stenberg
42280e95bf removed URL size restrictions 2000-11-20 08:53:21 +00:00
Daniel Stenberg
b2ad1f68cc this is the first attempt of a tiny and simple ftp server in perl for curl
test purposes
2000-11-20 08:00:33 +00:00
Daniel Stenberg
13e9a4d8f4 added a description about the memory checks 2000-11-20 07:59:25 +00:00
Daniel Stenberg
9c0d9784f6 no more "leaked" memory when this fails on various kinds of bad usage 2000-11-20 07:54:57 +00:00
Daniel Stenberg
91c879461e Alexander Kourakos's lowercase environment variable fix 2000-11-20 07:35:21 +00:00
Daniel Stenberg
bda9fde4d8 spell correction resolv => resolve in two error messages 2000-11-18 16:31:27 +00:00
Daniel Stenberg
0def60bf9d now supports checks for exit codes and check for memory even when curl
returns (expected) exit code
2000-11-17 15:58:25 +00:00
Daniel Stenberg
1665435040 graceful failure test 2000-11-17 15:57:35 +00:00
Daniel Stenberg
aa86f697f6 output FAILED properly even when -s is used 2000-11-17 15:34:33 +00:00
Daniel Stenberg
e48747d95d updated to the new stdout stuff and the new -a option 2000-11-17 15:33:54 +00:00
Daniel Stenberg
0a72154cd2 fixed strdup() of a NULL pointer 2000-11-17 15:32:17 +00:00
Daniel Stenberg
3e6a354c4c now exits and alerts on bad uses of strdup() and free() 2000-11-17 15:31:45 +00:00
Daniel Stenberg
f0b8aac325 updated to the new stdout file behaviour of runtests.pl 2000-11-17 15:30:33 +00:00
Daniel Stenberg
ec3054e1f2 make test in root now runs make quiet-test in the test dir 2000-11-17 15:30:01 +00:00
Daniel Stenberg
7c6414ebbd uses stricter output 2000-11-17 15:15:48 +00:00
Daniel Stenberg
85705e105c better stdout check, full support for memory debug tests 2000-11-17 15:07:29 +00:00
Daniel Stenberg
874f6024e6 multiple URL test 2000-11-17 15:07:03 +00:00
Daniel Stenberg
a03cdd7e83 curl_formfree() added 2000-11-17 14:21:07 +00:00
Daniel Stenberg
f9155568c6 this has been missing all the time... 2000-11-17 14:11:22 +00:00
Daniel Stenberg
c0936824d4 added curl_formfree() 2000-11-17 14:06:24 +00:00
Daniel Stenberg
57ddd7e928 now includes stdlib.h 2000-11-17 14:05:43 +00:00
Daniel Stenberg
868488b518 memory leak cleanup campaign 2000-11-17 14:03:58 +00:00
Daniel Stenberg
7f77a061dd allows \r \n \t \v in config file parameters within quotes 2000-11-17 10:08:39 +00:00
Daniel Stenberg
2d16e1a777 config file test 2000-11-17 10:05:56 +00:00
Daniel Stenberg
2297bc4791 changed the 'port' field to long to better work with the va_arg() system 2000-11-17 09:48:21 +00:00
Daniel Stenberg
34a2d446e0 major config file hack, now works a lot better and slightly different
Added --url to allow URLs to be specified in the config file that way
2000-11-17 09:47:18 +00:00
Daniel Stenberg
fdd91b2209 moved out the FTP part 2000-11-16 09:06:18 +00:00
Daniel Stenberg
7ea4551b1b forgot to commit before 2000-11-16 07:32:45 +00:00
Daniel Stenberg
77bbbd868b data->err must be used, not stderr 2000-11-16 07:20:12 +00:00
Daniel Stenberg
3b91db110b fixed crash in config file parser 2000-11-15 20:45:29 +00:00
Daniel Stenberg
ab9dfac24e updated to catch bug 122480 2000-11-15 15:48:15 +00:00
Daniel Stenberg
5a07305dc8 not printf()ing %s normally for character that weren't isprint() made things
go weird, had to remove this. I should use trio soon for all the *printf()
stuff as this is too broken
2000-11-15 15:36:41 +00:00
Daniel Stenberg
56c0c67dff 'use strict' compliant
better complains if there are missing input files for a test case
explaced exit-calls with returns instead
2000-11-15 12:13:24 +00:00
Daniel Stenberg
885184aa14 proxy authorization test case 2000-11-15 12:06:59 +00:00
Daniel Stenberg
e0e67812de now sorts the test cases when "all" is used 2000-11-15 08:21:14 +00:00
Daniel Stenberg
eb72e001a7 'use strict' compliant 2000-11-15 07:09:37 +00:00
Daniel Stenberg
cdfa5f5d7b removed some /= 256 that was wrongly left 2000-11-14 11:56:16 +00:00
Daniel Stenberg
0c19d2518c added help text on -h 2000-11-14 10:28:25 +00:00
Daniel Stenberg
e64b8a8f86 more decriptions 2000-11-14 10:24:26 +00:00
Daniel Stenberg
e2641a394d removed lots of external program dependencies (for windows compliance)
added lots of comments
added -s for short output and made it possible to run specific test cases
from the command line
2000-11-14 10:18:44 +00:00
Daniel Stenberg
bd3dca96f6 somewhat more functioning FTP 2000-11-13 20:47:09 +00:00
Daniel Stenberg
3cd77a19ca basic and early ftp support 2000-11-13 19:58:40 +00:00
Daniel Stenberg
e02affb5d0 logs stderr as well now, which is good if the program crashes, and also
dumps more information in case curl doesn't return success
2000-11-13 18:34:27 +00:00
Daniel Stenberg
24f9ae1f72 *** empty log message *** 2000-11-13 18:23:52 +00:00
Daniel Stenberg
2bd70e1351 moved the followlocation field from the http struct to the urldata struct
since it has to survive http struct deletion
2000-11-13 18:23:21 +00:00
Daniel Stenberg
336124c3dc updated 2000-11-13 16:07:17 +00:00
Daniel Stenberg
8e735d1eea converted shell script to perl 2000-11-13 16:06:16 +00:00
Daniel Stenberg
aa9a60287d more test case data 2000-11-13 16:05:39 +00:00
Daniel Stenberg
6736c1610c removed the check that prevents -T and -o beinged used simultaneously! 2000-11-13 11:59:19 +00:00
Daniel Stenberg
1cc8af2779 if the server is already running when the script is started, it now verifies
that it actually is our test server that runs
2000-11-13 11:45:41 +00:00
Daniel Stenberg
bfb118e42a Added space after the Cookie: header keyword 2000-11-13 11:29:32 +00:00
Daniel Stenberg
3f0aa0648f defaults to run all available test cases in (1 - last) order 2000-11-13 09:51:01 +00:00
Daniel Stenberg
a58e336d85 updated test cases 2000-11-13 09:44:39 +00:00
Daniel Stenberg
27435f0648 new pid stuff, more filters, various fixes 2000-11-13 09:43:40 +00:00
Daniel Stenberg
69e82e7383 changed pid stuff, made it work with rfc1867 posts and made it work better
on paths
2000-11-13 09:42:58 +00:00
Daniel Stenberg
b2daec2477 more details added 2000-11-13 09:41:47 +00:00
Daniel Stenberg
c605f81a09 Jrg updated the list of exported functions 2000-11-13 08:36:17 +00:00
Daniel Stenberg
d5b06bcf3b replaced by a working server! 2000-11-13 08:03:16 +00:00
Daniel Stenberg
d5e6404b8b uses the new httpd server, runs the tests much faster 2000-11-13 08:02:26 +00:00
Daniel Stenberg
bc84fe1cf3 new perl http server that works better 2000-11-13 08:02:02 +00:00
Daniel Stenberg
460aa295e0 Chris Faherty fixed a free-twice problem 2000-11-13 07:51:23 +00:00
Daniel Stenberg
143ff23c4f updated config file section 2000-11-12 15:14:35 +00:00
Daniel Stenberg
6195412005 Added empty actions for all: and install: 2000-11-12 15:11:50 +00:00
Daniel Stenberg
4e120f34a5 The last few days of changes 2000-11-10 15:26:48 +00:00
Daniel Stenberg
14bcdcfcdd test files 2000-11-10 15:24:54 +00:00
Daniel Stenberg
3c0194bb72 initial checkin 2000-11-10 15:24:09 +00:00
Daniel Stenberg
172f0ba12d the tests dir is added 2000-11-10 14:42:06 +00:00
Daniel Stenberg
4035543763 set type before checking --head size, as the type may cause the server
to return different sizes
2000-11-10 13:42:45 +00:00
Daniel Stenberg
920579ba11 doing an ftp upload append that was already completed resulted in a
"hang", it now results in an error instead
2000-11-10 11:28:01 +00:00
Daniel Stenberg
1ff573c649 added getpass_r check 2000-11-10 09:19:47 +00:00
Daniel Stenberg
7b5c551835 adjusted to the changed getpass_r() 2000-11-10 09:19:09 +00:00
Daniel Stenberg
a5b2eb7962 new interface, updated Angus' license, dependent on HAVE_GETPASS_R 2000-11-10 09:18:25 +00:00
Daniel Stenberg
78423c5899 Venkataramana Mokkapati corrected a cookie parser bug 2000-11-10 08:10:04 +00:00
Daniel Stenberg
2bcb8abf40 haxx.nu => haxx.se 2000-11-09 12:51:43 +00:00
Daniel Stenberg
b32bf42763 Added RSAglue/rsaref lib check if the crypto lib is there but the ssl lib
check fails.
2000-11-09 12:35:45 +00:00
Daniel Stenberg
61fb8fea10 cleaned up the thread-safe checks into separate functions, added check for
gethostbyname() in the socket lib as it seems some systems need it
2000-11-08 14:27:46 +00:00
Daniel Stenberg
c0a44b4b9b Added typecast to localtime_r() 2000-11-07 23:09:08 +00:00
Daniel Stenberg
ef8741d23c removed the perror() outputs as they did nothing good to us 2000-11-07 07:33:40 +00:00
Daniel Stenberg
56548f9a13 getpass_r() is the new getpass name for thread-safe getpass! 2000-11-06 23:18:50 +00:00
Daniel Stenberg
36000e5287 Added T. Bharath to the list of contributors 2000-11-06 23:12:36 +00:00
Daniel Stenberg
8cb15395d0 Added descriptions for: CURLOPT_PASSWDDATA, CURLOPT_PASSWDFUNCTION,
CURLOPT_CAINFO and CURLOPT_SSL_VERIFYPEER.
2000-11-06 23:11:23 +00:00
Daniel Stenberg
4ccda6d692 Added CURLINFO_SSL_VERIFYRESULT 2000-11-06 22:59:05 +00:00
Daniel Stenberg
7390c3a8af bugfixes and improvements 2000-11-06 22:56:46 +00:00
Daniel Stenberg
e5e259030f removed bad mirror, added text about source contents (that should be here
according to the source license)
2000-11-06 22:55:59 +00:00
Daniel Stenberg
9f4f16b55d new getpass proto and function pointer usage 2000-11-06 22:53:50 +00:00
Daniel Stenberg
e05922c428 modified pgrsTime() to the new functionality 2000-11-06 15:32:16 +00:00
Daniel Stenberg
71fb701168 adjusted the time-keeping function to work better for location following
requests
2000-11-06 15:31:10 +00:00
Daniel Stenberg
b6bb734215 Emmanuel Tychon found a problem when specifying user-name only in a URL
(and the password entered interactively). This fix also includes proper
URL-decoding of the user name and password if specified in the URL.
2000-11-06 08:12:30 +00:00
Daniel Stenberg
e7736324b4 David Odin (aka DindinX) for MandrakeSoft, tiny example with GTK 2000-11-03 14:47:07 +00:00
Daniel Stenberg
e0e01e5a59 error code fix 2000-11-02 14:34:46 +00:00
Daniel Stenberg
852b664e45 added signal in case sigaction is missing 2000-11-01 08:19:10 +00:00
Daniel Stenberg
e6cdb68a88 adjusted to the new packages dir 2000-10-31 09:54:29 +00:00
Daniel Stenberg
349811f3da removed, see packages/Linux/RPM 2000-10-31 09:53:54 +00:00
Daniel Stenberg
823785c53e new package related file 2000-10-31 09:50:22 +00:00
Daniel Stenberg
1c0fd24a36 removed extra comma in the CURLINFO enum typedef 2000-10-30 23:17:06 +00:00
Daniel Stenberg
5c0b2f29b9 Added CURLOPT_SSL_VERIFYPEER and CURLOPT_CAINFO 2000-10-30 23:15:15 +00:00
Daniel Stenberg
e446edc288 the verify cert stuff is now added! 2000-10-30 15:07:58 +00:00
Daniel Stenberg
b5d152caf7 T. Bharath's ssl patch 2000-10-30 12:43:08 +00:00
Daniel Stenberg
6f7dcf3f22 typecasted the localtime_r() return code to not make it not warn even if the
function prototype is missting
2000-10-30 11:54:27 +00:00
Daniel Stenberg
0cff279063 new urldata ssl layout and T. Bharath brought the new SSL cert verify function 2000-10-30 11:53:40 +00:00
Daniel Stenberg
09ba856e39 Added section 4.8 I found a bug and did some minor cosmetics 2000-10-27 12:25:00 +00:00
Daniel Stenberg
1df033a1c5 Added description on how to use the newly supported multiple -d options 2000-10-27 10:52:38 +00:00
Daniel Stenberg
3264ce04ee Added sigaction check 2000-10-27 10:52:08 +00:00
Daniel Stenberg
3b0d49e1c9 post 7.4.1 changes 2000-10-27 10:51:14 +00:00
Daniel Stenberg
f6daff475f removed old unused getpass() leftovers 2000-10-26 21:59:54 +00:00
Daniel Stenberg
9d0d8280e9 Georg Horn provided a fix for the timeout signal stuff. Finally the timeout
switch should work under most unixes (requires sigaction())
2000-10-26 21:57:12 +00:00
Daniel Stenberg
cdfb83e0e3 removed getpass-check since getpass() is no longer being used 2000-10-26 10:32:31 +00:00
Daniel Stenberg
02037971ed renamed getpass() to my_getpass() and it is now thread-safe and should
disable passwd-echoing on win32 (supplied by Bjrn Stenberg)
2000-10-26 10:32:04 +00:00
Daniel Stenberg
a5b01cf4e8 Kevin Roth's bugreport with config files containing '-v defaulturl' is now
fixed
2000-10-26 08:15:13 +00:00
Daniel Stenberg
68c231e1b0 Kevin P Roth's idea of supporting multiple -d options was turned into reality 2000-10-26 07:06:52 +00:00
Daniel Stenberg
949eaf8ad4 Replaced the former bug report email address with the new curl-bug@haxx.se 2000-10-25 07:43:03 +00:00
Daniel Stenberg
950110ecb1 Added a few ideas 2000-10-25 07:42:23 +00:00
Daniel Stenberg
5f8e93d3b0 tiny spell correction 2000-10-25 07:41:58 +00:00
Daniel Stenberg
e4a7e18a0c compiles on Linux now 2000-10-25 07:41:11 +00:00
Daniel Stenberg
8f5ffd94a2 the configure script dynamically gets the version from the include file now
which lets the maketgz skip updating the configure.in file
2000-10-23 13:56:12 +00:00
Daniel Stenberg
c44b10de41 remote_port used in Host: headers only when non-default 2000-10-20 13:48:38 +00:00
Daniel Stenberg
135cc036aa made the speedcheck actually work again 2000-10-17 14:53:03 +00:00
Daniel Stenberg
f6163b375f 7.4.1 commit 2000-10-16 13:52:05 +00:00
Daniel Stenberg
b2d73c50d3 pre5 and pre6 fixes 2000-10-12 09:14:57 +00:00
Daniel Stenberg
834b7de33c Added lib/libcurl.def for win32 DLL creations 2000-10-12 09:13:55 +00:00
Daniel Stenberg
debdd93e1b just removed some example lines in the top comment 2000-10-12 09:13:22 +00:00
Daniel Stenberg
4e8ddedc8f Jrn added glob_cleanup() 2000-10-12 09:12:24 +00:00
Daniel Stenberg
751d503f54 sprintf() => snprintf() 2000-10-12 08:22:16 +00:00
Daniel Stenberg
b2e47dfde4 updated to better reflect reality 2000-10-11 10:59:36 +00:00
Daniel Stenberg
0af8201cc2 make curl capable of using the mozilla SSL engine 2000-10-11 10:59:16 +00:00
Daniel Stenberg
7717212912 free the URL string if that was allocated 2000-10-11 10:58:37 +00:00
Daniel Stenberg
ccb2b5d22c free the FTP struct already in the _done() function 2000-10-11 10:57:52 +00:00
Daniel Stenberg
85174ed358 memory leak adjusts 2000-10-11 10:29:25 +00:00
Daniel Stenberg
111d1d09d3 removed the header that confuses PHP 2000-10-09 22:29:35 +00:00
Daniel Stenberg
4f5a4c9bd5 added the bool typedef, moved here from curl/curl.h 2000-10-09 21:36:38 +00:00
Daniel Stenberg
8c62e337b0 bool typedef fix 2000-10-09 21:35:40 +00:00
Daniel Stenberg
51bcdb472b use this to analyze the memory debug logs MALLOCDEBUG will generate 2000-10-09 11:31:55 +00:00
Daniel Stenberg
5ee185f420 just too many to mention 2000-10-09 11:25:40 +00:00
Daniel Stenberg
fb739ac130 Added commented MALLOCDEBUG stuff for memory debugging 2000-10-09 11:24:49 +00:00
Daniel Stenberg
cdd91bed46 I commented the -DMALLOCDEBUG flag to make it easier to add 2000-10-09 11:24:18 +00:00
Daniel Stenberg
9defb83930 added memory debugging support 2000-10-09 11:13:17 +00:00
Daniel Stenberg
0f8facb49b added memory debugging include file 2000-10-09 11:12:34 +00:00
Daniel Stenberg
d49d05bce6 added for memory leak debugging etc 2000-10-09 11:11:43 +00:00
Daniel Stenberg
1e2e6a4e33 GetHost() did not properly assign the third argument pointer! 2000-10-08 12:50:51 +00:00
Daniel Stenberg
5b39a48e22 corrected the --longoption parser 2000-10-06 12:45:05 +00:00
Daniel Stenberg
2918836cef removed include "writeout.h" 2000-10-06 11:06:20 +00:00
Daniel Stenberg
b900318d8d Jrg's updated makefile 2000-10-06 11:03:43 +00:00
Daniel Stenberg
c58dc8f82f the --interface code doesn't work on win32 and is #ifndef WIN32 now 2000-10-06 11:03:20 +00:00
Daniel Stenberg
0ddacf929a added for the win32 version 2000-10-06 11:02:48 +00:00
Daniel Stenberg
a513e97464 moved the src/config.h stuff to the bottom, as automake were adding include
stuff to ../src in the lib directory's Makefile.in otherwise!
2000-10-06 10:40:43 +00:00
Daniel Stenberg
03a56b3e56 HTTP resume fix, now the range pointer may be allocated 2000-10-06 06:28:39 +00:00
Daniel Stenberg
18f67852be filled in more information on the options 2000-10-04 13:09:15 +00:00
Daniel Stenberg
693aab0e95 size_request and size_header added to the -w description 2000-10-04 13:08:54 +00:00
Daniel Stenberg
ccd0f07c41 -w supports size_header and size_request 2000-10-04 13:08:17 +00:00
Daniel Stenberg
5865860ad6 counts header and request size 2000-10-04 13:07:43 +00:00
Daniel Stenberg
bf56377865 Added Jason S. Priebe as contributor 2000-10-03 22:07:09 +00:00
Daniel Stenberg
e012d32e66 documented writeinfo as removed in 7.4 2000-10-03 22:06:26 +00:00
Daniel Stenberg
763797ab3c introduced in libcurl 7.4 2000-10-03 22:05:27 +00:00
Daniel Stenberg
2cdd150723 removed writeinfo stuff 2000-10-03 22:04:04 +00:00
Daniel Stenberg
d46b006f22 add_buffer_send() free()d the buffer *before* it was used! :-O 2000-10-03 16:53:41 +00:00
Daniel Stenberg
033263e696 added the new upload_bufsize to the connectdata struct 2000-10-03 11:05:09 +00:00
Daniel Stenberg
eee5c71aff inits the upload_bufsize at connect time 2000-10-03 11:03:55 +00:00
Daniel Stenberg
f1b8566ea2 new upload-buffer size design that starts with a smallish buffer and increases
its size in case of need
2000-10-03 11:02:52 +00:00
Daniel Stenberg
d3f9b2a490 introduced the new add_buffer() concept that makes the HTTP request to get
sent in only one shot
2000-10-03 11:01:32 +00:00
Daniel Stenberg
398d21696f Added curl_easy_getinfo.3 2000-10-02 06:49:51 +00:00
Daniel Stenberg
99fbcac6b9 added a small suggestion on how to get the curl man page in text format
without nroff
2000-10-02 06:40:14 +00:00
Daniel Stenberg
c23e387928 Uses the new "client-side" writeout function 2000-10-02 06:36:34 +00:00
Daniel Stenberg
ef77d484f0 removed writeout.[ch] and added getinfo.c 2000-10-02 06:32:31 +00:00
Daniel Stenberg
df7b9e7af6 Added writeout.c 2000-10-02 06:32:05 +00:00
Daniel Stenberg
f612f194be writeout.[ch] added in src/ 2000-10-02 06:31:10 +00:00
Daniel Stenberg
dfec172157 moved out from the library and put here, uses the new curl_easy_getinfo() 2000-10-02 06:30:40 +00:00
Daniel Stenberg
888182c16d adjusted for curl_easy_getinfo 2000-10-02 06:29:39 +00:00
Daniel Stenberg
d5ad450db6 getinfo.c replaces the former writeout.c 2000-10-02 06:28:55 +00:00
Daniel Stenberg
b0274a553b Added curl_easy_getinfo() 2000-10-02 06:27:43 +00:00
Daniel Stenberg
e372a440c0 #include <malloc.h> was removed, it causes warnings on openbsd 2000-09-29 06:34:50 +00:00
Daniel Stenberg
91bda5650c include base64.h instead of base64_krb.h 2000-09-28 10:36:31 +00:00
Daniel Stenberg
13962adcb5 7.3 commit 2000-09-28 10:26:44 +00:00
Daniel Stenberg
221f1c2ca2 replaced the old base64 stuff with the new ones 2000-09-28 08:01:52 +00:00
Daniel Stenberg
0e0b72714c more configure options explained 2000-09-26 22:32:46 +00:00
Daniel Stenberg
3396d97399 a --krb4 usage example added 2000-09-26 22:31:52 +00:00
Daniel Stenberg
c4fc231934 added krb4-info 2000-09-26 22:30:23 +00:00
Daniel Stenberg
bac96e9f49 Added strlcpy() since it turns out some krb4-implementations don't include
their own, even if mine did!
2000-09-26 22:28:46 +00:00
Daniel Stenberg
00505c9247 moved the RAND_status() and RAND_screen() checks to the openssl section
added strlcpy() check in the krb4 section
2000-09-26 22:27:24 +00:00
Daniel Stenberg
60ee571bd6 CRYPTO_free() of course, it makes it run with previous openssl versions too 2000-09-26 07:03:59 +00:00
Daniel Stenberg
bdfe654aee The last week's changes 2000-09-25 22:23:17 +00:00
Daniel Stenberg
32e013eb87 -c and -t is no longer prefered 2000-09-25 22:20:02 +00:00
Daniel Stenberg
d03db1cd11 corrected curl_write() for kerberos 2000-09-25 22:16:36 +00:00
Daniel Stenberg
1dac7f4d05 Martin Hedenfalk added sec_fflush_fd() 2000-09-25 22:15:56 +00:00
Daniel Stenberg
ad01481b28 krb4 transfers get a sec_fflush_fd() to get uploads to work 2000-09-25 22:15:28 +00:00
Daniel Stenberg
28ad7dc4a1 a single cookie does not require a trailing semicolon anymore 2000-09-25 22:14:42 +00:00
Daniel Stenberg
e40f0be7e3 No longer uses Free() as that was removed from OpenSSL with 0.9.6 2000-09-25 22:04:51 +00:00
Daniel Stenberg
f353258ff6 corrected bad data re-use and buffer problems 2000-09-25 21:49:37 +00:00
Daniel Stenberg
1754d6166c Added CURLOPT_KRB4LEVEL 2000-09-21 08:54:36 +00:00
Daniel Stenberg
481871768b updated 2000-09-21 08:53:59 +00:00
Daniel Stenberg
43d75c5f3b added docs/examples
now only includes specified files in src/ as I tend to store debug-source files
in there as well!
2000-09-21 08:53:20 +00:00
Daniel Stenberg
35e901a21e Added krb4 support for libcurl 7.3 2000-09-21 08:52:08 +00:00
Daniel Stenberg
c62cc76fdb now reports "krb4 enabled" is that's so 2000-09-21 08:51:15 +00:00
Daniel Stenberg
7bac857fdd krb4 fields structs and fields added 2000-09-21 08:50:48 +00:00
Daniel Stenberg
ce406a732f krb4 support
new GetHost() usage
new base64 encoder usage
2000-09-21 08:50:05 +00:00
Daniel Stenberg
a82eb0fc6d adjusted to support krb4 2000-09-21 08:49:16 +00:00
Daniel Stenberg
6f6dfa97a8 Uses the new interface to ssend() and the base64 encoder 2000-09-21 08:48:48 +00:00
Daniel Stenberg
aa8a2fbde3 GetHost() changed function arguments 2000-09-21 08:47:48 +00:00
Daniel Stenberg
3471e2c59d krb4 support added, new GetHost() usage 2000-09-21 08:47:20 +00:00
Daniel Stenberg
37249c3a41 new interface to the base64 encoder 2000-09-21 08:46:44 +00:00
Daniel Stenberg
def69c3087 new for kerberos support 2000-09-21 08:46:14 +00:00
Daniel Stenberg
35aa363587 new libcurl example code stuff 2000-09-20 22:32:08 +00:00
Daniel Stenberg
7eafb0f325 Stephen Kick's --interface was added 2000-09-18 21:54:46 +00:00
Daniel Stenberg
c9c7fcf411 Stephen Kick's interface fixes 2000-09-18 21:54:08 +00:00
Daniel Stenberg
4dba5750d4 Stephen Kick added CURLOPT_INTERFACE 2000-09-18 21:53:21 +00:00
Daniel Stenberg
398e3f423f GetHost() now should return NULL when it fails, even for Tru64 unix 2000-09-18 21:16:27 +00:00
Daniel Stenberg
281d4cedc7 Added --disable-shared info and updated the 'make install' section. 2000-09-18 14:14:33 +00:00
Daniel Stenberg
c23f35ce2a ftp through http proxy tunnel is now implemented 2000-09-18 06:25:50 +00:00
Daniel Stenberg
0f4444e90b Added PowerPC and sparc linux 2000-09-15 14:16:50 +00:00
Daniel Stenberg
a98648bd8c Updated to be accurate with the new proxytunnel option 2000-09-15 14:16:13 +00:00
Daniel Stenberg
4ee420f23e proxy tunnel update 2000-09-15 14:15:47 +00:00
Daniel Stenberg
31dc1f4247 spell corrections, changed some wording 2000-09-15 14:15:16 +00:00
Daniel Stenberg
ec109b3540 Added curl.linuxworx.com.au as an "official" mirror 2000-09-15 13:22:27 +00:00
Daniel Stenberg
5019fe75a7 proxytunnel added 2000-09-15 13:20:34 +00:00
Daniel Stenberg
00eaf20298 bugfixed the proxytunnel 2000-09-15 12:55:38 +00:00
Daniel Stenberg
96009453e8 -p/--proxytunnel was added 2000-09-15 06:11:46 +00:00
Daniel Stenberg
0da7057591 more "anything through http proxy tunnel" fixes 2000-09-15 06:10:52 +00:00
Daniel Stenberg
23f22bd53e Added HTTPPROXYTUNNEL 2000-09-14 14:14:03 +00:00
Daniel Stenberg
86ff2c46b7 introduced 'tunnel through http proxy' for ftp 2000-09-14 14:05:01 +00:00
Daniel Stenberg
be8b2a1e30 updated the show-off list 2000-09-14 11:25:54 +00:00
Daniel Stenberg
0a2f677374 file:// fix that prevents name lookup and sets no-upload and no-download 2000-09-14 10:41:07 +00:00
Daniel Stenberg
74be53a577 C++ adjusted 2000-09-07 11:34:08 +00:00
Daniel Stenberg
5e7cd528b0 made -I (size info only) work for ftp again 2000-08-31 12:04:55 +00:00
Daniel Stenberg
60eab89f10 in unescape(), '+' is now only converted to space after the first '?' 2000-08-31 12:03:04 +00:00
Daniel Stenberg
1cedcce3e9 patched 7.2 configure to work! 2000-08-31 06:10:02 +00:00
Daniel Stenberg
61c4342736 7.2 cleanup commit 2000-08-30 11:54:57 +00:00
Daniel Stenberg
216b198494 7.2 2000-08-30 11:53:39 +00:00
Daniel Stenberg
6e3a6e79e5 7.2 commit 2000-08-30 11:50:16 +00:00
Daniel Stenberg
2cf44fb374 renamed to acinclude.m4 to get included by aclocal automatically 2000-08-30 06:09:06 +00:00
Daniel Stenberg
dab9658b3e Added Albert to the list contributors. The question is why I hadn't done
that a long time ago...!
2000-08-24 19:19:38 +00:00
Daniel Stenberg
3f9b9dfdee added acinclude.m4 2000-08-24 19:17:30 +00:00
Daniel Stenberg
76229d3da1 largefile.m4 was turned into acinclude.m4 2000-08-24 19:16:26 +00:00
Daniel Stenberg
6562caf6a2 --data-binary and family ;-) 2000-08-24 17:56:20 +00:00
Daniel Stenberg
d49eba2aed Jan Schmidt supplied an update 2000-08-24 17:55:48 +00:00
Daniel Stenberg
bb7929ec50 Inreased buffer size for the Linux gethostbyname_r() test 2000-08-24 17:12:46 +00:00
Daniel Stenberg
a1c0a5d0f2 Added CURLOPT_POSTFIELDSIZE 2000-08-24 16:27:04 +00:00
Daniel Stenberg
1be0bf56a6 new binary post details 2000-08-24 14:28:48 +00:00
Daniel Stenberg
53c2798886 moved include setup.h 2000-08-24 14:28:11 +00:00
Daniel Stenberg
7271ebf23e include config.h first 2000-08-24 14:27:51 +00:00
Daniel Stenberg
b6e18f2f66 #include "setup.h" moved first of all includes 2000-08-24 14:26:33 +00:00
Daniel Stenberg
400ca043c7 inet_ntoa_r() usage made more portable 2000-08-24 14:26:06 +00:00
Daniel Stenberg
d4ffc5ef32 removed the AC_TRY_RUN complaints 2000-08-24 13:05:24 +00:00
Daniel Stenberg
1b1f143cd6 hostname and large file support added 2000-08-24 12:33:16 +00:00
Daniel Stenberg
31b8eea041 Bjorn Reese helped me update the license section 2000-08-23 07:27:00 +00:00
Daniel Stenberg
903f4c16cc Fixed name problems, updated FAQ, -d post problem found 2000-08-23 07:25:50 +00:00
Daniel Stenberg
1998aee2a2 Albert's fixes 2000-08-23 07:25:21 +00:00
Daniel Stenberg
d4731b7050 Albert Chin-A-Young's fixes 2000-08-23 07:23:42 +00:00
Daniel Stenberg
8d2c24265d 7.1.1 commit 2000-08-21 21:57:06 +00:00
Daniel Stenberg
e559a7b872 7.1.1 cleanup commit 2000-08-21 21:56:41 +00:00
Daniel Stenberg
af352740db increased the buffer size used for name lookups 2000-08-18 15:09:50 +00:00
Daniel Stenberg
4e35b4387c Fred Noz fixed the gethostbyaddr_() call 2000-08-17 21:08:09 +00:00
Daniel Stenberg
a8f99e7924 the gethostbyname_r() usage was improved by Fred Noz 2000-08-17 21:07:22 +00:00
Daniel Stenberg
f8e916db46 removed the vprintf check, we have our own internal anyway
gethostbyname_r arg-number checks no longer made if there isn't any
gethostbyname_r function!
aborts the configure if socket() is absent
2000-08-17 16:33:02 +00:00
Daniel Stenberg
e2a63bee59 removed HAVE_VPRINTF dependence 2000-08-17 15:40:26 +00:00
Daniel Stenberg
4496e8ab8c removed the HAVE_VPRINTF check 2000-08-17 15:39:50 +00:00
Daniel Stenberg
c3318b49fd major update 2000-08-17 14:06:42 +00:00
Daniel Stenberg
bfb169062b Added another config to the autoconf bug effect 2000-08-17 11:42:59 +00:00
Daniel Stenberg
2b53a24c4f the latest writeout bugfix 2000-08-15 21:57:47 +00:00
Daniel Stenberg
89e960f118 made Writeout() capable of getting called repeatedly 2000-08-15 21:54:38 +00:00
Daniel Stenberg
7d1ef9646d minor corrections 2000-08-14 06:31:59 +00:00
Daniel Stenberg
e7ce27a22c Linux name resolving problem fixed with larger name-buffer 2000-08-11 18:08:50 +00:00
Daniel Stenberg
ad692ba1f3 Added TheArtOfHttpScripting 2000-08-11 17:06:31 +00:00
Daniel Stenberg
c1283c5881 tutorial kind of document 2000-08-11 17:03:44 +00:00
Daniel Stenberg
349a3aaf5b Made it possible to replace the Content-Type: and Content-Length: headers
curl issues when doing a regular HTTP post. This should not be taken light-
heartedly though. Replacing them might get you into trouble!
2000-08-11 06:39:53 +00:00
Daniel Stenberg
8fd44dd648 allow zero length user names for http 2000-08-08 13:46:26 +00:00
Daniel Stenberg
0d7cce1f08 updated with the latest thread-safe function stuff 2000-08-04 11:32:50 +00:00
Daniel Stenberg
b174aeaac9 brand new gethostbyname_r() and gethostbyaddr_r() checks that now detects
the AIX-styles as well.
I added --disable-thread to allow a user to disable all testing for
thread-safe functions being present and thus go with the good old style
functions. This might become handy if (when?) I add a bug in the threaded
code, like the AIX code I have now but can't test!
2000-08-04 11:30:23 +00:00
Daniel Stenberg
a2f045451f moved an include file further up to make AIX 3 more happy 2000-08-04 11:27:57 +00:00
Daniel Stenberg
02f994a715 Fixed to use the new HAVE_GETHOSTBYxxxx_R_x defines, now trying to support
the AIX-style as well. The AIX-stuff is *NOT* verified to work.
2000-08-04 11:27:17 +00:00
Daniel Stenberg
f0ced0110f corrected to use the libtool libraries instead of the forced-static ones 2000-08-02 08:08:09 +00:00
Daniel Stenberg
e9640b6831 updated 2000-08-02 07:17:56 +00:00
Daniel Stenberg
fe4580eee1 moved the #define strequal() since they're now true functions in libcurl 2000-08-02 07:16:57 +00:00
Daniel Stenberg
1f32da93d7 Added the strequal() prototypes here 2000-08-02 07:16:26 +00:00
Daniel Stenberg
e5c792d4e6 mr Khristophorov added support for lame web servers sending bad range
headers...
2000-08-02 07:15:41 +00:00
Daniel Stenberg
c3c7739811 big last-beta (?) cleanup commit 2000-07-31 22:42:34 +00:00
Daniel Stenberg
513ac758da The installed header files were moved from this to include/curl/Makefile.am 2000-07-31 22:41:27 +00:00
Daniel Stenberg
0a57b8cd60 added to enable include file install 2000-07-31 22:40:52 +00:00
Daniel Stenberg
4c32b6c201 generated from the newly edited getdate.y that now supports a thread-safe
localtime() call
2000-07-31 21:32:46 +00:00
Daniel Stenberg
a79b541bd2 made urlfree static, added (void) in front of one of the SSL calls. I did
these changes when trying to run lclint on the curl code.
2000-07-31 21:31:27 +00:00
Daniel Stenberg
1cf13c825f Replacing one of the internal headers with one that has no contents will now
completely disable that header to get sent.
2000-07-31 21:30:19 +00:00
Daniel Stenberg
9d5c6df788 added localtime_r() 2000-07-29 22:21:10 +00:00
Daniel Stenberg
c1ab16dabb for install and more 2000-07-29 15:34:32 +00:00
Daniel Stenberg
6f3a2cafff libtool stuff added 2000-07-29 12:12:34 +00:00
Daniel Stenberg
6b1a5f2200 Added two libtool files, is ltmain.sh really necessary? 2000-07-28 07:58:04 +00:00
Daniel Stenberg
0a998a29ff updated my email 2000-07-28 07:57:27 +00:00
Daniel Stenberg
433b73192c Added [:port] to the -x description for --help 2000-07-28 07:56:50 +00:00
Daniel Stenberg
215c75135b clear the httproxy bit on cleanup if the allocproxy bit was set 2000-07-28 07:56:06 +00:00
Daniel Stenberg
f50fd062e9 corrected the Host: header's port number 2000-07-28 07:55:21 +00:00
Daniel Stenberg
3d8f377561 ASCII FTP download
-F improvements
FTP response timeouts
HTTP user+password to same host only
libtool
2000-07-26 09:37:54 +00:00
Daniel Stenberg
9ec6e9f254 another day, another contributor 2000-07-26 09:34:40 +00:00
Daniel Stenberg
b8159cae5c removed libtool, added pointer to the sourceforge task list 2000-07-26 09:34:09 +00:00
Daniel Stenberg
5785a81bbf Added docs/Makefile* 2000-07-26 09:31:36 +00:00
Daniel Stenberg
f71a1485f3 libtool adjustments 2000-07-26 09:28:29 +00:00
Daniel Stenberg
e76515fabd they're generated, they don't belong here 2000-07-25 22:15:00 +00:00
Daniel Stenberg
471edc0b9e Added Torsten Foertsch's changes to the -F description and his name to the
list of contributors.
2000-07-25 21:19:35 +00:00
Daniel Stenberg
293cae68bf uses the new curl_close function to clean up the http-specific auth_host 2000-07-25 21:17:45 +00:00
Daniel Stenberg
1156252f92 Added http_close() 2000-07-25 21:16:51 +00:00
Daniel Stenberg
29eda80f96 uses auth_host to only send user+password to that particular site, usable if
Location: following takes "us" to other servers that should not get the
user and password
2000-07-25 21:16:32 +00:00
Daniel Stenberg
29bfaaa190 set a bit when a Location: is followed to allow code to act differently
on those occations
2000-07-25 21:15:01 +00:00
Daniel Stenberg
18853542a1 curl_close is a new function pointer that can be set to a protocol-specific
function to get called in the curl_close() function for cleanup
auth_host is added to store the original (first) host name used
2000-07-25 21:14:12 +00:00
Daniel Stenberg
5b7a5046e6 Torsten Foertsch's improvements 2000-07-25 12:21:22 +00:00
Daniel Stenberg
0cb4814105 tiny adjustments to set the start-time before the curl_connect() is called to
allow the connect function to better deal with timeouts, as was just added
to ftp
2000-07-25 12:13:57 +00:00
Daniel Stenberg
76f3498636 The "get ftp command response" function now uses select() on the socket and
thus enables timeout if the server doesn't respond within the proper time.
2000-07-25 12:12:29 +00:00
Daniel Stenberg
f836400094 A range of things done yesterday 2000-07-25 07:39:42 +00:00
Daniel Stenberg
841f370a96 Added CURLOPT_PROXYPORT 2000-07-25 07:38:08 +00:00
Daniel Stenberg
c8262b2be6 Added CURLOPT_PROXYPORT, also added some more clarifications about the
CURLOPT_PROXY option.
2000-07-25 07:36:50 +00:00
Daniel Stenberg
0a8d0395e1 Auto referer and a minor netrc fix 2000-07-25 07:35:51 +00:00
Daniel Stenberg
6bdfe18b67 Added some logic that now prevents multiple conflicting HTTP request types
to get specified with the options.
2000-07-25 07:34:04 +00:00
Daniel Stenberg
78686a5487 Added proxyport 2000-07-25 07:32:22 +00:00
Daniel Stenberg
bb3fa8855c Added CURLOPT_PROXYPORT support
Added a missing free() in curl_disconnect()
Made (https) connect errors abort better and earlier
2000-07-25 07:31:35 +00:00
Daniel Stenberg
caf8c01e85 re-added the check for BOTH nsl and socket libs 2000-07-25 07:29:32 +00:00
Daniel Stenberg
e999182758 The Host: header now includes the port number if not default HTTP 2000-07-25 07:28:28 +00:00
Daniel Stenberg
d9c41a0ffd Code 250 is okay as well as the previous 226-code after a successful file
transfer
2000-07-25 07:26:29 +00:00
Daniel Stenberg
1ef3600a07 haxx.nu => haxx.se 2000-06-20 15:31:26 +00:00
Daniel Stenberg
e33ac6b3be FTP bug fix
new referer magic tricks!
2000-06-20 11:55:38 +00:00
Daniel Stenberg
f22717fe6c Added auto and free referer fields to the UrlData struct 2000-06-20 11:23:31 +00:00
Daniel Stenberg
1c6eccbf84 Added AUTOREFERER 2000-06-20 09:28:36 +00:00
Daniel Stenberg
f30ffef477 autoreferer added, switches off POST on location: following 2000-06-20 09:28:09 +00:00
Daniel Stenberg
72158ad2cf Rich Gray fixed the PORT command line with the missing \r! 2000-06-20 07:45:53 +00:00
Daniel Stenberg
ddd3ca4e5a progress meter/bar changes 2000-06-16 13:29:41 +00:00
Daniel Stenberg
d6b3b05e2e removed the CURLOPT_PROGRESSMODE option 2000-06-16 13:22:33 +00:00
Daniel Stenberg
b88136fc4c PROGRESSMODE is history 2000-06-16 13:19:30 +00:00
Daniel Stenberg
789b43fc92 pretty big changes when the -# progress bar was moved in here from the
lib/progess.c file, and is now used with the new progress callback function
2000-06-16 13:18:49 +00:00
Daniel Stenberg
6489735491 mode was replaced with callback in the progress struct 2000-06-16 13:17:44 +00:00
Daniel Stenberg
fb9c5650ce progress.mode replaced with progress.callback 2000-06-16 13:17:07 +00:00
Daniel Stenberg
94deff653b removed pgrsMode() 2000-06-16 13:16:33 +00:00
Daniel Stenberg
435f17195e removed lots of #if 0'ed code
removed the "mode" concept
moved all #-stuff to the client
2000-06-16 13:15:36 +00:00
Daniel Stenberg
8e8da82178 Added pgrsStartNow() on the appropriate place 2000-06-16 13:14:27 +00:00
Daniel Stenberg
eb88f3d9b1 when failing to write to a socket, we now bail out better
I also use typecasted size_t now for systems with unsigned such ones
2000-06-15 14:34:43 +00:00
Daniel Stenberg
e9957b87cd removed the last \r\n\r\n bytes
now returns -1 from FormReader() when the last form data has been read!
2000-06-15 14:33:17 +00:00
Daniel Stenberg
f93baee594 POST fix 2000-06-14 17:28:44 +00:00
Daniel Stenberg
ce7e3586da Added #include <string.h> 2000-06-14 17:23:51 +00:00
Daniel Stenberg
94ec5ff44a correct the POST workings. Tim Tassonis reported. 2000-06-14 17:15:07 +00:00
Daniel Stenberg
e54f09a218 the 7.0.6beta fixes 2000-06-14 14:33:54 +00:00
Daniel Stenberg
069347c83d the -W and -g stuff needn't be here by default 2000-06-14 14:29:39 +00:00
Daniel Stenberg
022f1766f9 Added a define in the Mingw32 makefiles to allow parts of the config-win32
files depend on that as well. It turned out Borland has no unistd.h file
either, only mingw32 seems to use that.
2000-06-14 14:28:45 +00:00
Daniel Stenberg
3e20192ff2 several minor fixes as pointed out by Bjrn Stenberg 2000-06-14 14:26:53 +00:00
Daniel Stenberg
ec520ceefd bad HAVE_STRICMP usage found by Bjrn Stenberg 2000-06-14 14:26:20 +00:00
Daniel Stenberg
a374925bb7 added some more text about libcurl using 2000-06-14 14:08:52 +00:00
Daniel Stenberg
d9650164b3 edited the contributor list
changed ftp-ascii to use-ascii and its explanation was fixed
2000-06-14 14:02:43 +00:00
Daniel Stenberg
094b6a8b6a Added #include <fcntl.h> required by the setmode() for win32 2000-06-14 12:52:21 +00:00
Daniel Stenberg
5da5cfa33e new binary stdout approach for win32 systems 2000-06-14 12:50:38 +00:00
Daniel Stenberg
2dbadc6405 Added GETHOSTBYNAME_R_NARGS and GETHOSTBYADDR_R_NARGS 2000-06-14 10:50:18 +00:00
Daniel Stenberg
3b60784f27 updated to be more valid for version 7 workings 2000-06-14 09:16:11 +00:00
Daniel Stenberg
72f7f0183b added a few RFCs to the list 2000-06-14 09:08:31 +00:00
Daniel Stenberg
e22d75cd6e Luong Dinh Dung's comments adjusted 2000-06-13 23:04:44 +00:00
Daniel Stenberg
2488fff451 free-twice problem corrected 2000-06-13 08:11:45 +00:00
Daniel Stenberg
611f50fb76 resources + readme.win32 2000-06-09 12:08:08 +00:00
Daniel Stenberg
eede4c33df edited it to look better when HTML'ified 2000-06-09 07:10:47 +00:00
Daniel Stenberg
32fd2ffab7 Added the docs/README.win32 file 2000-06-09 07:02:20 +00:00
Daniel Stenberg
3586f7eaf0 haxx.nu turns haxx.se 2000-06-09 07:01:23 +00:00
Daniel Stenberg
287ebf730e mucho updated with lots of links to various odd stuff 2000-06-09 07:00:45 +00:00
Daniel Stenberg
77153b4efb Some notes about life with curl in the win32 world 2000-06-09 07:00:21 +00:00
Daniel Stenberg
dbcfd3df79 the recent mocking 2000-06-08 15:20:03 +00:00
Daniel Stenberg
45271fd084 use top_dir instead of ../ 2000-06-08 15:14:17 +00:00
Daniel Stenberg
dbc12876ab Added progress callback info 2000-06-08 15:13:41 +00:00
Daniel Stenberg
aedfcaa168 lower casing getenv and formparse
added the progress function callback and data pointer
added the callback typedefs
2000-06-08 15:13:03 +00:00
Daniel Stenberg
4fd4a6888a added progress callback stuff, changed the callback typedefs to be public 2000-06-08 15:11:39 +00:00
Daniel Stenberg
dd730b09db modified 2000-06-06 16:02:54 +00:00
Daniel Stenberg
c045301128 Added description 2000-06-06 14:54:42 +00:00
Daniel Stenberg
edcd5df1fe edited to look better after the txt2html convertion 2000-06-06 14:13:36 +00:00
Daniel Stenberg
8f03732b25 updated with more examples 2000-06-06 14:09:01 +00:00
Daniel Stenberg
138fe1b934 using the new formparse, the new getenv, using the new headers struct and
clean up the headers better
2000-06-05 08:26:13 +00:00
Daniel Stenberg
d46932369a curl_getenv() is now lowercase 2000-06-05 08:24:37 +00:00
Daniel Stenberg
476e0502ad the curl_formparse() function was turned lowercase 2000-06-05 08:24:18 +00:00
Daniel Stenberg
ecb2b95b1c struct HttpHeader changed to struct curl_slist 2000-06-05 08:23:50 +00:00
Daniel Stenberg
28b0b7316d Added text about how to convert certificates to PEM format 2000-06-05 08:21:28 +00:00
Daniel Stenberg
57623228d2 minor edits 2000-06-02 13:35:16 +00:00
Daniel Stenberg
29470107cd Added many specific questions 2000-06-02 13:32:01 +00:00
Daniel Stenberg
ef34ad2968 Edited, cleaned up 2000-06-02 12:45:23 +00:00
Daniel Stenberg
ebf0fe0df9 updated 2000-06-02 12:06:47 +00:00
Daniel Stenberg
ba17b97e0a curl_formparse() man page 2000-06-02 11:42:56 +00:00
Daniel Stenberg
c8f62fc762 Added description 2000-06-02 11:34:17 +00:00
Daniel Stenberg
e5b72506c9 changed the httppost struct into curl_slist struct 2000-06-02 11:31:53 +00:00
Daniel Stenberg
ef62fc7fe7 added description 2000-06-02 11:31:18 +00:00
Daniel Stenberg
52195a0547 Added description 2000-06-02 11:01:08 +00:00
Daniel Stenberg
e5ba9f058f added description 2000-06-02 10:50:09 +00:00
Daniel Stenberg
2ea0129ed8 man page for this function already in used by the command line tool! 2000-06-02 09:02:51 +00:00
Daniel Stenberg
980ee98ec9 David LeBlanc corrected one of my mistakes 2000-05-31 06:31:31 +00:00
Daniel Stenberg
8d76ad6c8e Adjusted to the GETHOSTBYADDR_R_NARGS style 2000-05-30 22:27:39 +00:00
Daniel Stenberg
784c29c6c5 Added GETHOSTBYADDR_R_NARGS and GETHOSTBYNAME_R_NARGS 2000-05-30 22:26:57 +00:00
Daniel Stenberg
95ddb16768 Added checks for number of parameters to the functions gethostbyname_r()
and gethostbyaddr_r()
2000-05-30 22:26:26 +00:00
Daniel Stenberg
5d39dde961 pre-release commit 2000-05-30 16:31:46 +00:00
Daniel Stenberg
15c143bba9 modified to the new curl_getenv() style 2000-05-29 23:09:31 +00:00
Daniel Stenberg
6d522c9c1d made getenv() more threadsafe for win32 2000-05-29 23:07:22 +00:00
Daniel Stenberg
45885f30c2 updated 2000-05-29 22:54:17 +00:00
Daniel Stenberg
1ea12e705e had to add this since it was missing in the system includes! 2000-05-29 22:52:17 +00:00
Daniel Stenberg
a0ce95e155 David LeBlanc's fixes! 2000-05-29 22:51:13 +00:00
Daniel Stenberg
abc751ae13 generated with bison 1.28 which removes the alloca() mess! 2000-05-29 22:50:40 +00:00
Daniel Stenberg
b6d06a9590 URLGET_ERROR_SIZE is now CURL_ERROR_SIZE 2000-05-26 13:58:10 +00:00
Daniel Stenberg
784e9406ae silly mistake corrected 2000-05-26 13:57:11 +00:00
Daniel Stenberg
9e157ad2ec added the new man pages docs/*.3 2000-05-26 13:55:13 +00:00
Daniel Stenberg
85e6e935c5 updated 2000-05-26 11:59:43 +00:00
Daniel Stenberg
9a85060cde more documented stuff 2000-05-26 08:50:13 +00:00
Daniel Stenberg
fb3a5ab6ee fixed the CURL_ERROR_SIZE and renamed a urlget() leftover 2000-05-26 08:12:14 +00:00
Daniel Stenberg
52585e8b31 Added a list of stuff to do for version 7 2000-05-26 07:48:38 +00:00
Daniel Stenberg
3ad1df668e AIX wants sys/time.h included 2000-05-25 15:18:34 +00:00
Daniel Stenberg
d5bc98fcec added sys/time.h check 2000-05-25 15:18:02 +00:00
Daniel Stenberg
c10684ac3f fixed the new path to the curl man page 2000-05-24 22:56:00 +00:00
Daniel Stenberg
f81e775954 fixed the new docs path 2000-05-24 22:53:37 +00:00
Daniel Stenberg
e92a10c36f now splits the text into several puts() calls 2000-05-23 10:25:30 +00:00
Daniel Stenberg
9b20d0a47f Jrn's fixes mentioned 2000-05-22 19:15:18 +00:00
Daniel Stenberg
67fea90f3f moved many docs to the new docs/ dir 2000-05-22 19:13:37 +00:00
Daniel Stenberg
ceda25398b more changes! ;-) 2000-05-22 19:11:39 +00:00
Daniel Stenberg
285994a5ae slightly adjusted 2000-05-22 19:10:53 +00:00
Daniel Stenberg
e27e490c7e oops 2000-05-22 19:09:31 +00:00
Daniel Stenberg
dbd864a2a6 adjusted to work even without RTLD_GLOBAL defined 2000-05-22 19:04:18 +00:00
Daniel Stenberg
dc98405114 libcurl v7 adjustments 2000-05-22 19:02:54 +00:00
Daniel Stenberg
7c37c6a8e9 moved here from the root directory 2000-05-22 17:35:35 +00:00
Daniel Stenberg
4341671545 moved to the new docs/ directory 2000-05-22 17:33:31 +00:00
Daniel Stenberg
2bd72eb53d Jrn's fixes 2000-05-22 17:20:29 +00:00
Daniel Stenberg
c35238e0a3 Jrt Hartroth's updates 2000-05-22 17:18:55 +00:00
Daniel Stenberg
39b1801c63 moved here from the newlib branch 2000-05-22 17:17:57 +00:00
Daniel Stenberg
98e5d82a34 unused 2000-05-22 14:13:05 +00:00
Daniel Stenberg
96dde76b99 moved here from the newlib branch 2000-05-22 14:12:12 +00:00
Daniel Stenberg
fb9d1ff00f files moved to main branch from the newlib branch 2000-05-22 14:09:31 +00:00
Daniel Stenberg
c9053bf3d4 moved the win32 init stuff here from the lib 2000-05-17 21:21:10 +00:00
Daniel Stenberg
601b8e78c7 "Will you write a script for me getting ZZZ from YYY?" added 2000-05-14 15:33:47 +00:00
Daniel Stenberg
bc10563c98 Added BOTH nsl+socket lib check
Added HOST and TARGET checks
Added automatic update of the *spec.in files (Linux RPM stuff)
2000-05-14 15:21:45 +00:00
Daniel Stenberg
5330a85133 the last days' changes 2000-05-14 13:36:38 +00:00
Daniel Stenberg
95c2534a95 string checks added 2000-05-14 13:33:53 +00:00
Daniel Stenberg
febd0e7059 lots of stuff 2000-05-14 13:12:11 +00:00
Daniel Stenberg
984878ed7a Removed all #ifdef GLOBURL lines, we always use them 2000-05-09 22:42:53 +00:00
Daniel Stenberg
de275780a9 Support for systems where RTLD_LAZY_GLOBAL is defined instead of
RTLD_GLOBAL and RTLD_LAZY separately.
2000-05-09 22:23:55 +00:00
Daniel Stenberg
b64dd9c13f changed the glob_url() call, after Janne Johansson's buffer overflow report 2000-05-09 12:29:28 +00:00
Daniel Stenberg
fac113a275 configure having problem with openssl 2000-04-24 15:20:58 +00:00
Daniel Stenberg
89f05410d9 added a missing prototype, removed unused code 2000-04-11 21:48:33 +00:00
Daniel Stenberg
0d12792514 now uses a tiny bit of the new library interface! 2000-04-11 21:47:28 +00:00
Daniel Stenberg
7aae77f0fd Added Darwin to the list of platforms 2000-04-10 18:05:29 +00:00
Daniel Stenberg
72cb0f7a69 updated the ports list 2000-04-08 20:45:42 +00:00
Daniel Stenberg
d0e640deba Added the *spec.in files 2000-04-08 19:33:11 +00:00
Daniel Stenberg
f9ec7d3a0f new files to generate .spec files automatically 2000-04-08 19:32:40 +00:00
Daniel Stenberg
75cd7f482d now sends user agent to all requests that go through a http proxy 2000-04-08 19:29:58 +00:00
Daniel Stenberg
eb856b04fe Improved the looks of the progress meter when the file size is between
9999 KB and 100 MB since it then can display the size as XX.X MB instead of
just XX as before.
2000-04-08 19:28:23 +00:00
Daniel Stenberg
cd9ad9e54b some rpm build improvements
adjusted progress bar
user agent sent when talking non-http through a http proxy
2000-04-08 19:27:06 +00:00
Daniel Stenberg
c30a3913b5 Marco's fix got adjusted 2000-04-04 18:08:34 +00:00
Daniel Stenberg
d620ada259 two location problems and one OS/2 patch 2000-04-04 17:47:05 +00:00
Daniel Stenberg
00ad88408d Marco G. Salvagno's OS/2 patch is applied 2000-04-04 17:44:24 +00:00
Daniel Stenberg
d62d25bdb4 Marco G. Salvagno's patch applied 2000-04-04 17:42:43 +00:00
Daniel Stenberg
ae6a5018dd added INTERNALS 2000-04-02 18:28:26 +00:00
Daniel Stenberg
c0c225b938 describes internal code design 2000-04-02 18:09:50 +00:00
Daniel Stenberg
0059911261 James Atwill correctly pointed out that curl didn't follow Location: headers
properly when the new URL is an absolute one to a different port than the
first URL...
2000-04-02 12:08:12 +00:00
Daniel Stenberg
e67157b5a2 Added some more explanatory text about HTTP posts 2000-03-27 21:42:40 +00:00
Daniel Stenberg
2f668aba96 "H. Daphne Luong" <daphne@tellme.com> pointed out that curl cannot destroy
the proxy server data internally as it did, since when doing a location:
following it needs the proxy server string several times.
2000-03-27 21:36:05 +00:00
Daniel Stenberg
4a33436663 spelling errors corrected 2000-03-23 11:02:08 +00:00
Daniel Stenberg
0eb1f1e5d0 download.c, configure, VC fix and OS/2 fix 2000-03-23 10:43:14 +00:00
Daniel Stenberg
9849c76d88 yet another tiny OS/2 fix 2000-03-23 10:41:39 +00:00
Daniel Stenberg
e541da93fe in case the select() returns -1 and errno is EINTR, it should not abort
the download (MT-adjustment)
2000-03-23 10:41:16 +00:00
Daniel Stenberg
0fac349c62 Wham Bang's fixes 2000-03-23 10:40:14 +00:00
Daniel Stenberg
83acbda569 Troy Engel's latest updates 2000-03-23 10:39:38 +00:00
Daniel Stenberg
1acda9ef9c HAVE_UNAME was bad
HAVE_UNISTD_H is now not set if VC6 is defined
2000-03-23 10:39:00 +00:00
Daniel Stenberg
20161c38f2 Added a question about other SSL libraries 2000-03-23 10:36:49 +00:00
Daniel Stenberg
7b6394b75a just a little reformatted 2000-03-23 09:33:03 +00:00
Daniel Stenberg
d1a1fcc6f1 removed the double BSD install check 2000-03-21 17:12:27 +00:00
Daniel Stenberg
475869a612 6.5.2 release commit 2000-03-21 15:37:13 +00:00
450 changed files with 62973 additions and 17060 deletions

11
.cvsignore Normal file
View File

@@ -0,0 +1,11 @@
config.log
Makefile
libtool
Makefile.in
aclocal.m4
configure
config.h
config.status
curl-config
autom4te.cache
depcomp

56
BUGS
View File

@@ -1,56 +0,0 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
BUGS
Curl has grown substantially from that day, several years ago, when I
started fiddling with it. When I write this, there are 16500 lines of source
code, and by the time you read this it has probably grown even more.
Of course there are lots of bugs left. And lots of misfeatures.
To help us make curl the stable and solid product we want it to be, we need
bug reports and bug fixes. If you can't fix a bug yourself and submit a fix
for it, try to report an as detailed report as possible to the curl mailing
list to allow one of us to have a go at a solution. You should also post
your bug/problem at curl's bug tracking system over at
http://sourceforge.net/bugs/?group_id=976
When reporting a bug, you should include information that will help us
understand what's wrong, what's expected and how to repeat it. You therefore
need to supply your operating system's name and version number (uname -a
under a unix is fine), what version of curl you're using (curl -v is fine),
what URL you were working with and anything else you think matters.
If curl crashed, causing a core dump (in unix), there is hardly any use to
send that huge file to anyone of us. Unless we have an exact same system
setup as you, we can't do much with it. What we instead ask of you is to get
a stack trace and send that (much smaller) output to us instead!
The address and how to subscribe to the mailing list is detailed in the
README.curl file.
HOW TO GET A STACK TRACE with a common unix debugger
====================================================
First, you must make sure that you compile all sources with -g and that you
don't 'strip' the final executable.
Run the program until it bangs.
Run your debugger on the core file, like '<debugger> curl core'. <debugger>
should be replaced with the name of your debugger, in most cases that will
be 'gdb', but 'dbx' and others also occur.
When the debugger has finnished loading the core file and presents you a
prompt, you can give the compiler instructions. Enter 'where' (without the
quotes) and press return.
The list that is presented is the stack trace. If everything worked, it is
supposed to contain the chaing of functions that were called when curl
crashed.

3738
CHANGES

File diff suppressed because it is too large Load Diff

786
CHANGES.0 Normal file
View File

@@ -0,0 +1,786 @@
Version 5.3a (win32 only)
Troy Engel
- Corrected a win32 bug in the environment variable part.
Version 5.3
Gilbert Ramirez Jr. (21 Dec 1998)
- I have implemented the "quote" function of FTP clients. It allows you to
send arbitrary commands to the remote FTP server. I chose the -Q/--quote
command-line arguments.
You can have more than one quoted string, and curl will apply them in
order. This is what I use for my MVS upload:
curl -B --crlf -Q "site lrecl=80" -Q "site blk=8000" -T file ftp://os390/test
Curl will send the two quoted "site" commands in the proper order.
- Made it compile smoothly on AIX.
Gilbert Ramirez Jr. (18 Dec 1998)
- Brought an MVS patch: -3/--mvs, for ftp upload to the MVS ftp server.
Troy Engel (17 Dec 1998)
- Brought a correction that fixes the win32 curl bug.
Daniel Stenberg
- A bug, pointed out to me by Dr H. T. Leung, caused curl to crash on the -A
flag on certain systems. Actually, all systems should've!
- Added a few defines to make directories/file names get build nicer (with _
instead of . and \ instead of / in win32).
- steve <fisk at polar.bowdoin.edu> reported a weird bug that occured if the
ftp server response line had a parenthesis on the line before the (size)
info. I hope it works better now!
Version 5.2.1
Steven G. Johnson (Dec 14, 1998)
- Brought a fix that corrected a crash in 5.2 due to bad treatment of the
environment variables.
Version 5.2
Daniel Stenberg (Dec 14, 1998)
- Rewrote the mkhelp script and now, the mkhelp.pl script generates the
hugehelp.c file from the README *and* the man page file curl.1. By using
both files, I no longer need to have double information in both the man
page and the README as well. So, win32-users will only have the hugehelp.c
file for all info, but then, they download the plain binary most times
anyway.
- gcc2.8.1 with the -Wall flag complaints a lot on subscript has type `char'
if I don't explicitly typecast the argument to isdigit() or isspace() to
int. So I did to compile warning free with that too.
- Added checks for 'long double' and 'long long' in the configure script. I
need those for the mprintf.c source to compile well on non long long
comforming systems!
Version 5.1 (not publicly released)
Daniel Stenberg (Dec 10, 1998)
- I got a request for a pre-compiled NT Alpha version. Anyone?
- Added Lynx/CERN www lib proxy environment variable support. That means curl
now reads and understands the following environment variables:
HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
They should be set for protocol-specific proxies. General proxy should be
set with
ALL_PROXY
And a comma-separated list of host names that shouldn't go through any
proxy is set in (only an asterisk, '*' matches all hosts).
NO_PROXY
The usage of the -x/--proxy flag overrides the environment variables.
- Proxy can now be specified with a procotol:// prefix.
- Wrote the curl.1 man page.
- Introduced a whole new dynamic buffer system for all sprintf()s. It is
based on the *printf() package by yours truly and Bjorn Reese. Hopefully,
there aren't that many buffer overflow risks left now.
- Ah, I should mention I've compiled and built curl successfully under
solaris 2.6 with gcc now, gcc 2.7.2 won't work but 2.8.1 did ok.
Oren Tirosh (Dec 3, 1998)
- Brought two .spec files, to use when creating (Linux) Redhat style RPM
packages. They're named curl.spec and curl-ssl.spec.
Troy Engel
- Supplied the src/Makefile.vc6 for easy compiling with VC++ under Win32.
Version 5.0
Daniel Stenberg (Dec 1, 1998)
- Not a single bug report in ages.
- Corrected getpass.c and main.c to compile warning and error free with the
Win32 VC++ crap.
Version 5.0 beta 24
Daniel Stenberg (Nov 20, 1998)
HOW TO BUILD A RELEASE ARCHIVE:
* Pre-requisite software:
What To build what Reads data from
==== ============= ===============
GNU automake Makefile.in, aclocal.m4 configure.in
GNU make(1) - " -
GNU gcc(1) - " -
GNU autoconf configure configure.in
GNU autoheader(2) config.h.in configure.in, acconfig.h
* Make sure all files that should be part of the archive are put in FILES.
* Run './maketgz' and enter version number of the new to become archive.
maketgz does:
- Enters the newly created version number in url.h.
- (If you don't have automake, this script will warn about that, but unless
you have changed the Makefile.am files, that is nothing to care about.)
If you have it, it'll run it.
- If you have autoconf, the configure.in will be edited to get the newly
created version number and autoconf will be run.
- Creates a new directory named curl-<version>. (Actually, it uses the base
name of the current directory up to the first '-'.)
- Copies all files mentioned in FILES to the new directory. Saving
permissions and directory structure.
- Uses tar to create an archive of it all, named curl-<version>.tar.gz
- gzips the archive
- Removes the new directory and all its contents.
* When done, you have an archive stored in your directory named
curl-<version>.tar.gz.
Done!
(1) They're required to make automake run properly.
(2) It is distributed as a part of the GNU autoconf archive.
Daniel Stenberg (Nov 18, 1998)
- I changed the TAG-system. If you ever used urlget() from this package in
another product, you need to recompile with the new headers. I did this
new stuff to better deal with different compilers and system with different
variable sizes. I think it makes it a little more portable. This proves
to compile warning free with the problematic IRIX compiler!
- Win32 compiled with a silly error. Corrected now.
- Brian Chaplin reported yet another problem in
multiline FTP responses. I've tried to correct it. I mailed him a new
version and I hope he gets back soon with positive feedback!
- Improved the 'maketgz' to create a temporary directory tree which it makes
an archive from instead of the previous renaming of the current one.
- Mailing list opened (see README).
- Made -v more verbose on the PASV section of ftp transfers. Now it tells
host name and IP of the new host (and port number). I also added a section
about PORT vs PASV in the README.
Version 5.0 beta 21
Angus Mackay (Nov 15, 1998)
- Introduced automake stuff.
Daniel Stenberg (Nov 13, 1998)
- Just made a successful GET of a document from an SSL-server using my own
private certificate for authentication! The certificate has to be in PEM
format. You do that the easiest way (although not *that* easy) by
downloading the SSLyeay PKCS#12-patch by Dr Stephen N. Henson from his site
at: http://www.drh-consultancy.demon.co.uk/. Using his tool, you can
convert any modern Netscape or (even) MSIE certificate to PEM-format. Use
it with 'curl -E <certificate:password> https://site.com'. If this isn't a
cool feature, then I don't know what cool features look like! ;-)
- Working slowly on telnet connections. #define TRY_TELNET to try it out.
(curl -u user:passwd "telnet://host.com/cat .login" is one example) I do
have problem to define how it should work. The prime purpose for this must
be to get (8bit clean) files via telnet, and it really isn't that easy to
get files this way. Still having problems with \n being converted to \r\n.
Angus Mackay (Nov 12, 1998)
- Corrected another bug in the long parameter name parser.
- Modified getpass.c (NOTE: see the special licensing in the top of that
source file).
Daniel Stenberg (Nov 12, 1998)
- We may have removed the silly warnings from url.c when compiled under IRIX.
Thanks again to Bjorn Reese and Martin Staael.
- Wrote formfind.pl which is a new perl script intended to help you find out
how a FORM submission should be done. This needs a little more work to get
really good.
Daniel Stenberg (Nov 11, 1998)
- Made the HTTP header-checker accept white spaces before the HTTP/1.? line.
Appearantly some proxies/sites add such at times (my test proxy did when I
downloaded a gopher page with it)!
- Moved the former -h to -M and made -h show the short help text instead. I
had to enable a forced help text option. Now an even shorter help text will
be presented when an unknown option and similar, is used.
- stdcheaders.h didn't work with IRIX 6.4 native cc compiler. I hope my
changes don't make other versions go nuts instead.
Daniel Stenberg (Nov 10, 1998)
- Added a weird check in the configure script to check for the silly AIX
warnings about my #define strcasecmp() stuff. I do that define to prevent
me and other contributors to accidentaly use that function name instead
of strequal()...
- I bugfixed Angus's getpass.c very little.
- Fixed the verbose flag names to getopt-style, i.e 'curl --loc' will be
sufficient instead of --location as "loc" is a unique prefix. Also, anything
after a '--' is treated as an URL. So if you do have a host with a weeeird
name you can do 'curl -- -host.com'.
- Another getopt-adjust; curl now accepts flags after the URL on the command
line. 'curl www.foo.com -O' is perfectly valid.
- Corrected the .curlrc parser so that strtok() is no longer used and I
believe it works better. Even URLs can be specified in it now.
Angus Mackay (Nov 9, 1998)
- Replaced getpass.c with a newly written one, not under GPL license
- Changed OS to a #define in config.h instead of compiler flag
- Makefile now uses -DHAVE_CONFIG_H
Daniel Stenberg (Nov 9, 1998)
- Ok, I expanded the tgz-target to update the version string on each occation
I build a release archive!
- I reacted on Angus Mackay's initiative and remade the parameter parser to
be more getopt compliant. Curl now supports "merged" flags as in
curl -lsv ftp.site.com
Do note that I had to move three short-names of the options. Parameters
that needs an additional string such as -x must be stand-alone or the
last in a merged sequence:
curl -lsx my-proxy ftp.site.com
is ok, but using the flags in a different order like '-lxs' would cause
unexpected results (as the 's' option would be skipped).
- I've changed the headers in all files that are subject to the MozPL
license, as they are supposed to look like when conforming.
- Made the configure script make the config.h. The former config.h is now
setup.h.
- The RESOURCES and TODO files have been added to the archive.
Angus Mackay (Nov 5, 1998)
- Fixed getpass.c and various configure stuff
Daniel Stenberg (Nov 3, 1998)
- Use -H/--header for custom HTTP-headers. Lets you pass on your own
specified headers to the remote server. I wouldn't recommend trying to use
a header with a defined usage according to standards. Use this flag once
for every custom header you want to add.
- Use -B/--ftp-ascii to force ftp to use ASCII mode when transfering files.
- Corrected the 'getlinks.pl' script, I accidentally left my silly proxy
usage in there! Since the introduction of the .curlrc file, it is easier to
write scripts that use curl since proxies and stuff should be in the
.curlrc file anyway.
- Introducing the new -F flag for HTTP POST. It supports multipart/form-data
which means it is gonna be possible to upload files etc through HTTP POST.
Shiraz Kanga asked for the feature and my brother,
Bj<42>rn Stenberg helped me design the user
interface for this beast. This feature requires quite some docs,
since it has turned out not only quite capable, but also complicated! :-)
- A note here, since I've received mail about it. SSLeay versions prior to
0.8 will *not* work with curl!
- Wil Langford reported a bug that occurred since curl
did not properly use CRLF when issuing ftp commands. I fixed it.
- Rearranged the order config files are read. .curlrc is now *always* read
first and before the command line flags. -K config files then act as
additional config items.
- Use -q AS THE FIRST OPTION specified to prevent .curlrc from being read.
- You can now disable a proxy by using -x "". Useful if the .curlrc file
specifies a proxy and you wanna fetch something without going through
that.
- I'm thinking of dropping the -p support. Its really not useful since ports
could (and should?) be specified as :<port> appended on the host name
instead, both in URLs and to proxy host names.
- Martin Staael reports curl -L bugs under Windows NT
(test with URL http://come.to/scsde). This bug is not present in this
version anymore.
- Added support for the weird FTP URL type= thing. You can download a file
using ASCII transfer by appending ";type=A" to the right of it. Other
available types are type=D for dir-list (NLST) and type=I for binary
transfer. I can't say I've ever seen anyone use this kind of URL though!
:-)
- Troy Engel pointed out a bug in my getenv("HOME")
usage for win32 systems. I introduce getenv.c to better cope with
this. Mr Engel helps me with the details around that...
- A little note to myself and others, I should make the win32-binary built
with SSL support...
- Ryan Nelson sent me comments about building curl
with SSL under FreeBSD. See the Makefile for details. Using the configure
script, it should work better and automatically now...
- Cleaned up in the port number mess in the source. No longer stores and uses
proxy port number separate from normal port number.
- 'configure' script working. Confirmed compiles on:
Host SSL Compiler
SunOS 5.5 no gcc
SunOS 5.5.1 yes gcc
SunOS 5.6 no cc (with gcc, it has the "gcc include files" problem)
SunOS 4.1.3 no gcc (without ANSI C headers)
SunOS 4.1.2 no gcc (native compiler failed)
Linux 2.0.18 no gcc
Linux 2.0.32 yes gcc
Linux 2.0.35 no gcc (with glibc)
IRIX 6.2 no gcc (cc compiles generate a few warnings)
IRIX 6.4 no cc (generated warnings though)
Win32 no Borland
OSF4.0 no ?
- Ooops. The 5beta (and 4.10) under win32 failed if the HOME variable wasn't
set.
- When using a proxy, curl now guesses and uses the protocol part in cases
like:
curl -x proxy:80 www.site.com
Proxies normally go nuts unless http:// is prepended to the host name, so
if curl is used like this, it guesses protocol and appends the protocol
string before passing it to the proxy. It already did this when used
without proxy.
- Better port usage with SSL through proxy now. If you specified a different
https-port when accessing through a proxy, it didn't use that number
correctly. I also rewrote the code that parses the stuff read from the
proxy when you wanna connect through it with SSL.
- Bjorn Reese helped me work around one of the compiler
warnings on IRIX native cc compiles.
Version 4.10 (Oct 26, 1998)
Daniel Stenberg
- John A. Bristor suggested a config file switch,
and since I've been having that idea kind of in the background for a long
time I rewrote the parameter parsing function a little and now I introduce
the -K/--config flag. I also made curl *always* (unless -K is used) try to
load the .curlrc file for command line parameters. The syntax for the
config file is the standard command line argument style. Details in 'curl
-h' or the README.
- I removed the -k option. Keep-alive isn't really anything anyone would
want to enable with curl anyway.
- Martin Staael helped me add the 'irix' target. Now
"make irix" should build curl successfully on non-gcc SGI machines.
- Single switches now toggle behaviours. I.e if you use -v -v the second
will switch off the verbose mode the first one enabled. This is so that
you can disable a default setting a .curlrc file enables etc.
Version 4.9 (Oct 7, 1998)
Daniel Stenberg
- Martin Staael suggested curl would support cookies.
I added -b/--cookie to enable free-text cookie data to be passed. There's
also a little blurb about general cookie stuff in the README/help text.
- dmh <dmh at jet.es> suggested HTTP resume capabilities. Although you could
manually get curl to resume HTTP documents, I made the -c resume flag work
for HTTP too (unless -r is used too, which would be very odd anyway).
- Added checklinks.pl to the archive. It is a still experimental perl script
that checks all links of a web page by using curl.
- Rearranged the archive hierarchy a little. Build the executable in the
src/ dir from now on!
- Version 4.9 and hereafter, is no longer released under the GPL license.
I have now updated the LEGAL file etc and now this is released using the
Mozilla Public License to avoid the plague known as "the GPL virus". You
must make the source available if you decide to change and/or redistribute
curl, but if you decide to use curl within something else you do not need
to offer the world the source to that too.
- Curl did not like HTTP servers that sent no headers at all on a GET
request. It is a violation of RFC2068 but appearantly some servers do
that anyway. Thanks to Gordon Beaton for the report!
- -L/--location was added after a suggestion from Martin Staael. This makes
curl ATTEMPT to follow the Location: redirect if one is present in the HTTP
headers. If -i or -I is used with this flag, you will see headers from all
sites the Location: points to. Do note that the first server can point to a
second that points to a third etc. It seems the Location: parameter (said
to be an AbsoluteURI in RFC2068) isn't always absolute.. :-/ Anyway, I've
made curl ATTEMPT to do the best it can to deal with the reality.
- Added getlinks.pl to the archive. getlinks.pl selectively downloads
files that a web page links to.
Version 4.8.4
Daniel Stenberg
- As Julian Romero Nieto reported, curl reported wrong version number.
- As Teemu Yli-Elsila pointed out, the win32 version of 4.8 (and probably all
other versions for win32) didn't work with binary files since I'm too used
to the UNIX style fopen() where binary and text don't differ...
- Ralph Beckmann brought me some changes that lets curl compile error and
warning free with -Wall -pedantic with g++. I also took the opportunity to
clean off some unused variables and similar.
- Ralph Beckmann made me aware of a really odd bug now corrected. When curl
read a set of headers from a HTTP server, divided into more than one read
and the first read showed a full line *exactly* (i.e ending with a
newline), curl did not behave well.
Version 4.8.3
Daniel Stenberg
- I was too quick to release 4.8.2 with too little testing. One of the
changes is now reverted slightly to the 4.8.1 way since 4.8.2 couldn't
upload files. I still think both problems corrected in 4.8.2 remain
corrected. Reported by Julian Romero Nieto.
Version 4.8.2
Daniel Stenberg
- Bernhard Iselborn reported two FTP protocol errors curl did. They're now
corrected. Both appeared when getting files from a MS FTP server! :-)
Version 4.8.1
Daniel Stenberg
- Added a last update of the progress meter when the transfer is done. The
final output on the screen didn't have to be the final size transfered
which made it sometimes look odd.
- Thanks to David Long I got rid of a silly bug that happened if a HTTP-page
had nothing but header. Appearantly Solaris deals with negative sizes in
fwrite() calls a lot better than Linux does... =B-]
Version 4.8
Daniel Stenberg
- Continue FTP file transfer. -c is the switch. Note that you need to
specify a file name if you wanna resume a download (you can't resume a
download sent to stdout). Resuming upload may be limited by the server
since curl is then using the non-RFC959 command SIZE to get the size of
the target file before upload begins (to figure out which offset to
use). Use -C to specify the offset yourself! -C is handy if you're doing
the output to something else but a plain file or when you just want to get
the end of a file.
- recursiveftpget.pl now features a maximum recursive level argument.
Version 4.7
Daniel Stenberg
- Added support to abort a download if the speed is below a certain amount
(speed-limit) bytes per second for a certain (speed-time) time.
- Wrote a perl script 'recursiveftpget.pl' to recursively use curl to get a
whole ftp directory tree. It is meant as an example of how curl can be
used. I agree it isn't the wisest thing to do to make a separate new
connection for each file and directory for this.
Version 4.6
Daniel Stenberg
- Added a first attempt to optionally parse the .netrc file for login user
and password. If used with http, it enables user authentication. -n is
the new switch.
- Removed the extra newlines on the default user-agent string.
- Corrected the missing ftp upload error messages when it failed without the
verbose flag set. Gary W. Swearingen found it.
- Now using alarm() to enable second-precision timeout even on the name
resolving/connecting phase. The timeout is although reset after that first
sequence. (This should be corrected.) Gary W. Swearingen reported.
- Now spells "Unknown" properly, as in "Unknown option 'z'"... :-)
- Added bug report email address in the README.
- Added a "current speed" field to the progress meter. It shows the average
speed the last 5 seconds. The other speed field shows the average speed of
the entire transfer so far.
Version 4.5.1
Linas Vepstas
- SSL through proxy fix
- Added -A to allow User-Agent: changes
Daniel Stenberg
- Made the -A work when SSL-through-proxy.
Version 4.5
Linas Vepstas
- More SSL corrections
- I've added a port to AIX.
- running SSL through a proxy causes a chunk of code to be executred twice.
one of those blocks needs to be deleted.
Daniel Stenberg
- Made -i and -I work again
Version 4.4
Linas Vepstas
- -x can now also specify proxyport when used as in 'proxyhost:proxyport'
- SSL fixes
Version 4.3
Daniel Stenberg
- Adjusted to compile under win32 (VisualC++ 5). The -P switch does not
support network interface names in win32. I couldn't figure out how!
Version 4.2
Linas Vepstas / Sampo Kellomaki
- Added SSL / SSLeay support (https://)
- Added the -T usage for HTTP POST.
Daniel Stenberg
- Bugfixed the SSL implementation.
- Made -P a lot better to use other IP addresses. It now accepts a following
parameter that can be either
interface - i.e "eth0" to specify which interface's IP address you
want to use
IP address - i.e "192.168.10.1" to specify exact IP number
host name - i.e "my.host.domain" to specify machine
"-" - (any single-letter string) to make it pick the machine's
default
- The Makefile is now ready to compile for solaris, sunos4 and linux right
out of the box.
- Better generated version string seen with 'curl -V'
Version 4.1
Daniel Stenberg
- The IP number returned by the ftp server as a reply to PASV does no longer
have to DNS resolve. In fact, no IP-number-only addresses have to anymore.
- Binds better to available port when -P is used.
- Now LISTs ./ instead of / when used as in ftp://ftp.funet.fi/. The reason
for this is that exactly that site, ftp.funet.fi, does not allow LIST /
while LIST ./ is fine. Any objections?
Version 4 (1998-03-20)
Daniel Stenberg
- I took another huge step and changed both version number and project name!
The reason for the new name is that there are just one too many programs
named urlget already and this program already can a lot more than merely
getting URLs, and the reason for the version number is that I did add the
pretty big change in -P and since I changed name I wanted to start with
something fresh!
- The --style flags are working better now.
- Listing directories with FTP often reported that the file transfer was
incomplete. Wrong assumptions were too common for directories, why no
size will be attempted to get compared on them from now on.
- Implemented the -P flag that let's the ftp control issue a PORT command
instead of the standard PASV.
- -a for appending FTP uploads works.
***************************************************************************
Version 3.12 (14 March 1998)
Daniel Stenberg
- End-of-header tracking still lacked support for \r\n or just \n at the
end of the last header line.
Sergio Barresi
- Added PROXY authentication.
Rafael Sagula
- Fixed some little bugs.
Version 3.11
Daniel Stenberg
- The header parsing was still not correct since the 3.2 modification...
Version 3.10
Daniel Stenberg
- 3.7 and 3.9 were simultaneously developed and merged into this version.
- FTP upload did not work correctly since 3.2.
Version 3.9
Rafael Sagula
- Added the "-e <url> / --referer <url>" option where we can specify
the referer page. Obviously, this is necessary only to fool the
server, but...
Version 3.7
Daniel Stenberg
- Now checks the last error code sent from the ftp server after a file has
been received or uploaded. Wasn't done previously.
- When 'urlget <host>' is used without a 'protocol://' first in the host part,
it now checks for host names starting with ftp or gopher and if it does,
it uses that protocol by default instead of http.
Version 3.6
Daniel Stenberg
- Silly mistake made the POST bug. This has now also been tested to work with
proxy.
Version 3.5
Daniel Stenberg
- Highly inspired by Rafael Sagula's changes to the 3.1 that added an almost
functional POST, I applied his changes into this version and made them work.
(It seems POST requires the Content-Type and Content-Length headers.) It is
now usable with the -d switch.
Version 3.3 - 3.4
Passed to avoid confusions
Version 3.2
Daniel Stenberg
- Major rewrite of two crucial parts of this code: upload and download.
They are both now using a select() switch, that allows much better
progress meter and time control.
- alarm() usage removed completely
- FTP get can now list directory contents if the path ends with a slash '/'.
Urlget on a ftp-path that doesn't end with a slash means urlget will
attempt getting it as a file name.
- FTP directory view supports -l for "list-only" which lists the file names
only.
- All operations support -m for max time usage in seconds allowed.
- FTP upload now allows the size of the uploaded file to be provided, and
thus it can better check it actually uploaded the whole file. It also
makes the progress meter for uploads much better!
- Made the parameter parsing fail in cases like 'urlget -r 900' which
previously tried to connect to the host named '900'.
Version 3.1
Kjell Ericson
- Pointed out how to correct the 3 warnings in win32-compiles.
Daniel Stenberg
- Removed all calls to exit().
- Made the short help text get written to stdout instead of stderr.
- Made this file instead of keeping these comments in the source.
- Made two callback hooks, that enable external programs to use urlget()
easier and to grab the output/offer the input easier.
- It is evident that Win32-compiles are painful. I watched the output from
the Borland C++ v5 and it was awful. Just ignore all those warnings.
Version 3.0
Daniel Stenberg
- Added FTP upload capabilities. The name urlget gets a bit silly now
when we can put too... =)
- Restructured the source quite a lot.
Changed the urlget() interface. This way, we will survive changes much
better. New features can come and old can be removed without us needing
to change the interface. I've written a small explanation in urlget.h
that explains it.
- New flags include -t, -T, -O and -h. The -h text is generated by the new
mkhelp script.
Version 2.9
Remco van Hooff
- Added a fix to make it compile smoothly on Amiga using the SAS/C
compiler.
Daniel Stenberg
- Believe it or not, but the STUPID Novell web server seems to require
that the Host: keyword is used, so well I use it and I (re-introduce) the
urlget User-Agent:. I still have to check that this Host: usage works with
proxies... 'Host:' is required for HTTP/1.1 GET according to RFC2068.
Version 2.8
Rafael Sagula
- some little modifications
Version 2.7
Daniel Stenberg
- Removed the -l option and introduced the -f option instead. Now I'll
rewrite the former -l kludge in an external script that'll use urlget to
fetch multipart files like that.
- '-f' is introduced, it means Fail without output in case of HTTP server
errors (return code >=300).
- Added support for -r, ranges. Specify which part of a document you
want, and only that part is returned. Only with HTTP/1.1-servers.
- Split up the source in 3 parts. Now all pure URL functions are in
urlget.c and stuff that deals with the stand-alone program is in main.c.
- I took a few minutes and wrote an embryo of a README file to explain
a few things.
Version 2.6
Daniel Stenberg
- Made the -l (loop) thing use the new CONF_FAILONERROR which makes
urlget() return error code if non-successful. It also won't output anything
then. Now finally removed the HTTP 1.0 and error 404 dependencies.
- Added -I which uses the HEAD request to get the header only from a
http-server.
Version 2.5
Rafael Sagula
- Made the progress meter use HHH:MM:SS instead of only seconds.
Version 2.4
Daniel Stenberg
- Added progress meter. It appears when downloading > BUFFER SIZE and
mute is not selected. I found out that when downloading large files from
really really slow sites, it is desirable to know the status of the
download. Do note that some downloads are done unawaring of the size, which
makes the progress meter less thrilling ;) If the output is sent to a tty,
the progress meter is shut off.
- Increased buffer size used for reading.
- Added length checks in the user+passwd parsing.
- Made it grok user+passwd for HTTP fetches. The trick is to base64
encode the user+passwd and send an extra header line. Read chapter 11.1 in
RFC2068 for details. I added it to be used just like the ftp one. To get a
http document from a place that requires user and password, use an URL
like:
http://user:passwd@www.site.to.leach/doc.html
I also added the -u flag, since WHEN USING A PROXY YOU CAN'T SPECIFY THE
USER AND PASSWORD WITH HTTP LIKE THAT. The -u flag works for ftp too, but
not if used with proxy. To do the same as the above one, you can invoke:
urlget -u user:passwd http://www.site.to.leach/doc.html
Version 2.3
Rafael Sagula
- Added "-o" option (output file)
- Added URG_HTTP_NOT_FOUND return code.
(Daniel's note:)
Perhaps we should detect all kinds of errors and instead of writing that
custom string for the particular 404-error, use the error text we actually
get from the server. See further details in RFC2068 (HTTP 1.1
definition). The current way also relies on a HTTP/1.0 reply, which newer
servers might not do.
- Looping mode ("-l" option). It's easier to get various split files.
(Daniel's note:)
Use it like 'urlget -l 1 http://from.this.site/file%d.html', which will
make urlget to attempt to fetch all files named file1.html, file2.html etc
until no more files are found. This is only a modification of the
STAND_ALONE part, nothing in the urlget() function was modfified for this.
Daniel Stenberg
- Changed the -h to be -i instead. -h should be preserved to help use.
- Bjorn Reese indicated that Borland _might_ use '_WIN32' instead of the
VC++ WIN32 define and therefore I added a little fix for that.
Version 2.2
Johan Andersson
- The urlget function didn't set the path to url when using proxy.
- Fixed bug with IMC proxy. Now using (almost) complete GET command.
Daniel Stenberg
- Made it compile on Solaris. Had to reorganize the includes a bit.
(so Win32, Linux, SunOS 4 and Solaris 2 compile fine.)
- Made Johan's keepalive keyword optional with the -k flag (since it
makes a lot of urlgets take a lot longer time).
- Made a '-h' switch in case you want the HTTP-header in the output.
Version 2.1
Daniel Stenberg and Kjell Ericson
- Win32-compilable
- No more global variables
- Mute option (no output at all to stderr)
- Full range of return codes from urlget(), which is now written to be a
function for easy-to-use in [other] programs.
- Define STAND_ALONE to compile the stand alone urlget program
- Now compiles with gcc options -ansi -Wall -pedantic ;)
Version 2.0
- Introducing ftp GET support. The FTP URL type is recognized and used.
- Renamed the project to 'urlget'.
- Supports the user+passwd in the FTP URL (otherwise it tries anonymous
login with a weird email address as password).
Version 1.5
Daniel Stenberg
- The skip_header() crap messed it up big-time. By simply removing that
one we can all of a sudden download anything ;)
- No longer requires a trailing slash on the URLs.
- If the given URL isn't prefixed with 'http://', HTTP is assumed and
given a try!
- 'void main()' is history.
Version 1.4
Daniel Stenberg
- The gopher source used the ppath variable instead of path which could
lead to disaster.
Version 1.3
Daniel Stenberg
- Well, I added a lame text about the time it took to get the data. I also
fought against Johan to prevent his -f option (to specify a file name
that should be written instead of stdout)! =)
- Made it write 'connection refused' for that particular connect()
problem.
- Renumbered the version. Let's not make silly 1.0.X versions, this is
a plain 1.3 instead.
Version 1.2
Johan Andersson
- Discovered and fixed the problem with getting binary files. puts() is
now replaced with fwrite(). (Daniel's note: this also fixed the buffer
overwrite problem I found in the previous version.)
Rafael Sagula
- Let "-p" before "-x".
Daniel Stenberg
- Bugfixed the proxy usage. It should *NOT* use nor strip the port number
from the URL but simply pass that information to the proxy. This also
made the user/password fields possible to use in proxy [ftp-] URLs.
(like in ftp://user:password@ftp.my.site:8021/README)
Johan Andersson
- Implemented HTTP proxy support.
- Receive byte counter added.
Bjorn Reese
- Implemented URLs (and skipped the old syntax).
- Output is written to stdout, so to achieve the above example, do:
httpget http://143.54.10.6/info_logo.gif > test.gif
Version 1.1
Daniel Stenberg
- Adjusted it slightly to accept named hosts on the command line. We
wouldn't wanna use IP numbers for the rest of our lifes, would we?
Version 1.0
Rafael Sagula
- Wrote the initial httpget, which started all this!

835
CHANGES.1999 Normal file
View File

@@ -0,0 +1,835 @@
Daniel (28 December 1999):
- Tim Verhoeven correctly identified that curl
doesn't support URL formatted file names when getting ftp. Now, there's a
problem with getting very weird file names off FTP servers. RFC 959 defines
that the file name syntax to use should be the same as in the native OS of
the server. Since we don't know the peer server system we currently just
translate the URL syntax into plain letters. It is still better and with
the solaris 2.6-supplied ftp server it works with spaces in the file names.
Daniel (27 December 1999):
- When curl parsed cookies straight off a remote site, it corrupted the input
data, which, if the downloaded headers were stored made very odd characters
in the saved data. Correctly identified and reported by Paul Harrington.
Daniel (13 December 1999):
- General cleanups in the library interface. There had been some bad kludges
added during times of stress and I did my best to clean them off. It was
both regarding the lib API as well as include file confusions.
Daniel (3 December 1999):
- A small --stderr bug was reported by Eetu Ojanen...
- who also brought the suggestion of extending the -X flag to ftp list as
well. So, now it is and the long option is now --request instead. It is
only for ftp list for now (and the former http stuff too of course).
Lars J. Aas (24 November 1999):
- Patched curl to compile and build under BeOS. Doesn't work yet though!
- Corrected the Makefile.am files to allow putting object files in
different directories than the sources.
Version 6.3.1
Daniel (23 November 1999):
- I've had this major disk crash. My good old trust-worthy source disk died
along with the machine that hosted it. Thank goodness most of all the
things I've done are either backed up elsewhere or stored in this CVS
server!
- Michael S. Steuer pointed out a bug in the -F handling
that made curl hang if you posted an empty variable such as '-F name='. It
was one of those old bugs that never have worked properly...
- Jason Baietto pointed out a general flaw in the HTTP
download. Curl didn't complain if it was prematurely aborted before the
entire download was completed. It does now.
Daniel (19 November 1999):
- Chris Maltby very accurately criticized the lack of
return code checks on the fwrite() calls. I did a thorough check for all
occurrences and corrected this.
Daniel (17 November 1999):
- Paul Harrington pointed out that the -m/--max-time option
doesn't work for the slow system calls like gethostbyname()... I don't have
any good fix yet, just a slightly less bad one that makes curl exit hard
when the timeout is reached.
- Bjorn Reese helped me point out a possible problem that might be the reason
why Thomas Hurst experience problems in his Amiga version.
Daniel (12 November 1999):
- I found a crash in the new cookie file parser. It crashed when you gave
a plain http header file as input...
Version 6.3
Daniel (10 November 1999):
- I kind of found out that the HTTP time-conditional GETs (-z) aren't always
respected by the web server and the document is therefore sent in whole
again, even though it doesn't match the requested condition. After reading
section 13.3.4 of RFC 2616, I think I'm doing the right thing now when I do
my own check as well. If curl thinks the condition isn't met, the transfer
is aborted prematurely (after all the headers have been received).
- After comments from Robert Linden I also rewrote some parts of the man page
to better describe how the -F works.
- Michael Anti put up a new curl download mirror in
China: http://www.pshowing.com/curl/
- I added the list of download mirrors to the README file
- I did add more explanations to the man page
Daniel (8 November 1999):
- I made the -b/--cookie option capable of reading netscape formatted cookie
files as well as normal http-header files. It should be able to
transparently figure out what kind of file it got as input.
Daniel (29 October 1999):
- Another one of Sebastiaan van Erk's ideas (that has been requested before
but I seem to have forgotten who it was), is to add support for ranges in
FTP downloads. As usual, one request is just a request, when they're two
it is a demand. I've added simple support for X-Y style fetches. X has to
be the lower number, though you may omit one of the numbers. Use the -r/
--range switch (previously HTTP-only).
- Sebastiaan van Erk suggested that curl should be
able to show the file size of a specified file. I think this is a splendid
idea and the -I flag is now working for FTP. It displays the file size in
this manner:
Content-Length: XXXX
As it resembles normal headers, and leaves us the opportunity to add more
info in that display if we can come up with more in the future! It also
makes sense since if you access ftp through a HTTP proxy, you'd get the
file size the same way.
I changed the order of the QUOTE command executions. They're now executed
just after the login and before any other command. I made this to enable
quote commands to run before the -I stuff is done too.
- I found out that -D/--dump-header and -V/--version weren't documented in
the man page.
- Many HTTP/1.1 servers do not support ranges. Don't ask me why. I did add
some text about this in the man page for the range option. The thread in
the mailing list that started this was initiated by Michael Anti.
- I get reports about nroff crashes on solaris 2.6+ when displaying the curl
man page. Switch to gnroff instead, it is reported to work(!). Adam Barclay
reported and brought the suggestion.
- In a dialogue with Johannes G. Kristinsson we came
up with the idea to let -H/--header specified headers replace the
internally generated headers, if you happened to select to add a header
that curl normally uses by itself. The advantage with this is not entirely
obvious, but in Johannes' case it means that he can use another Host: than
the one curl would set.
Daniel (27 October 1999):
- Jongki Suwandi brought a nice patch for (yet another) crash when following
a location:. This time you had to follow a https:// server's redirect to
get the core.
Version 6.2
Daniel (21 October 1999):
- I think I managed to remove the suspicious (nil) that has been seen just
before the "Host:" in HTTP requests when -v was used.
- I found out that if you followed a location: when using a proxy, without
having specified http:// in the URL, the protocol part was added once again
when moving to the next URL! (The protocol part has to be added to the
URL when going through a proxy since it has no protocol-guessing system
such as curl has.)
- Benjamin Ritcey reported a core dump under solaris 2.6
with OpenSSL 0.9.4. It turned out this was due to a bad free() in main.c
that occurred after the download was done and completed.
- Benjamin found ftp downloads to show the first line of the download meter
to get written twice, and I removed that problem. It was introduced with
the multiple URL support.
- Dan Zitter correctly pointed out that curl 6.1 and earlier versions didn't
honor RFC 2616 chapter 4 section 2, "Message Headers": "...Field names are
case-insensitive..." HTTP header parsing assumed a certain casing. Dan
also provided me with a patch that corrected this, which I took the liberty
of editing slightly.
- Dan Zitter also provided a nice patch for config.guess to better recognize
the Mac OS X
- Dan also corrected a minor problem in the lib/Makefile that caused linking
to fail on OS X.
Daniel (19 October 1999):
- Len Marinaccio came up with some problems with curl. Since Windows has a
crippled shell, it can't redirect stderr and that causes trouble. I added
--stderr today which allows the user to redirect the stderr stream to a
file or stdout.
Daniel (18 October 1999):
- The configure script now understands the '--without-ssl' flag, which now
totally disable SSL/https support. Previously it wasn't possible to force
the configure script to leave SSL alone. The previous functionality has
been retained. Troy Engel helped test this new one.
Version 6.1
Daniel (17 October 1999):
- I ifdef'ed or commented all the zlib stuff in the sources and configure
script. It turned out we needed to mock more with zlib than I initially
thought, to make it capable of downloading compressed HTTP documents and
uncompress them on the fly. I didn't mean the zlib parts of curl to become
more than minor so this means I halt the zlib expedition for now and wait
until someone either writes the code or zlib gets updated and better
adjusted for this kind of usage. I won't get into details here, but a
short a summary is suitable:
- zlib can't automatically detect whether to use zlib or gzip
decompression methods.
- zlib is very neat for reading gzipped files from a file descriptor,
although not as nice for reading buffer-based data such as we would
want it.
- there are still some problems with the win32 version when reading from
a file descriptor if that is a socket
Daniel (14 October 1999):
- Moved the (external) include files for libcurl into a subdirectory named
curl and adjusted all #include lines to use <curl/XXXX> to maintain a
better name space and control of the headers. This has been requested.
Daniel (12 October 1999):
- I modified the 'maketgz' script to perform a 'make' too before a release
archive is put together in an attempt to make the time stamps better and
hopefully avoid the double configure-running that use to occur.
Daniel (11 October 1999):
- Applied J<>rn's patches that fixes zlib for mingw32 compiles as well as
some other missing zlib #ifdef and more text on the multiple URL docs in
the man page.
Version 6.1beta
Daniel (6 October 1999):
- Douglas E. Wegscheid sent me a patch that made the exact same thing as I
just made: the -d switch is now capable of reading post data from a named
file or stdin. Use it similarly to the -F. To read the post data from a
given file:
curl -d @path/to/filename www.postsite.com
or let curl read it out from stdin:
curl -d @- www.postit.com
J<>rn Hartroth (3 October 1999):
- Brought some more patches for multiple URL functionality. The MIME
separation ideas are almost scrapped now, and a custom separator is being
used instead. This is still compile-time "flagged".
Daniel
- Updated curl.1 with multiple URL info.
Daniel (30 September 1999):
- Felix von Leitner brought openssl-check fixes for configure.in to work
out-of-the-box when the openssl files are installed in the system default
dirs.
Daniel (28 September 1999)
- Added libz functionality. This should enable decompressing gzip, compress
or deflate encoding HTTP documents. It also makes curl send an accept that
it accepts that kind of encoding. Compressed contents usually shortens
download time. I *need* someone to tell me a site that uses compressed HTTP
documents so that I can test this out properly.
- As a result of the adding of zlib awareness, I changed the version string
a little. I plan to add openldap version reporting in there too.
Daniel (17 September 1999)
- Made the -F option allow stdin when specifying files. By using '-' instead
of file name, the data will be read from stdin.
Version 6.0
Daniel (13 September 1999)
- Added -X/--http-request <request> to enable any HTTP command to be sent.
Do not that your server has to support the exact string you enter. This
should possibly a string like DELETE or TRACE.
- Applied Douglas' mingw32-fixes for the makefiles.
Daniel (10 September 1999)
- Douglas E. Wegscheid pointed out a problem. Curl didn't check the FTP
servers return code properly after the --quote commands were issued. It
took anything non 200 as an error, when all 2XX codes should be accepted as
OK.
- Sending cookies to the same site in multiple lines like curl used to do
turned out to be bad and breaking the cookie specs. Curl now sends all
cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I
doubt that many servers do use that syntax (yet).
Daniel (8 September 1999)
- J<>rn helped me make sure it still compiles nicely with mingw32 under win32.
Daniel (7 September 1999)
- FTP upload through proxy is now turned into a HTTP PUT. Requested by
Stefan Kanthak.
- Added the ldap files to the .m32 makefile.
Daniel (3 September 1999)
- Made cookie matching work while using HTTP proxy.
Bjorn Reese (31 August 1999)
- Passed his ldap:// patch. Note that this requires the openldap shared
library to be installed and that LD_LIBRARY_PATH points to the
directory where the lib will be found when curl is run with a
ldap:// URL.
J<>rn Hartroth (31 August 1999)
- Made the Mingw32 makefiles into single files.
- Made file:// work for Win32. The same code is now used for unix as well for
performance reasons.
Douglas E. Wegscheid (30 August 1999)
- Patched the Mingw32 makefiles for SSL builds.
Matthew Clarke (30 August 1999)
- Made a cool patch for configure.in to allow --with-ssl to specify the
root dir of the openssl installation, as in
./configure --with-ssl=/usr/ssl_here
- Corrected the 'reconf' script to work better with some shells.
J<>rn Hartroth (26 August 1999)
- Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32
compiles.
Version 5.11
Daniel (25 August 1999)
- John Weismiller pointed out a bug in the header-line
realloc() system in download.c.
- I added lib/file.[ch] to offer a first, simple, file:// support. It
probably won't do much good on win32 system at this point, but I see it
as a start.
- Made the release archives get a Makefile in the root dir, which can be
used to start the compiling/building process easier. I haven't really
changed any INSTALL text yet, I wanted to get some feed-back on this
first.
Daniel (17 August 1999)
- Another Location: bug. Curl didn't do proper relative locations if the
original URL had cgi-parameters that contained a slash. Nusu's page
again.
- Corrected the NO_PROXY usage. It is a list of substrings that if one of
them matches the tail of the host name it should connect to, curl should
not use a proxy to connect there. Pointed out to me by Douglas
E. Wegscheid. I also changed the README text a little regarding this.
Daniel (16 August 1999)
- Fixed a memory bug with http-servers that sent Location: to a Location:
page. Nusu's page showed this too.
- Made cookies work a lot better. Setting the same cookie name several times
used to add more cookies instead of replacing the former one which it
should've. Nusu <nus at intergorj.ro> brought me an URL that made this
painfully visible...
Troy (15 August 1999)
- Brought new .spec files as well as a patch for configure.in that lets the
configure script find the openssl files better, even when the include
files are in /usr/include/openssl
Version 5.10
Daniel (13 August 1999)
- SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of
OpenSSL. Now why couldn't they simply add a *new* function instead of
modifying the parameters of an already existing function? This way, we get
a compiler warning if compiling with 0.9.4 but not with earlier. So, I had
to come up with a #if construction that deals with this...
- Made curl output the SSL version number get displayed properly with 0.9.4.
Troy (12 August 1999)
- Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also
a bit rearranged.
Daniel (12 August 1999)
- I had to copy a good <arpa/telnet.h> include file into the curl source
tree to enable the silly win32 systems to compile. The distribution rights
allows us to do that as long as the file remains unmodified.
- I corrected a few minor things that made the compiler complain when
-Wall -pedantic was used.
- I'm moving the official curl web page to http://curl.haxx.nu. I think it
will make it easier to remember as it is a lot shorter and less cryptic.
The old one still works and shows the same info.
Daniel (11 August 1999)
- Albert Chin-A-Young mailed me another correction for NROFF in the
configure.in that is supposed to be better for IRIX users.
Daniel (10 August 1999)
- Albert Chin-A-Young helped me with some stupid Makefile things, as well as
some fiddling with the getdate.c stuff that he had problems with under
HP-UX v10. getdate.y will now be compiled into getdate.c if the appropriate
yacc or bison is found by the configure script. Since this is slightly new,
we need to test the output getdate.c with win32 systems to make sure it
still compiles there.
Daniel (5 August 1999)
- I've just setup a new mailing list with the intention to keep discussions
around libcurl development in it. I mainly expect it to be for thoughts and
brainstorming around a "next generation" library, rather than nitpicking
about the current implementation or details in the current libcurl.
To join our happy bunch of future-looking geeks, enter 'subscribe
<address>' in the body of a mail and send it to
libcurl-request@listserv.fts.frontec.se. Curl bug reports, the usual curl
talk and everything else should still be kept in this mailing list. I've
started to archive this mailing list and have put the libcurl web page at
www.fts.frontec.se/~dast/libcurl/.
- Stefan Kanthak contacted me regarding a few problems in the configure
script which he discovered when trying to make curl compile and build under
Siemens SINIX-Z V5.42B2004!
- Marcus Klein very accurately informed me that src/version.h was not present
in the CVS repository. Oh, how silly...
- Linus Nielsen rewrote the telnet:// part and now curl offers limited telnet
support. If you run curl like 'curl telnet://host' you'll get all output on
the screen and curl will read input from stdin. You'll be able to login and
run commands etc, but since the output is buffered, expect to get a little
weird output.
This is still in its infancy and it might get changed. We need your
feed-back and input in how this is best done.
WIN32 NOTE: I bet we'll get problems when trying to compile the current
lib/telnet.c on win32, but I think we can sort them out in time.
- David Sanderson reported that FORCE_ALLOCA_H or HAVE_ALLOCA_H must be
defined for getdate.c to compile properly on HP-UX 11.0. I updated the
configure script to check for alloca.h which should make it.
Daniel (4 August 1999)
- I finally got to understand Marcus Klein's ftp download resume problem,
which turns out to be due to different outputs from different ftp
servers. It makes ftp download resuming a little trickier, but I've made
some modifications I really believe will work for most ftp servers and I do
hope you report if you have problems with this!
- Added text about file transfer resuming to README.curl.
Daniel (2 August 1999)
- Applied a progress-bar patch from Lars J. Aas. It offers
a new styled progress bar enabled with -#/--progress-bar.
T. Yamada <tai at imasy.or.jp> (30 July 1999)
- It breaks with segfault when 1) curl is using .netrc to obtain
username/password (option '-n'), and 2) is automatically redirected to
another location (option '-L').
There is a small bug in lib/url.c (block starting from line 641), which
tries to take out username/password from user- supplied command-line
argument ('-u' option). This block is never executed on first attempt since
CONF_USERPWD bit isn't set at first, but curl later turns it on when it
checks for CONF_NETRC bit. So when curl tries to redo everything due to
redirection, it segfaults trying to access *data->userpwd.
Version 5.9.1
Daniel (30 July 1999)
- Steve Walch pointed out that there is a memory leak in the formdata
functions. I added a FormFree() function that is now used and supposed to
correct this flaw.
- Mark Wotton reported:
'curl -L https://www.cwa.com.au/' core dumps. I managed to cure this by
correcting the cleanup procedure. The bug seems to be gone with my OpenSSL
0.9.2b, although still occurs when I run the ~100 years old SSLeay 0.8.0. I
don't know whether it is curl or SSLeay that is to blame for that.
- Marcus Klein:
Reported an FTP upload resume bug that I really can't repeat nor understand.
I leave it here so that it won't be forgotten.
Daniel (29 July 1999)
- Costya Shulyupin suggested support for longer URLs when following Location:
and I could only agree and fix it!
- Leigh Purdie found a problem in the upload/POST department. It turned out
that http.c accidentaly cleared the pointer instead of the byte counter
when supposed to.
- Costya Shulyupin pointed out a problem with port numbers and Location:. If
you had a server at a non-standard port that redirected to an URL using a
standard port number, curl still used that first port number.
- Ralph Beckmann pointed out a problem when using both CONF_FOLLOWLOCATION
and CONF_FAILONERROR simultaneously. Since the CONF_FAILONERROR exits on
the 302-code that the follow location header outputs it will never show any
html on location: pages. I have now made it look for >=400 codes if
CONF_FOLLOWLOCATION is set.
- 'struct slist' is now renamed to 'struct curl_slist' (as suggested by Ralph
Beckmann).
- Joshua Swink and Rick Welykochy were the first to point out to me that the
latest OpenSSL package now have moved the standard include path. It is now
in /usr/local/ssl/include/openssl and I have now modified the --enable-ssl
option for the configure script to use that as the primary path, and I
leave the former path too to work with older packages of OpenSSL too.
Daniel (9 June 1999)
- I finally understood the IRIX problem and now it seem to compile on it!
I am gonna remove those #define strcasecmp() things once and for all now.
Daniel (4 June 1999)
- I adjusted the FTP reply 227 parser to make the PASV command work better
with more ftp servers. Appearantly the Roxen Challanger server replied
something curl 5.9 could deal with! :-( Reported by Ashley Reid-Montanaro
and Mark Butler brought a solution for it.
Daniel (26 May 1999)
- Rearranged. README is new, the old one is now README.curl and I added a
README.libcurl with text I got from Ralph Beckmann.
- I also updated the INSTALL text.
Daniel (25 May 1999)
- David Jonathan Lowsky correctly pointed out that curl didn't properly deal
with form posting where the variable shouldn't have any content, as in curl
-F "form=" www.site.com. It was now fixed.
Version 5.9
Daniel (22 May 1999)
- I've got a bug report from Aaron Scarisbrick in which he states he has some
problems with -L under FreeBSD 3.0. I have previously got another bug
report from Stefan Grether which points at an error with similar sympthoms
when using win32. I made the allocation of the new url string a bit faster
and different, don't know if it actually improves anything though...
Daniel (20 May 1999)
- Made the cookie parser deal with CRLF newlines too.
Daniel (19 May 1999)
- Download() didn't properly deal with failing return codes from the sread()
function. Adam Coyne found the problem in the win32 version, and Troy Engel
helped me out isolating it.
Daniel (16 May 1999)
- Richard Adams pointed out a bug I introduced in 5.8. --dump-header doesn't
work anymore! :-/ I fixed it now.
- After a suggestion by Joshua Swink I added -S / --show-error to force curl
to display the error message in case of an error, even if -s/--silent was
used.
Daniel (10 May 1999)
- I moved the stuff concerning HTTP, DICT and TELNET it their own source
files now. It is a beginning on my clean-up of the sources to make them
layer all those protocols better to enable more to be added easier in the
future!
- Leon Breedt sent me some files I've not put into the main curl
archive. They're for creating the Debian package thingie. He also sent me a
debian package that I've made available for download at the web page
Daniel (9 May 1999)
- Made it compile on cygwin too.
Troy Engel (7 May 1999)
- Brought a series of patches to allow curl to compile smoothly on MSVC++ 6
again!
Daniel (6 May 1999)
- I changed the #ifdef HAVE_STRFTIME placement for the -z code so that it
will be easier to discover systems that don't have that function and thus
can't use -z successfully. Made the strftime() get used if WIN32 is defined
too.
Version 5.8
Daniel (5 May 1999)
- I've had it with this autoconf/automake mess. It seems to work allright
for most people who don't have automake installed, but for those who have
there are problems all over.
I've got like five different bug reports on this only the last
week... Claudio Neves and Federico Bianchi and root <duggerj001 at
hawaii.rr.com> are some of them reporting this.
Currently, I have no really good fix since I want to use automake myself to
generate the Makefile.in files. I've found out that the @SHELL@-problems
can often be fixed by manually invoking 'automake' in the archive root
before you run ./configure... I've hacked my maketgz script now to fiddle
a bit with this and my tests seem to work better than before at least!
Daniel (4 May 1999)
- mkhelp.pl has been doing badly lately. I corrected a case problem in
the regexes.
- I've now remade the -o option to not touch the file unless it needs to.
I had to do this to make -z option really fine, since now you can make a
curl fetch and use a local copy's time when downloading to that file, as
in:
curl -z dump -o dump remote.site.com/file.html
This will only get the file if the remote one is newer than the local.
I'm aware that this alters previous behaviour a little. Some scripts out
there may depend on that the file is always touched...
- Corrected a bug in the SSLv2/v3 selection.
- Felix von Leitner requested that curl should be able to send
"If-Modified-Since" headers, which indeed is a fair idea. I implemented it
right away! Try -z <expression> where expression is a full GNU date
expression or a file name to get the date from!
Stephan Lagerholm (30 Apr 1999)
- Pointed out a problem with the src/Makefile for FreeBSD. The RM variable
isn't set and causes the make to fail.
Daniel (26 April 1999)
- Am I silly or what? Irving Wolfe pointed out to me that the curl version
number was not set properly. Hasn't been since 5.6. This was due to a bug
in my maketgz script!
David Eriksson (25 Apr 1999)
- Found a bug in cookies.c that made it crash at times.
Version 5.7.1
Doug Kaufman (23 Apr 1999)
- Brought two sunos 4 fixes. One of them being the hostip.c fix mentioned
below and the other one a correction in include/stdcheaders.h
- Added a paragraph about compiling with the US-version of openssl to the
INSTALL file.
Daniel
- New mailing list address. Info updated on the web page as well as in the
README file
Greg Onufer (20 Apr 1999)
- hostip.c didn't compile properly on SunOS 5.5.1.
It needs an #include <sys/types.h>
Version 5.7
Daniel (Apr 20 1999)
- Decided to upload a non-beta version right now!
- Made curl support any-length HTTP headers. The destination buffer is now
simply enlarged every time it turns out to be too small!
- Added the FAQ file to the archive. Still a bit smallish, but it is a
start.
Eric Thelin (15 Apr 1999)
- Made -D accept '-' instead of filename to write to stdout.
Version 5.6.3beta
Daniel (Apr 12 1999)
- Changed two #ifdef WIN32 to better #ifdef <errorcode> when connect()ing
in url.c and ftp.c. Makes cygwin32 deal with them better too. We should
try to get some decent win32-replacement there. Anyone?
- The old -3/--crlf option is now ONLY --crlf!
- I changed the "SSL fix" to a more lame one, but that doesn't remove as
much functionality. Now I've enabled the lib to select what SSL version it
should try first. Appearantly some older SSL-servers don't like when you
talk v3 with them so you need to be able to force curl to talk v2 from the
start. The fix dated April 6 and posted on the mailing list forced curl to
use v2 at all times using a modern OpenSSL version, but we don't really
want such a crippled solution.
- Marc Boucher sent me a patch that corrected a math error for the
"Curr.Speed" progress meter.
- Eric Thelin sent me a patch that enables '-K -' to read a config file from
stdin.
- I found out we didn't close the file properly before so I added it!
Daniel (Apr 9 1999)
- Yu Xin pointed out a problem with ftp download resume. It didn't work at
all! ;-O
Daniel (Apr 6 1999)
- Corrected the version string part generated for the SSL version.
- I found a way to make some other SSL page work with openssl 0.9.1+ that
previously didn't (ssleay 0.8.0 works with it though!). Trying to get
some real info from the OpenSSL guys to see how I should do to behave the
best way. SSLeay 0.8.0 shouldn't be that much in use anyway these days!
Version 5.6.2beta
Daniel (Apr 4 1999)
- Finally have curl more cookie "aware". Now read carefully. This is how
it works.
To make curl read cookies from an already existing file, in plain header-
format (like from the headers of a previous fetch) invoke curl with the
-b flag like:
curl -b file http://site/foo.html
Curl will then use all cookies it finds matching. The old style that sets
a single cookie with -b is still supported and is used if the string
following -b includes a '=' letter, as in "-b name=daniel".
To make curl read the cookies sent in combination with a location: (which
sites often do) point curl to read a non-existing file at first (i.e
to start with no existing cookies), like:
curl -b nowhere http://site/setcookieandrelocate.html
- Added a paragraph in the TODO file about the SSL problems recently
reported. Evidently, some kind of SSL-problem curl may need to address.
- Better "Location:" following.
Douglas E. Wegscheid (Tue, 30 Mar 1999)
- A subsecond display patch.
Daniel (Mar 14 1999)
- I've separated the version number of libcurl and curl now. To make
things a little easier, I decided to start the curl numbering from
5.6 and the former version number known as "curl" is now the one
set for libcurl.
- Removed the 'enable-no-pass' from configure, I doubt anyone wanted
that.
- Made lots of tiny adjustments to compile smoothly with cygwin under
win32. It's a killer for porting this to win32, bye bye VC++! ;-)
Compiles and builds out-of-the-box now. See the new wordings in
INSTALL for details.
- Beginning experiments with downloading multiple document from a http
server while remaining connected.
Version 5.6beta
Daniel (Mar 13 1999)
- Since I've changed so much, I thought I'd just go ahead and implement the
suggestion from Douglas E. Wegscheid. -D or --dump-header is now storing
HTTP headers separately in the specified file.
- Added new text to INSTALL on what to do to build this on win32 now.
- Aaargh. I had to take a step back and prefix the shared #include files
in the sources with "../include/" to please VC++...
Daniel (Mar 12 1999)
- Split the url.c source into many tiny sources for better readability
and smaller size.
Daniel (Mar 11 1999)
- Started to change stuff for a move to make libcurl and a more separate
curl application that uses the libcurl. Made the libcurl sources into
the new lib directory while the curl application will remain in src as
before. New makefiles, adjusted configure script and so.
libcurl.a built quickly and easily. I better make a better interface to
the lib functions though.
The new root dir include/ is supposed to contain the public information
about the new libcurl. It is a little ugly so far :-)
Daniel (Mar 1 1999)
- Todd Kaufmann sent me a good link to Netscape's cookie spec as well as the
info that RFC 2109 specifies how to use them. The link is now in the
README and the RFC in the RESOURCES.
Daniel (Feb 23 1999)
- Finally made configure accept --with-ssl to look for SSL libs and includes
in the "standard" place /usr/local/ssl...
Daniel (Feb 22 1999)
- Verified that curl linked fine with OpenSSL 0.9.1c which seems to be
the most recent.
Henri Gomez (Fri Feb 5 1999)
- Sent in an updated curl-ssl.spec. I still miss the script that builds an
RPM automatically...
Version 5.5.1
Mark Butler (27 Jan 1999)
- Corrected problems in Download().
Danitel Stenberg (25 Jan 1999)
- Jeremie Petit pointed out a few flaws in the source that prevented it from
compile warning free with the native compiler under Digital Unix v4.0d.
Version 5.5
Daniel Stenberg (15 Jan 1999)
- Added Bjorns small text to the README about the DICT protocol.
Daniel Stenberg (11 Jan 1999)
- <jswink at softcom.net> reported about the win32-versioin: "Doesn't use
ALL_PROXY environment variable". Turned out to be because of the static-
buffer nature of the win32 environment variable calls!
Bjorn Reese (10 Jan 1999)
- I have attached a simple addition for the DICT protocol (RFC 2229).
It performs dictionary lookups. The output still needs to be better
formatted.
To test it try (the exact format, and more examples are described in
the RFC)
dict://dict.org/m:hello
dict://dict.org/m:hello::soundex
Vicente Garcia (10 Jan 1999)
- Corrected the progress meter for files larger than 20MB.
Daniel Stenberg (7 Jan 1999)
- Corrected the -t and -T help texts. They claimed to be FTP only.
Version 5.4
Daniel Stenberg
(7 Jan 1999)
- Irving Wolfe reported that curl -s didn't always supress the progress
reporting. It was the form post that autoamtically always switched it on
again. This is now corrected!
(4 Jan 1999)
- Andreas Kostyrka suggested I'd add PUT and he helped me out to test it. If
you use -t or -T now on a http or https server, PUT will be used for file
upload.
I removed the former use of -T with HTTP. I doubt anyone ever really used
that.
(4 Jan 1999)
- Erik Jacobsen found a width bug in the mprintf() function. I corrected it
now.
(4 Jan 1999)
- As John V. Chow pointed out to me, curl accepted very limited URL sizes. It
should now accept path parts that are up to at least 4096 bytes.
- Somehow I screwed up when applying the AIX fix from Gilbert Ramirez, so
I redid that now.

1381
CHANGES.2000 Normal file

File diff suppressed because it is too large Load Diff

1957
CHANGES.2001 Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,74 +0,0 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
CONTRIBUTE
To Think About When Contributing Source Code
This document is intended to offer some guidelines that can be useful to
keep in mind when you decide to write a contribution to the project. This
concerns new features as well as corrections to existing flaws or bugs.
Naming
Try using a non-confusing naming scheme for your new functions and variable
names. It doesn't necessarily have to mean that you should use the same as
in other places of the code, just that the names should be logical,
understandable and be named according to what they're used for.
Indenting
Please try using the same indenting levels and bracing method as all the
other code already does. It makes the source code a lot easier to follow if
all of it is written using the same style. I don't ask you to like it, I
just ask you to follow the tradition! ;-)
Commenting
Comment your source code extensively. I don't see myself as a very good
source commenter, but I try to become one. Commented code is quality code
and enables future modifications much more. Uncommented code much more risk
being completely replaced when someone wants to extend things, since other
persons' source code can get quite hard to read.
General Style
Keep your functions small. If they're small you avoid a lot of mistakes and
you don't accidentaly mix up variables.
Non-clobbering All Over
When you write new functionality or fix bugs, it is important that you
don't fiddle all over the source files and functions. Remember that it is
likely that other people have done changes in the same source files as you
have and possibly even in the same functions. If you bring completely new
functionality, try writing it in a new source file. If you fix bugs, try to
fix one bug at a time and send them as separate patches.
Separate Patches Doing Different Things
It is annoying when you get a huge patch from someone that is said to fix 511
odd problems, but discussions and opinions don't agree with 510 of them - or
509 of them were already fixed in a different way. Then the patcher needs to
extract the single interesting patch from somewhere within the huge pile of
source, and that gives a lot of extra work. Preferably, all fixes that
correct different problems should be in their own patch with an attached
description exactly what they correct so that all patches can be selectively
applied by the maintainer or other interested parties.
Document
Writing docs is dead boring and one of the big problems with many open
source projects. Someone's gotta do it. It makes it a lot easier if you
submit a small description of your fix or your new features with every
contribution so that it can be swiftly added to the package documentation.
Write Access to CVS Repository
If you are a frequent contributor, or have another good reason, you can of
course get write access to the CVS repository and then you'll be able to
check-in all your changes straight into the CVS tree instead of sending all
changes by mail as patches. Just ask if this is what you'd want.

21
COPYING Normal file
View File

@@ -0,0 +1,21 @@
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1996 - 2003, Daniel Stenberg, <daniel@haxx.se>.
All rights reserved.
Permission to use, copy, modify, and distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright
notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization of the copyright holder.

74
CVS-INFO Normal file
View File

@@ -0,0 +1,74 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
CVS-INFO
This file is only present in the CVS - never in release archives. It contains
information about other files and things that the CVS repository keeps in its
inner sanctum.
Compile and build instructions follow below.
CHANGES.0 contains ancient changes.
CHANGES.$year contains changes for the particular year.
tests/memanalyze.pl
is for analyzing the output generated by curl if -DMALLOCDEBUG
is used when compiling
buildconf builds the makefiles and configure stuff
Makefile.dist is included as the root Makefile in distribution archives
perl/ is a subdirectory with various perl scripts
To build after having extracted everything from CVS, do this:
./buildconf
./configure
make
Daniel uses a ./configure line similar to this for easier development:
./configure --disable-shared --enable-debug --enable-maintainer-mode
REQUIREMENTS
You need the following software installed:
o autoconf 2.57 (or later)
o automake 1.7 (or later)
o libtool 1.4.2 (or later)
o GNU m4 (required by autoconf)
o nroff + perl
If you don't have nroff and perl and you for some reason don't want to
install them, you can rename the source file src/hugehelp.c.cvs to
src/hugehelp.c and avoid having to generate this file. This will of course
give you an older version of the file that isn't up-to-date. That file was
checked in once and won't be updated very regularly.
o yacc/bison
If you don't have yacc or bison, you must rename the lib/getdate.c.cvs file
to lib/getdate.c to be able to build libcurl. yacc/bison is normally used
to generate the lib/getdate.c file from the lib/getdate.y source file.
MAC OS X
With Mac OS X 10.2 and the associated Developer Tools, the installed versions
of the build tools are adequate. For Mac OS X 10.1 users, Guido Neitzer
wrote the following step-by-step guide:
1. Install fink (http://fink.sourceforge.net)
2. Update fink to the newest version (with the installed fink)
3. Install the latest version of autoconf, automake and m4 with fink
4. Install version 1.4.1 of libtool - you find it in the "unstable" section
(read the manual to see how to get unstable versions)
5. Get cURL from the cvs
6. Build cURL with "./buildconf", "./configure", "make", "sudo make install"

59
FAQ
View File

@@ -1,59 +0,0 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
FAQ
Problems connecting to SSL servers.
===================================
It took a very long time before I could sort out why curl had problems
to connect to certain SSL servers when using SSLeay or OpenSSL v0.9+.
The error sometimes showed up similar to:
16570:error:1407D071:SSL routines:SSL2_READ:bad mac decode:s2_pkt.c:233:
It turned out to be because many older SSL servers don't deal with SSLv3
requests properly. To correct this problem, tell curl to select SSLv2 from
the command line (-2/--sslv2).
I have also seen examples where the remote server didn't like the SSLv2
request and instead you had to force curl to use SSLv3 with -3/--sslv3.
Does curl support resume?
=========================
Yes. Both ways on FTP, download ways on HTTP.
Is libcurl thread safe?
=======================
Yes, as far as curl's own code goes. It does use system calls that often
aren't thread safe in most environments, such as gethostbyname().
I am very interested in once and for all getting some kind of report or
README file from those who have used libcurl in a threaded environment,
since I haven't and I get this question more and more frequently!
Why doesn't my posting using -F work?
=====================================
You can't simply use -F or -d at your choice. The web server that will
receive your post assumes one of the formats. If the form you're trying to
"fake" sets the type to 'multipart/form-data', than and only then you must
use the -F type. In all the most common cases, you should use -d which then
causes a posting with the type 'application/x-www-form-urlencoded'.
Does curl support custom FTP commands?
======================================
Yes it does, you can tell curl to perform optional commands both before
and/or after a file transfer. Study the -Q/--quote option.
Since curl is used for file transfers, you don't use curl to just perform
ftp commands without transfering anything. Therefore you must always specify
a URL to transfer to/from even when doing custom FTP commands.

47
FILES
View File

@@ -1,47 +0,0 @@
BUGS
CHANGES
CONTRIBUTE
FEATURES
FAQ
FILES
INSTALL
LEGAL
MPL-1.0.txt
README
README.curl
README.libcurl
curl.1
*spec
RESOURCES
TODO
maketgz
Makefile.in
Makefile.am
acconfig.h
aclocal.m4
config.guess
config.h.in
config-win32.h
config.sub
configure
configure.in
install-sh
missing
mkinstalldirs
reconf
stamp-h.in
src/*.[ch]
src/*in
src/*am
src/mkhelp.pl
src/Makefile.vc6
src/*m32
lib/getdate.y
lib/*.[ch]
lib/*in
lib/*am
lib/Makefile.vc6
lib/*m32
include/README
include/curl/*.h

256
INSTALL
View File

@@ -1,256 +0,0 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
How To Compile
Curl has been compiled and built on numerous different operating systems. The
way to proceed is mainly devided in two different ways: the unix way or the
windows way.
If you're using Windows (95, 98, NT) or OS/2, you should continue reading from
the Win32 header below. All other systems should be capable of being installed
as described un the the UNIX header.
PORTS
=====
Just to show off, this is a probably incomplete list of known hardware and
operating systems that curl has been compiled for:
Sparc Solaris 2.4, 2.5, 2.5.1, 2.6, 7
Sparc SunOS 4.1.*
i386 Linux 1.3, 2.0, 2.2
MIPS IRIX 6.2, 6.5
HP-PA HP-UX
Alpha DEC OSF 4
i386 Solaris 2.7
PowerPC Mac OS X
Power AIX 4.3.1
- Ultrix
i386 FreeBSD
i386 NetBSD
i386 OpenBSD
m68k OpenBSD
i386 Windows 95, 98, NT
i386 OS/2
m68k AmigaOS 3
UNIX
====
The configure script *always* tries to find a working SSL library unless
explicitely told not to. If you have SSLeay or OpenSSL installed in the
default search path for your compiler/linker, you don't need to do anything
special.
If you have SSLeay or OpenSSL installed in /usr/local/ssl, you can
run configure like so:
./configure --with-ssl
If you have SSLeay or OpenSSL installed somewhere else (for example,
/opt/OpenSSL,) you can run configure like this:
./configure --with-ssl=/opt/OpenSSL
If you insist on forcing a build *without* SSL support, even though you may
have it installed in your system, you can run configure like this:
./configure --without-ssl
If you have SSLeay or OpenSSL installed, but with the libraries in
one place and the header files somewhere else, you'll have to set the
LDFLAGS and CPPFLAGS environment variables prior to running configure.
Something like this should work:
(with the Bourne shell and its clones):
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
If your SSL library was compiled with rsaref (usually for use in
the United States), you may also need to set:
LIBS=-lRSAglue -lrsaref
(from Doug Kaufman <dkaufman@rahul.net>)
Without SSL support, just run:
./configure
Then run:
make
Use the executable `curl` in src/ directory.
'make install' copies the curl file to /usr/local/bin/ (or $prefix/bin
if you used the --prefix option to configure) and copies the curl.1
man page to a suitable place too.
KNOWN PROBLEMS
If you happen to have autoconf installed, but a version older than
2.12 you will get into trouble. Then you can still build curl by
issuing these commands: (from Ralph Beckmann <rabe@uni-paderborn.de>)
./configure [...]
cd lib; make; cd ..
cd src; make; cd ..
cp src/curl elsewhere/bin/
OPTIONS
Remember, to force configure to use the standard cc compiler if both
cc and gcc are present, run configure like
CC=cc ./configure
or
env Cc=cc ./configure
Win32
=====
Without SSL:
MingW32 (GCC-2.95) style
------------------------
Run the 'mingw32.bat' file to get the proper environment variables
set, then run 'make -f Makefile.m32' in the lib/ dir and then
'make -f Makefile.m32' in the src/ dir.
If you have any problems linking libraries or finding header files,
be sure to look at the provided "Makefile.m32" files for the proper
paths, and adjust as necessary.
Cygwin style
------------
Almost identical to the unix installation. Run the configure script
in the curl root with 'sh configure'. Make sure you have the sh
executable in /bin/ or you'll see the configure fail towards the
end.
Run 'make'
Microsoft command line style
----------------------------
Run the 'vcvars32.bat' file to get the proper environment variables
set, then run 'nmake -f Makefile.vc6' in the lib/ dir and then
'nmake -f Makefile.vc6' in the src/ dir.
IDE-style
-------------------------
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).
(you should name it libcurl or similar)
Make the sources in the src/ drawer be a "win32 console application"
project. Name it curl.
With VC++, add 'wsock32.lib' to the link libs when you build curl!
Borland seems to do that itself magically. Of course you have to
make sure it links with the libcurl too!
For VC++ 6, there's an included Makefile.vc6 that should be possible
to use out-of-the-box.
Microsoft note: add /Zm200 to the compiler options, as the hugehelp.c
won't compile otherwise due to "too long puts string" or something
like that!
With SSL:
MingW32 (GCC-2.95) style
------------------------
Run the 'mingw32.bat' file to get the proper environment variables
set, then run 'make -f Makefile.m32 SSL=1' in the lib/ dir and then
'make -f Makefile.m32 SSL=1' in the src/ dir.
If you have any problems linking libraries or finding header files,
be sure to look at the provided "Makefile.m32" files for the proper
paths, and adjust as necessary.
Cygwin style
------------
Haven't done, nor got any reports on how to do. It should although be
identical to the unix setup for the same purpose. See above.
Microsoft command line style
----------------------------
Run the 'vcvars32.bat' file to get the proper environment variables
set, then run 'nmake -f Makefile.vc6 release-ssl' in the lib/ dir and
then 'nmake -f Makefile.vc6' in the src/ dir.
Microsoft / Borland style
-------------------------
If you have OpenSSL/SSLeay, and want curl to take advantage of it,
edit your project properties to use the SSL include path, link with
the SSL libs and define the USE_SSLEAY symbol.
IBM OS/2
========
Building under OS/2 is not much different from building under unix.
You need:
- emx 0.9d
- GNU make
- GNU patch
- ksh
- GNU bison
- GNU file utilities
- GNU sed
- autoconf 2.13
If you want to build with OpenSSL, SSLeay, or OpenLDAP support, you'll
need to download those libraries, too. Dirk Ohme has done some work to
port SSL libraries under OS/2, but it looks like he doesn't care about emx.
You'll find his patches on: http://come.to/Dirk.Ohme
If during the linking you get an error about _errno being an undefined
symbol referenced from the text segment, you need to add -D__ST_MT_ERRNO__
in your definitions.
If everything seems to work fine but there's no curl.exe, you need to add
-Zexe to your linker flags.
If you're getting huge binaries, probably your makefiles have the -g in
CFLAGS.
OpenSSL/SSLeay
==============
You'll find OpenSSL information at:
http://www.openssl.org
MingW32/Cygwin
==============
You'll find MingW32 and Cygwin information at:
http://www.xraylith.wisc.edu/~khan/software/gnu-win32/index.html
OpenLDAP
========
You'll find OpenLDAP information at:
http://www.openldap.org
You need to install it with shared libraries, which is enabled when running
the ldap configure script with "--enable-shared". With my linux 2.0.36
kernel I also had to disable using threads (with --without-threads),
because the configure script couldn't figure out my system.

21
LEGAL
View File

@@ -1,21 +0,0 @@
Part of this software is distributed under the Mozilla Public License
version 1.0, which is part of this distribution (MPL-1.0.txt) and
available on-line at http://www.mozilla.org/MPL/
The terminology used here is described in the Mozilla Public License.
In accordance with section "4. Inability to Comply Due to Statute or
Regulation" the following exemptions apply to this software:
* The Initial Developer has the right, regardless of the citizenship
of any involved party, to choose the location for settling disputes
as refered to under section "11. Miscellaneous" of the Mozilla Public
License.
Initial Developers of this software are:
Daniel Stenberg <Daniel.Stenberg@sth.frontec.se>
Rafael Linden Sagula <sagula@inf.ufrgs.br>
Curl is Copyright (C) 1996-1998 Daniel Stenberg and Rafael Linden Sagula

View File

@@ -1,360 +0,0 @@
MOZILLA PUBLIC LICENSE
Version 1.0
----------------
1. Definitions.
1.1. ``Contributor'' means each entity that creates or contributes to
the creation of Modifications.
1.2. ``Contributor Version'' means the combination of the Original
Code, prior Modifications used by a Contributor, and the Modifications
made by that particular Contributor.
1.3. ``Covered Code'' means the Original Code or Modifications or the
combination of the Original Code and Modifications, in each case
including portions thereof.
1.4. ``Electronic Distribution Mechanism'' means a mechanism generally
accepted in the software development community for the electronic
transfer of data.
1.5. ``Executable'' means Covered Code in any form other than Source
Code.
1.6. ``Initial Developer'' means the individual or entity identified as
the Initial Developer in the Source Code notice required by Exhibit A.
1.7. ``Larger Work'' means a work which combines Covered Code or
portions thereof with code not governed by the terms of this License.
1.8. ``License'' means this document.
1.9. ``Modifications'' means any addition to or deletion from the
substance or structure of either the Original Code or any previous
Modifications. When Covered Code is released as a series of files, a
Modification is:
A. Any addition to or deletion from the contents of a file
containing Original Code or previous Modifications.
B. Any new file that contains any part of the Original Code or
previous Modifications.
1.10. ``Original Code'' means Source Code of computer software code
which is described in the Source Code notice required by Exhibit A as
Original Code, and which, at the time of its release under this License
is not already Covered Code governed by this License.
1.11. ``Source Code'' means the preferred form of the Covered Code for
making modifications to it, including all modules it contains, plus any
associated interface definition files, scripts used to control
compilation and installation of an Executable, or a list of source code
differential comparisons against either the Original Code or another
well known, available Covered Code of the Contributor's choice. The
Source Code can be in a compressed or archival form, provided the
appropriate decompression or de-archiving software is widely available
for no charge.
1.12. ``You'' means an individual or a legal entity exercising rights
under, and complying with all of the terms of, this License or a future
version of this License issued under Section 6.1. For legal entities,
``You'' includes any entity which controls, is controlled by, or is
under common control with You. For purposes of this definition,
``control'' means (a) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (b) ownership of fifty percent (50%) or more of the
outstanding shares or beneficial ownership of such entity.
2. Source Code License.
2.1. The Initial Developer Grant.
The Initial Developer hereby grants You a world-wide, royalty-free,
non-exclusive license, subject to third party intellectual property
claims:
(a) to use, reproduce, modify, display, perform, sublicense and
distribute the Original Code (or portions thereof) with or without
Modifications, or as part of a Larger Work; and
(b) under patents now or hereafter owned or controlled by Initial
Developer, to make, have made, use and sell (``Utilize'') the
Original Code (or portions thereof), but solely to the extent that
any such patent is reasonably necessary to enable You to Utilize
the Original Code (or portions thereof) and not to any greater
extent that may be necessary to Utilize further Modifications or
combinations.
2.2. Contributor Grant.
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license, subject to third party intellectual property
claims:
(a) to use, reproduce, modify, display, perform, sublicense and
distribute the Modifications created by such Contributor (or
portions thereof) either on an unmodified basis, with other
Modifications, as Covered Code or as part of a Larger Work; and
(b) under patents now or hereafter owned or controlled by
Contributor, to Utilize the Contributor Version (or portions
thereof), but solely to the extent that any such patent is
reasonably necessary to enable You to Utilize the Contributor
Version (or portions thereof), and not to any greater extent that
may be necessary to Utilize further Modifications or combinations.
3. Distribution Obligations.
3.1. Application of License.
The Modifications which You create or to which You contribute are
governed by the terms of this License, including without limitation
Section 2.2. The Source Code version of Covered Code may be distributed
only under the terms of this License or a future version of this
License released under Section 6.1, and You must include a copy of this
License with every copy of the Source Code You distribute. You may not
offer or impose any terms on any Source Code version that alters or
restricts the applicable version of this License or the recipients'
rights hereunder. However, You may include an additional document
offering the additional rights described in Section 3.5.
3.2. Availability of Source Code.
Any Modification which You create or to which You contribute must be
made available in Source Code form under the terms of this License
either on the same media as an Executable version or via an accepted
Electronic Distribution Mechanism to anyone to whom you made an
Executable version available; and if made available via Electronic
Distribution Mechanism, must remain available for at least twelve (12)
months after the date it initially became available, or at least six
(6) months after a subsequent version of that particular Modification
has been made available to such recipients. You are responsible for
ensuring that the Source Code version remains available even if the
Electronic Distribution Mechanism is maintained by a third party.
3.3. Description of Modifications.
You must cause all Covered Code to which you contribute to contain a
file documenting the changes You made to create that Covered Code and
the date of any change. You must include a prominent statement that the
Modification is derived, directly or indirectly, from Original Code
provided by the Initial Developer and including the name of the Initial
Developer in (a) the Source Code, and (b) in any notice in an
Executable version or related documentation in which You describe the
origin or ownership of the Covered Code.
3.4. Intellectual Property Matters
(a) Third Party Claims.
If You have knowledge that a party claims an intellectual property
right in particular functionality or code (or its utilization
under this License), you must include a text file with the source
code distribution titled ``LEGAL'' which describes the claim and
the party making the claim in sufficient detail that a recipient
will know whom to contact. If you obtain such knowledge after You
make Your Modification available as described in Section 3.2, You
shall promptly modify the LEGAL file in all copies You make
available thereafter and shall take other steps (such as notifying
appropriate mailing lists or newsgroups) reasonably calculated to
inform those who received the Covered Code that new knowledge has
been obtained.
(b) Contributor APIs.
If Your Modification is an application programming interface and
You own or control patents which are reasonably necessary to
implement that API, you must also include this information in the
LEGAL file.
3.5. Required Notices.
You must duplicate the notice in Exhibit A in each file of the Source
Code, and this License in any documentation for the Source Code, where
You describe recipients' rights relating to Covered Code. If You
created one or more Modification(s), You may add your name as a
Contributor to the notice described in Exhibit A. If it is not possible
to put such notice in a particular Source Code file due to its
structure, then you must include such notice in a location (such as a
relevant directory file) where a user would be likely to look for such
a notice. You may choose to offer, and to charge a fee for, warranty,
support, indemnity or liability obligations to one or more recipients
of Covered Code. However, You may do so only on Your own behalf, and
not on behalf of the Initial Developer or any Contributor. You must
make it absolutely clear than any such warranty, support, indemnity or
liability obligation is offered by You alone, and You hereby agree to
indemnify the Initial Developer and every Contributor for any liability
incurred by the Initial Developer or such Contributor as a result of
warranty, support, indemnity or liability terms You offer.
3.6. Distribution of Executable Versions.
You may distribute Covered Code in Executable form only if the
requirements of Section 3.1-3.5 have been met for that Covered Code,
and if You include a notice stating that the Source Code version of the
Covered Code is available under the terms of this License, including a
description of how and where You have fulfilled the obligations of
Section 3.2. The notice must be conspicuously included in any notice in
an Executable version, related documentation or collateral in which You
describe recipients' rights relating to the Covered Code. You may
distribute the Executable version of Covered Code under a license of
Your choice, which may contain terms different from this License,
provided that You are in compliance with the terms of this License and
that the license for the Executable version does not attempt to limit
or alter the recipient's rights in the Source Code version from the
rights set forth in this License. If You distribute the Executable
version under a different license You must make it absolutely clear
that any terms which differ from this License are offered by You alone,
not by the Initial Developer or any Contributor. You hereby agree to
indemnify the Initial Developer and every Contributor for any liability
incurred by the Initial Developer or such Contributor as a result of
any such terms You offer.
3.7. Larger Works.
You may create a Larger Work by combining Covered Code with other code
not governed by the terms of this License and distribute the Larger
Work as a single product. In such a case, You must make sure the
requirements of this License are fulfilled for the Covered Code.
4. Inability to Comply Due to Statute or Regulation.
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Code due to statute
or regulation then You must: (a) comply with the terms of this License
to the maximum extent possible; and (b) describe the limitations and
the code they affect. Such description must be included in the LEGAL
file described in Section 3.4 and must be included with all
distributions of the Source Code. Except to the extent prohibited by
statute or regulation, such description must be sufficiently detailed
for a recipient of ordinary skill to be able to understand it.
5. Application of this License.
This License applies to code to which the Initial Developer has
attached the notice in Exhibit A, and to related Covered Code.
6. Versions of the License.
6.1. New Versions.
Netscape Communications Corporation (``Netscape'') may publish revised
and/or new versions of the License from time to time. Each version will
be given a distinguishing version number.
6.2. Effect of New Versions.
Once Covered Code has been published under a particular version of the
License, You may always continue to use it under the terms of that
version. You may also choose to use such Covered Code under the terms
of any subsequent version of the License published by Netscape. No one
other than Netscape has the right to modify the terms applicable to
Covered Code created under this License.
6.3. Derivative Works.
If you create or use a modified version of this License (which you may
only do in order to apply it to code which is not already Covered Code
governed by this License), you must (a) rename Your license so that the
phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or
any confusingly similar phrase do not appear anywhere in your license
and (b) otherwise make it clear that your version of the license
contains terms which differ from the Mozilla Public License and
Netscape Public License. (Filling in the name of the Initial Developer,
Original Code or Contributor in the notice described in Exhibit A shall
not of themselves be deemed to be modifications of this License.)
7. DISCLAIMER OF WARRANTY.
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS,
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
8. TERMINATION.
This License and the rights granted hereunder will terminate
automatically if You fail to comply with terms herein and fail to cure
such breach within 30 days of becoming aware of the breach. All
sublicenses to the Covered Code which are properly granted shall
survive any termination of this License. Provisions which, by their
nature, must remain in effect beyond the termination of this License
shall survive.
9. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER
PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND
ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE
BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT
EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
10. U.S. GOVERNMENT END USERS.
The Covered Code is a ``commercial item,'' as that term is defined in
48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer
software'' and ``commercial computer software documentation,'' as such
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
all U.S. Government End Users acquire Covered Code with only those
rights set forth herein.
11. MISCELLANEOUS.
This License represents the complete agreement concerning subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. This License shall be governed by
California law provisions (except to the extent applicable law, if any,
provides otherwise), excluding its conflict-of-law provisions. With
respect to disputes in which at least one party is a citizen of, or an
entity chartered or registered to do business in, the United States of
America: (a) unless otherwise agreed in writing, all disputes relating
to this License (excepting any dispute relating to intellectual
property rights) shall be subject to final and binding arbitration,
with the losing party paying all costs of arbitration; (b) any
arbitration relating to this Agreement shall be held in Santa Clara
County, California, under the auspices of JAMS/EndDispute; and (c) any
litigation relating to this Agreement shall be subject to the
jurisdiction of the Federal Courts of the Northern District of
California, with venue lying in Santa Clara County, California, with
the losing party responsible for costs, including without limitation,
court costs and reasonable attorneys fees and expenses. The application
of the United Nations Convention on Contracts for the International
Sale of Goods is expressly excluded. Any law or regulation which
provides that the language of a contract shall be construed against the
drafter shall not apply to this License.
12. RESPONSIBILITY FOR CLAIMS.
Except in cases where another Contributor has failed to comply with
Section 3.4, You are responsible for damages arising, directly or
indirectly, out of Your utilization of rights under this License, based
on the number of copies of Covered Code you made available, the
revenues you received from utilizing such rights, and other relevant
factors. You agree to work with affected parties to distribute
responsibility on an equitable basis.
EXHIBIT A.
``The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.
The Original Code is ______________________________________.
The Initial Developer of the Original Code is ________________________.
Portions created by ______________________ are Copyright (C) ______
_______________________. All Rights Reserved.
Contributor(s): ______________________________________.''

View File

@@ -2,12 +2,78 @@
# $Id$
#
AUTOMAKE_OPTIONS = foreign no-dependencies
AUTOMAKE_OPTIONS = foreign
man_MANS = curl.1
EXTRA_DIST = CHANGES COPYING maketgz SSLCERTS reconf Makefile.dist \
curl-config.in build_vms.com curl-style.el sample.emacs testcurl.sh
EXTRA_DIST = $(man_MANS)
bin_SCRIPTS = curl-config
SUBDIRS = lib src
SUBDIRS = docs lib src include tests packages
# create a root makefile in the distribution:
dist-hook:
rm -rf $(top_builddir)/tests/log
cp $(srcdir)/Makefile.dist $(distdir)/Makefile
html:
cd docs; make html
pdf:
cd docs; make pdf
check: test
test:
@(cd tests; $(MAKE) quiet-test)
test-full:
@(cd tests; $(MAKE) full-test)
#
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
# must contain the following line:
# %_topdir /home/loic/local/rpm
# and that /home/loic/local/rpm contains the directory SOURCES, BUILD etc.
#
# cd /home/loic/local/rpm ; mkdir -p SOURCES BUILD RPMS/i386 SPECS SRPMS
#
# If additional configure flags are needed to build the package, add the
# following in ~/.rpmmacros
# %configure CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix} ${AM_CONFIGFLAGS}
# and run make rpm in the following way:
# AM_CONFIGFLAGS='--with-uri=/home/users/loic/local/RedHat-6.2' make rpm
#
rpms:
$(MAKE) RPMDIST=curl rpm
$(MAKE) RPMDIST=curl-ssl rpm
rpm:
RPM_TOPDIR=`rpm --showrc | $(PERL) -n -e 'print if(s/.*_topdir\s+(.*)/$$1/)'` ; \
cp $(srcdir)/packages/Linux/RPM/$(RPMDIST).spec $$RPM_TOPDIR/SPECS ; \
cp $(PACKAGE)-$(VERSION).tar.gz $$RPM_TOPDIR/SOURCES ; \
rpm -ba --clean --rmsource $$RPM_TOPDIR/SPECS/$(RPMDIST).spec ; \
mv $$RPM_TOPDIR/RPMS/i386/$(RPMDIST)-*.rpm . ; \
mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm .
#
# Build a Solaris pkkgadd format file
# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format
# file (which ends up back in this directory).
# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do
# pkgadd -d ./HAXXcurl-*
#
# gak - libtool requires an absoulte directory, hence the pwd below...
pkgadd:
umask 022 ; \
make install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
cd $(srcdir)/packages/Solaris && $(MAKE) package
#
# Build a cygwin binary tarball installation file
# resulting .tar.bz2 file will end up at packages/Win32/cygwin
cygwinbin:
$(MAKE) -C packages/Win32/cygwin cygwinbin

View File

@@ -1,45 +1,25 @@
############################################################################
#############################################################################
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
# Copyright (C) 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
# License for the specific language governing rights and limitations
# under the License.
# In order to be useful for every potential user, curl and libcurl are
# dual-licensed under the MPL and the MIT/X-derivate licenses.
#
# The Original Code is Curl.
# 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 MPL or the MIT/X-derivate
# licenses. You may pick one of these licenses.
#
# The Initial Developer of the Original Code is Daniel Stenberg.
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# Portions created by the Initial Developer are Copyright (C) 1999.
# All Rights Reserved.
#
# ------------------------------------------------------------
# Main author:
# - Daniel Stenberg <Daniel.Stenberg@haxx.nu>
#
# http://curl.haxx.nu
#
# $Source$
# $Revision$
# $Date$
# $Author$
# $State$
# $Locker$
#
# ------------------------------------------------------------
#
# In a normal unix-setup, this file will become overwritten.
#
############################################################################
# $Id$
#############################################################################
all:
./configure
@@ -49,17 +29,35 @@ ssl:
./configure --with-ssl
make
borland:
cd lib & make -f Makefile.b32
cd src & make -f Makefile.b32
mingw32:
cd lib; make -f Makefile.m32
cd src; make -f Makefile.m32
cd lib & make -f Makefile.m32 ZLIB=1
cd src & make -f Makefile.m32 ZLIB=1
mingw32-ssl:
cd lib; make -f Makefile.m32 SSL=1
cd src; make -f Makefile.m32 SSL=1
cd lib & make -f Makefile.m32 SSL=1 ZLIB=1
cd src & make -f Makefile.m32 SSL=1 ZLIB=1
vc:
cd lib; nmake -f Makefile.vc6
cd src; nmake -f Makefile.vc6
cd lib
nmake -f Makefile.vc6 cfg=release
cd ..\src
nmake -f Makefile.vc6
vc-ssl:
cd lib
nmake -f Makefile.vc6 cfg=release-ssl
cd ..\src
nmake -f Makefile.vc6 cfg=release-ssl
vc-ssl-dll:
cd lib
nmake -f Makefile.vc6 cfg=release-ssl-dll
cd ..\src
nmake -f Makefile.vc6
cygwin:
./configure

58
README
View File

@@ -8,37 +8,61 @@ README
Curl is a command line tool for transfering data specified with URL
syntax. Find out how to use Curl by reading the curl.1 man page or the
README.curl document. Find out how to install Curl by reading the INSTALL
MANUAL document. Find out how to install Curl by reading the INSTALL
document.
libcurl is a link-library that Curl is using to do its job. It is readily
available to be used by your software. Read the README.libcurl document to
find out how!
libcurl is the library curl is using to do its job. It is readily
available to be used by your software. Read the libcurl.3 man page to
learn how!
You find answers to the most frequent questions we get in the FAQ document.
Always try the Curl web site for the latest news:
Study the COPYING file for distribution terms and similar.
http://curl.haxx.nu
CONTACT
If you have problems, questions, ideas or suggestions, please contact us
by posting to a suitable mailing list. See http://curl.haxx.se/mail/
Many major contributors to the project are listed in the THANKS document.
WEB SITE
Visit the curl web site or mirrors for the latest news:
Sweden -- http://curl.haxx.se/
US -- http://curl.sf.net/
Australia -- http://curl.planetmirror.com/
DOWNLOAD
The official download mirror sites are:
Sweden -- ftp://ftp.sunet.se/pub/www/utilities/curl/
Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/
China -- http://www.pshowing.com/curl/
Sweden -- ftp://ftp.sunet.se/pub/www/utilities/curl/
Sweden -- http://cool.haxx.se/curl/
Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/
Australia -- http://curl.planetmirror.com/download/
US -- http://curl.sourceforge.net/download/
Hongkong -- http://www.execve.net/curl/
CVS
To download the very latest source off the CVS server do this:
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl login
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl login
(just press enter when asked for password)
(just press enter when asked for password)
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl co .
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl co curl
(now, you'll get all the latest sources downloaded into your current
directory. Note that this does not create a directory named curl or
anything)
(you'll get a directory named curl created, filled with the source code)
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl logout
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl logout
(you're off the hook!)
(you're off the hook!)
NOTICE
Curl contains pieces of source code that is Copyright (c) 1998, 1999
Kungliga Tekniska H<>gskolan. This notice is included here to comply with the
distribution terms.

View File

@@ -1,108 +0,0 @@
_ _ _ _
| (_) |__ ___ _ _ _ __| |
| | | '_ \ / __| | | | '__| |
| | | |_) | (__| |_| | | | |
|_|_|_.__/ \___|\__,_|_| |_|
How To Use Libcurl In Your Program:
(by Ralph Beckmann <rabe@uni-paderborn.de>)
NOTE: If you plan to use libcurl.a in Threads under Linux, do not use the old
gcc-2.7.x because the function 'gethostbyname' seems not to be thread-safe,
that is to say an unavoidable SEGMENTATION FAULT might occur.
1. a) In a C-Program:
#include "curl.h"
b) In a C++-Program:
extern "C" {
#include "curl.h"
}
2. char *url="http://www.domain.com";
curl_urlget (URGTAG_URL, url,
URGTAG_FLAGS, CONF_NOPROGRESS,
URGTAG_ERRORBUFFER, errorBuffer,
URGTAG_WRITEFUNCTION, (size_t (*)(void *, int, int, FILE
*))handle_data,
URGTAG_TIMEOUT, 30, /* or anything You want */
...
URGTAG_DONE);
3. size_t handle_data (const void *ptr, size_t size, size_t nitems,
FILE *stream)
{
(void)stream; /* stop complaining using g++ -Wall */
if ((int)nitems <= 0) {
return (size_t)0;
}
fprintf(stdout, (char *)ptr); /* or do anything else with it */
return nitems;
}
4. Compile Your Program with -I$(CURL_DIR)/include
5. Link Your Program together with $(CURL_DIR)/lib/libcurl.a
Small Example of How To Use libcurl
----------------------------------------------------------------------
/* Full example that uses libcurl.a to fetch web pages. */
/* curlthreads.c */
/* - Test-Program by Ralph Beckmann for using curl in POSIX-Threads */
/* Change *url1 and *url2 to textual long and slow non-FRAMESET websites! */
/*
1. Compile with gcc or g++ as $(CC):
$(CC) -c -Wall -pedantic curlthreads.c -I$(CURL_DIR)/include
2. Link with:
- Linux:
$(CC) -o curlthreads curlthreads.o $(CURL_DIR)/lib/libcurl.a -lpthread
-lm
- Solaris:
$(CC) -o curlthreads curlthreads.o $(CURL_DIR)/lib/libcurl.a -lpthread
-lm -lsocket -lnsl
*/
#include <pthread.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#include "curl.h"
}
#else
#include "curl.h"
#endif
size_t storedata (const void *ptr, size_t size, size_t nitems, FILE *stream) {
(void)ptr; (void)stream; /* just to stop g++ -Wall complaining */
fprintf(stdout, "Thread #%i reads %i Bytes.\n",
(int)pthread_self(), (int)(nitems*size));
return (nitems);
}
void *urlfetcher(void *url) {
curl_urlget (URGTAG_URL, url,
URGTAG_FLAGS, CONF_NOPROGRESS | CONF_FAILONERROR,
URGTAG_WRITEFUNCTION, (size_t (*)(void *, int, int, FILE
*))storedata,
URGTAG_DONE);
return NULL;
}
int main(void) {
char *url1="www.sun.com";
char *url2="www.microsoft.com";
pthread_t thread_id1, thread_id2;
pthread_create(&thread_id1, NULL, urlfetcher, (void *)url1);
pthread_create(&thread_id2, NULL, urlfetcher, (void *)url2);
pthread_join(thread_id1, NULL);
pthread_join(thread_id2, NULL);
fprintf(stdout, "Ready.\n");
return 0;
}

View File

@@ -1,62 +0,0 @@
_ _ ____ _
Project ___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
This document has been introduced in order to let you find documents that
specify standards used by curl, software that extends curl and web pages with
"competing" utilities.
Standards
RFC 959 - Defines how FTP works
RFC 1738 - Uniform Resource Locators
RFC 1777 - defines the LDAP protocol
RFC 1808 - Relative Uniform Resource Locators
RFC 1867 - Form-based File Upload in HTML
RFC 1950 - ZLIB Compressed Data Format Specification
RFC 1951 - DEFLATE Compressed Data Format Specification
RFC 1952 - gzip compression format
RFC 1959 - LDAP URL syntax
RFC 2045-2049 - Everything you need to know about MIME! (needed for form
based upload)
RFC 2068 - HTTP 1.1 (obsoleted by RFC 2616)
RFC 2109 - HTTP State Management Mechanism (cookie stuff)
- Also, read Netscape's specification at
http://www.netscape.com/newsref/std/cookie_spec.html
RFC 2183 - "The Content-Disposition Header Field"
RFC 2229 - "A Dictionary Server Protocol"
RFC 2231 - "MIME Parameter Value and Encoded Word Extensions:
Character Sets, Languages, and Continuations"
RFC 2388 - "Returning Values from Forms: multipart/form-data"
Use this as an addition to the 1867
RFC 2396 - "Uniform Resource Identifiers: Generic Syntax and Semantics"
This one obsoletes 1738, but since 1738 is often mentioned I've left it
in this list.
RFC 2428 - "FTP Extensions for IPv6 and NATs"
This should be considered when introducing IPv6 awareness.
RFC 2616 - HTTP 1.1
RFC 2617 - HTTP Authentication
Compilers
MingW32 - http://www.xraylith.wisc.edu/~khan/software/gnu-win32/index.html
Software
OpenSSL - http://www.openssl.org
OpenLDAP - http://www.openldap.org
zlib - http://www.cdrom.com/pub/infozip/zlib/
Competitors
wget - ftp://prep.ai.mit.edu/pub/gnu/
snarf - http://www.xach.com/snarf/
lynx - http://lynx.browser.org/ (well at least when -dump is used)
swebget - http://www.uni-hildesheim.de/~smol0075/swebget/
fetch - ?

39
SSLCERTS Normal file
View File

@@ -0,0 +1,39 @@
Peer SSL Certificate Verification
=================================
Starting in 7.10, libcurl performs peer SSL certificate verification by
default. This is done by installing a default CA cert bundle on 'make install'
(or similar), that CA bundle package is used by default on operations against
SSL servers.
Alas, if you communicate with HTTPS servers using certificates that are signed
by CAs present in the bundle, you will not notice any changed behavior and you
will seamlessly get a higher security level on your SSL connections since you
can be sure that the remote server really is the one it claims to be.
If the remote server uses a self-signed certificate, or if you don't install
curl's CA cert bundle or if it uses a certificate signed by a CA that isn't
included in the bundle, then you need to do one of the following:
1. Tell libcurl to *not* verify the peer. With libcurl you disable with with
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
With the curl command tool, you disable this with -k/--insecure.
2. Get a CA certificate that can verify the remote server and use the proper
option to point out this CA cert for verification when connecting. For
libcurl hackers: curl_easy_setopt(curl, CURLOPT_CAPATH, capath);
With the curl command tool: --cacert [file]
Neglecting to use one of the above menthods when dealing with a server using a
certficate that isn't signed by one of the certficates in the installed CA
cert bundle, will cause SSL to report an error ("certificate verify failed")
during the handshake and SSL will then refuse further communication with that
server.
This procedure has been deemed The Right Thing even though it adds this extra
trouble for some users, since it adds security to a majority of the SSL
connections that previously weren't really secure. It turned out many people
were using previous versions of curl/libcurl without realizing the need for
the CA cert options to get truly secure SSL connections.

93
TODO
View File

@@ -1,93 +0,0 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
TODO
Ok, this is what I wanna do with Curl. Please tell me what you think, and
please don't hesitate to contribute and send me patches that improve this
product! (Yes, you may add things not mentioned here, these are just a
few teasers...)
* rtsp:// support -- "Real Time Streaming Protocol"
RFC 2326
* "Content-Encoding: compress/gzip/zlib"
HTTP 1.1 clearly defines how to get and decode compressed documents. There
is the zlib that is pretty good at decompressing stuff. This work was
started in October 1999 but halted again since it proved more work than we
thought. It is still a good idea to implement though.
* HTTP Pipelining/persistant connections
- We should introduce HTTP "pipelining". Curl could be able to request for
several HTTP documents in one connect. It would be the beginning for
supporing more advanced functions in the future, like web site
mirroring. This will require that the urlget() function supports several
documents from a single HTTP server, which it doesn't today.
- When curl supports fetching several documents from the same server using
pipelining, I'd like to offer that function to the command line. Anyone has
a good idea how? The current way of specifying one URL with the output sent
to the stdout or a file gets in the way. Imagine a syntax that supports
"additional documents from the same server" in a way similar to:
curl <main URL> --more-doc <path> --more-doc <path>
where --more-doc specifies another document on the same server. Where are
the output files gonna be put and how should they be named? Should each
"--more-doc" parameter require a local file name to store the result in?
Like "--more-file" as in:
curl <URL> --more-doc <path> --more-file <file>
* RFC2617 compliance, "Digest Access Authentication"
A valid test page seem to exist at:
http://hopf.math.nwu.edu/testpage/digest/
And some friendly person's server source code is available at
http://hopf.math.nwu.edu/digestauth/index.html
Then there's the Apache mod_digest source code too of course. It seems as
if Netscape doesn't support this, and not many servers do. Although this is
a lot better authentication method than the more common "Basic". Basic
sends the password in cleartext over the network, this "Digest" method uses
a challange-response protocol which increases security quite a lot.
* Different FTP Upload Through Web Proxy
I don't know any web proxies that allow CONNECT through on port 21, but
that would be the best way to do ftp upload. All we would need to do would
be to 'CONNECT <host>:<port> HTTP/1.0\r\n\r\n' and then do business as
usual. I least I think so. It would be fun if someone tried this...
* Multiple Proxies?
Is there anyone that actually uses serial-proxies? I mean, send CONNECT to
the first proxy to connect to the second proxy to which you send CONNECT to
connect to the remote host (or even more iterations). Is there anyone
wanting curl to support it? (Not that it would be hard, just confusing...)
* Other proxies
Ftp-kind proxy, Socks5, whatever kind of proxies are there?
* IPv6 Awareness
Where ever it would fit. I am not that into v6 yet to fully grasp what we
would need to do, but letting the autoconf search for v6-versions of a few
functions and then use them instead is of course the first thing to do...
RFC 2428 "FTP Extensions for IPv6 and NATs" will be interesting. PORT
should be replaced with EPRT for IPv6, and EPSV instead of PASV.
* An automatic RPM package maker
Please, write me a script that makes it. It'd make my day.
* SSL for more protocols, like SSL-FTP...
(http://search.ietf.org/internet-drafts/draft-murray-auth-ftp-ssl-05.txt)
* HTTP POST resume using Range:
* Make curl capable of verifying the server's certificate when connecting
with HTTPS://.
* Make the timeout work as expected!

View File

@@ -1,12 +0,0 @@
/* Name of this package! */
#undef PACKAGE
/* Version number of this archive. */
#undef VERSION
/* Define if you have the getpass function. */
#undef HAVE_GETPASS
/* Define cpu-machine-OS */
#undef OS

445
acinclude.m4 Normal file
View File

@@ -0,0 +1,445 @@
dnl Check for how to set a socket to non-blocking state. There seems to exist
dnl four known different ways, with the one used almost everywhere being POSIX
dnl and XPG3, while the other different ways for different systems (old BSD,
dnl Windows and Amiga).
dnl
dnl There are two known platforms (AIX 3.x and SunOS 4.1.x) where the
dnl O_NONBLOCK define is found but does not work. This condition is attempted
dnl to get caught in this script by using an excessive number of #ifdefs...
dnl
AC_DEFUN(CURL_CHECK_NONBLOCKING_SOCKET,
[
AC_MSG_CHECKING([non-blocking sockets style])
AC_TRY_COMPILE([
/* headers for O_NONBLOCK test */
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
],[
/* try to compile O_NONBLOCK */
#if defined(sun) || defined(__sun__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
# if defined(__SVR4) || defined(__srv4__)
# define PLATFORM_SOLARIS
# else
# define PLATFORM_SUNOS4
# endif
#endif
#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX4)
# define PLATFORM_AIX_V3
#endif
#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3)
#error "O_NONBLOCK does not work on this platform"
#endif
int socket;
int flags = fcntl(socket, F_SETFL, flags | O_NONBLOCK);
],[
dnl the O_NONBLOCK test was fine
nonblock="O_NONBLOCK"
AC_DEFINE(HAVE_O_NONBLOCK, 1, [use O_NONBLOCK for non-blocking sockets])
],[
dnl the code was bad, try a different program now, test 2
AC_TRY_COMPILE([
/* headers for FIONBIO test */
#include <unistd.h>
#include <stropts.h>
],[
/* FIONBIO source test */
int flags = ioctl(socket, FIONBIO, &flags);
],[
dnl FIONBIO test was good
nonblock="FIONBIO"
AC_DEFINE(HAVE_FIONBIO, 1, [use FIONBIO for non-blocking sockets])
],[
dnl FIONBIO test was also bad
dnl the code was bad, try a different program now, test 3
AC_TRY_COMPILE([
/* headers for ioctlsocket test (cygwin?) */
#include <windows.h>
],[
/* ioctlsocket source code */
int flags = ioctlsocket(socket, FIONBIO, &flags);
],[
dnl ioctlsocket test was good
nonblock="ioctlsocket"
AC_DEFINE(HAVE_IOCTLSOCKET, 1, [use ioctlsocket() for non-blocking sockets])
],[
dnl ioctlsocket didnt compile!
AC_TRY_COMPILE([
/* headers for IoctlSocket test (Amiga?) */
#include <sys/ioctl.h>
],[
/* IoctlSocket source code */
int flags = IoctlSocket(socket, FIONBIO, (long)1);
],[
dnl ioctlsocket test was good
nonblock="IoctlSocket"
AC_DEFINE(HAVE_IOCTLSOCKET_CASE, 1, [use Ioctlsocket() for non-blocking sockets])
],[
dnl ioctlsocket didnt compile!
nonblock="nada"
AC_DEFINE(HAVE_DISABLED_NONBLOCKING, 1, [disabled non-blocking sockets])
])
dnl end of forth test
])
dnl end of third test
])
dnl end of second test
])
dnl end of non-blocking try-compile test
AC_MSG_RESULT($nonblock)
if test "$nonblock" = "nada"; then
AC_MSG_WARN([non-block sockets disabled])
fi
])
dnl Check for socklen_t: historically on BSD it is an int, and in
dnl POSIX 1g it is a type of its own, but some platforms use different
dnl types for the argument to getsockopt, getpeername, etc. So we
dnl have to test to find something that will work.
AC_DEFUN([TYPE_SOCKLEN_T],
[
AC_CHECK_TYPE([socklen_t], ,[
AC_MSG_CHECKING([for socklen_t equivalent])
AC_CACHE_VAL([curl_cv_socklen_t_equiv],
[
# Systems have either "struct sockaddr *" or
# "void *" as the second argument to getpeername
curl_cv_socklen_t_equiv=
for arg2 in "struct sockaddr" void; do
for t in int size_t unsigned long "unsigned long"; do
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
int getpeername (int, $arg2 *, $t *);
],[
$t len;
getpeername(0,0,&len);
],[
curl_cv_socklen_t_equiv="$t"
break
])
done
done
if test "x$curl_cv_socklen_t_equiv" = x; then
AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
fi
])
AC_MSG_RESULT($curl_cv_socklen_t_equiv)
AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
[type to use in place of socklen_t if not defined])],
[#include <sys/types.h>
#include <sys/socket.h>])
])
dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
dnl and a few other things. If not found, we set it to unsigned int, as even
dnl 64-bit implementations use to set it to a 32-bit type.
AC_DEFUN([TYPE_IN_ADDR_T],
[
AC_CHECK_TYPE([in_addr_t], ,[
AC_MSG_CHECKING([for in_addr_t equivalent])
AC_CACHE_VAL([curl_cv_in_addr_t_equiv],
[
curl_cv_in_addr_t_equiv=
for t in "unsigned long" int size_t unsigned long; do
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
],[
$t data = inet_addr ("1.2.3.4");
],[
curl_cv_in_addr_t_equiv="$t"
break
])
done
if test "x$curl_cv_in_addr_t_equiv" = x; then
AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
fi
])
AC_MSG_RESULT($curl_cv_in_addr_t_equiv)
AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
[type to use in place of in_addr_t if not defined])],
[#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>])
])
dnl ************************************************************
dnl check for "localhost", if it doesn't exist, we can't do the
dnl gethostbyname_r tests!
dnl
AC_DEFUN(CURL_CHECK_WORKING_RESOLVER,[
AC_MSG_CHECKING([if "localhost" resolves])
AC_TRY_RUN([
#include <string.h>
#include <sys/types.h>
#include <netdb.h>
int
main () {
struct hostent *h;
h = gethostbyname("localhost");
exit (h == NULL ? 1 : 0); }],[
AC_MSG_RESULT(yes)],[
AC_MSG_RESULT(no)
AC_MSG_ERROR([can't figure out gethostbyname_r() since localhost doesn't resolve])
]
)
])
dnl ************************************************************
dnl check for working getaddrinfo()
dnl
AC_DEFUN(CURL_CHECK_WORKING_GETADDRINFO,[
AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,[
AC_TRY_RUN( [
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
void main(void) {
struct addrinfo hints, *ai;
int error;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
if (error) {
exit(1);
}
else {
exit(0);
}
}
],[
ac_cv_working_getaddrinfo="yes"
],[
ac_cv_working_getaddrinfo="no"
],[
ac_cv_working_getaddrinfo="yes"
])])
if test "$ac_cv_working_getaddrinfo" = "yes"; then
AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if getaddrinfo exists and works])
AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
IPV6_ENABLED=1
AC_SUBST(IPV6_ENABLED)
fi
])
AC_DEFUN(CURL_CHECK_LOCALTIME_R,
[
dnl check for a few thread-safe functions
AC_CHECK_FUNCS(localtime_r,[
AC_MSG_CHECKING(whether localtime_r is declared)
AC_EGREP_CPP(localtime_r,[
#include <time.h>],[
AC_MSG_RESULT(yes)],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING(whether localtime_r with -D_REENTRANT is declared)
AC_EGREP_CPP(localtime_r,[
#define _REENTRANT
#include <time.h>],[
AC_DEFINE(NEED_REENTRANT)
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))])])
])
AC_DEFUN(CURL_CHECK_INET_NTOA_R,
[
dnl determine if function definition for inet_ntoa_r exists.
AC_CHECK_FUNCS(inet_ntoa_r,[
AC_MSG_CHECKING(whether inet_ntoa_r is declared)
AC_EGREP_CPP(inet_ntoa_r,[
#include <arpa/inet.h>],[
AC_DEFINE(HAVE_INET_NTOA_R_DECL, 1, [inet_ntoa_r() is declared])
AC_MSG_RESULT(yes)],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING(whether inet_ntoa_r with -D_REENTRANT is declared)
AC_EGREP_CPP(inet_ntoa_r,[
#define _REENTRANT
#include <arpa/inet.h>],[
AC_DEFINE(HAVE_INET_NTOA_R_DECL, 1, [inet_ntoa_r() is declared])
AC_DEFINE(NEED_REENTRANT, 1, [need REENTRANT defined])
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))])])
])
AC_DEFUN(CURL_CHECK_GETHOSTBYADDR_R,
[
dnl check for number of arguments to gethostbyaddr_r. it might take
dnl either 5, 7, or 8 arguments.
AC_CHECK_FUNCS(gethostbyaddr_r,[
AC_MSG_CHECKING(if gethostbyaddr_r takes 5 arguments)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <netdb.h>],[
char * address;
int length;
int type;
struct hostent h;
struct hostent_data hdata;
int rc;
rc = gethostbyaddr_r(address, length, type, &h, &hdata);],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GETHOSTBYADDR_R_5, 1, [gethostbyaddr_r() takes 5 args])
ac_cv_gethostbyaddr_args=5],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING(if gethostbyaddr_r with -D_REENTRANT takes 5 arguments)
AC_TRY_COMPILE([
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>],[
char * address;
int length;
int type;
struct hostent h;
struct hostent_data hdata;
int rc;
rc = gethostbyaddr_r(address, length, type, &h, &hdata);],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GETHOSTBYADDR_R_5, 1, [gethostbyaddr_r() takes 5 args])
AC_DEFINE(NEED_REENTRANT, 1, [need REENTRANT])
ac_cv_gethostbyaddr_args=5],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING(if gethostbyaddr_r takes 7 arguments)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <netdb.h>],[
char * address;
int length;
int type;
struct hostent h;
char buffer[8192];
int h_errnop;
struct hostent * hp;
hp = gethostbyaddr_r(address, length, type, &h,
buffer, 8192, &h_errnop);],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GETHOSTBYADDR_R_7, 1, [gethostbyaddr_r() takes 7 args] )
ac_cv_gethostbyaddr_args=7],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING(if gethostbyaddr_r takes 8 arguments)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <netdb.h>],[
char * address;
int length;
int type;
struct hostent h;
char buffer[8192];
int h_errnop;
struct hostent * hp;
int rc;
rc = gethostbyaddr_r(address, length, type, &h,
buffer, 8192, &hp, &h_errnop);],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GETHOSTBYADDR_R_8, 1, [gethostbyaddr_r() takes 8 args])
ac_cv_gethostbyaddr_args=8],[
AC_MSG_RESULT(no)
have_missing_r_funcs="$have_missing_r_funcs gethostbyaddr_r"])])])])])
])
AC_DEFUN(CURL_CHECK_GETHOSTBYNAME_R,
[
dnl check for number of arguments to gethostbyname_r. it might take
dnl either 3, 5, or 6 arguments.
AC_CHECK_FUNCS(gethostbyname_r,[
AC_MSG_CHECKING([if gethostbyname_r takes 3 arguments])
AC_TRY_COMPILE([
#include <string.h>
#include <sys/types.h>
#include <netdb.h>
#undef NULL
#define NULL (void *)0
int
gethostbyname_r(const char *, struct hostent *, struct hostent_data *);],[
struct hostent_data data;
gethostbyname_r(NULL, NULL, NULL);],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GETHOSTBYNAME_R_3, 1, [gethostbyname_r() takes 3 args])
ac_cv_gethostbyname_args=3],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING([if gethostbyname_r with -D_REENTRANT takes 3 arguments])
AC_TRY_COMPILE([
#define _REENTRANT
#include <string.h>
#include <sys/types.h>
#include <netdb.h>
#undef NULL
#define NULL (void *)0
int
gethostbyname_r(const char *,struct hostent *, struct hostent_data *);],[
struct hostent_data data;
gethostbyname_r(NULL, NULL, NULL);],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GETHOSTBYNAME_R_3, 1, [gethostbyname_r() takes 3 args])
AC_DEFINE(NEED_REENTRANT, 1, [needs REENTRANT])
ac_cv_gethostbyname_args=3],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING([if gethostbyname_r takes 5 arguments])
AC_TRY_COMPILE([
#include <sys/types.h>
#include <netdb.h>
#undef NULL
#define NULL (void *)0
struct hostent *
gethostbyname_r(const char *, struct hostent *, char *, int, int *);],[
gethostbyname_r(NULL, NULL, NULL, 0, NULL);],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GETHOSTBYNAME_R_5, 1, [gethostbyname_r() takes 5 args])
ac_cv_gethostbyname_args=5],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING([if gethostbyname_r takes 6 arguments])
AC_TRY_COMPILE([
#include <sys/types.h>
#include <netdb.h>
#undef NULL
#define NULL (void *)0
int
gethostbyname_r(const char *, struct hostent *, char *, size_t,
struct hostent **, int *);],[
gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL);],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_GETHOSTBYNAME_R_6, 1, [gethostbyname_r() takes 6 args])
ac_cv_gethostbyname_args=6],[
AC_MSG_RESULT(no)
have_missing_r_funcs="$have_missing_r_funcs gethostbyname_r"],
[ac_cv_gethostbyname_args=0])],
[ac_cv_gethostbyname_args=0])],
[ac_cv_gethostbyname_args=0])],
[ac_cv_gethostbyname_args=0])])
if test "$ac_cv_func_gethostbyname_r" = "yes"; then
if test "$ac_cv_gethostbyname_args" = "0"; then
dnl there's a gethostbyname_r() function, but we don't know how
dnl many arguments it wants!
AC_MSG_ERROR([couldn't figure out how to use gethostbyname_r()])
fi
fi
])

127
aclocal.m4 vendored
View File

@@ -1,127 +0,0 @@
dnl aclocal.m4 generated automatically by aclocal 1.4
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
[AC_PREREQ([2.12])
AC_CONFIG_HEADER([$1])
dnl When config.status generates a header, we must update the stamp-h file.
dnl This file resides in the same directory as the config header
dnl that is generated. We must strip everything past the first ":",
dnl and everything past the last "/".
AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
<<am_indx=1
for am_file in <<$1>>; do
case " <<$>>CONFIG_HEADERS " in
*" <<$>>am_file "*<<)>>
echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
;;
esac
am_indx=`expr "<<$>>am_indx" + 1`
done<<>>dnl>>)
changequote([,]))])
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.
# serial 1
dnl Usage:
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN(AM_INIT_AUTOMAKE,
[AC_REQUIRE([AC_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
AC_SUBST(VERSION)
dnl test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
ifelse([$3],,
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
#
# Check to make sure that the build environment is sane.
#
AC_DEFUN(AM_SANITY_CHECK,
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftestfile
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
if test "[$]*" = "X"; then
# -L didn't work.
set X `ls -t $srcdir/configure conftestfile`
fi
if test "[$]*" != "X $srcdir/configure conftestfile" \
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "[$]2" = conftestfile
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
rm -f conftest*
AC_MSG_RESULT(yes)])
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
dnl The program must properly implement --version.
AC_DEFUN(AM_MISSING_PROG,
[AC_MSG_CHECKING(for working $2)
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
if ($2 --version) < /dev/null > /dev/null 2>&1; then
$1=$2
AC_MSG_RESULT(found)
else
$1="$3/missing $2"
AC_MSG_RESULT(missing)
fi
AC_SUBST($1)])

69
build_vms.com Executable file
View File

@@ -0,0 +1,69 @@
$!
$
$ on control_y then goto Common_Exit!
$ orig = f$environment("DEFAULT")
$ loc = f$environment("PROCEDURE")
$ def = f$parse("X.X;1",loc) - "X.X;1"
$
$ set def 'def'
$ cc_qual = "/define=HAVE_CONFIG_H=1/include=(""../include/"",""../"",""../../openssl-0_9_7/include/"")"
$ if p1 .eqs. "LISTING" then cc_qual = cc_qual + "/LIST/MACHINE"
$ if p1 .eqs. "DEBUG" then cc_qual = cc_qual + "/LIST/MACHINE/DEBUG"
$ msg_qual = ""
$ call build "[.lib]" "*.c"
$ call build "[.src]" "*.c"
$ call build "[.src]" "*.msg"
$ link /exe=curl.exe [.src]curl/lib/include=main,[.lib]curl/lib, -
[-.openssl-0_9_7.axp.exe.ssl]libssl/lib, -
[-.openssl-0_9_7.axp.exe.crypto]libcrypto/lib
$
$
$ goto Common_Exit
$build: subroutine
$ set noon
$ set default 'p1'
$ search = p2
$ reset = f$search("reset")
$ if f$search("CURL.OLB") .eqs. ""
$ then
$ LIB/CREATE/OBJECT CURL.OLB
$ endif
$ reset = f$search("reset",1)
$Loop:
$ file = f$search(search,1)
$ if file .eqs. "" then goto EndLoop
$ obj = f$search(f$parse(".OBJ;",file),2)
$ if (obj .nes. "")
$ then
$ if (f$cvtime(f$file(file,"rdt")) .gts. f$cvtime(f$file(obj,"rdt")))
$ then
$ call compile 'file'
$ lib/object curl.OLB 'f$parse(".obj;",file)'
$ else
$! write sys$output "File: ''file' is up to date"
$ endif
$ else
$! write sys$output "Object for file: ''file' does not exist"
$ call compile 'file'
$ lib/object curl.OLB 'f$parse(".obj;",file)'
$ endif
$ goto Loop
$EndLoop:
$ purge
$ set def 'def'
$ endsubroutine ! Build
$
$compile: subroutine
$ set noon
$ file = p1
$ qual = p2+p3+p4+p5+p6+p7+p8
$ typ = f$parse(file,,,"TYPE") - "."
$ cmd_c = "CC "+cc_qual
$ cmd_msg = "MESSAGE "+msg_qual
$ x = cmd_'typ'
$ 'x' 'file'
$ ENDSUBROUTINE ! Compile
$
$Common_Exit:
$ set default 'orig'
$ exit

129
buildconf Executable file
View File

@@ -0,0 +1,129 @@
#!/bin/sh
die(){
echo "$@"
exit
}
#--------------------------------------------------------------------------
# autoconf 2.57 or newer
#
need_autoconf="2.57"
ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|head -1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
if test -z "$ac_version"; then
echo "buildconf: autoconf not found."
echo " You need autoconf version $need_autoconf or newer installed."
exit 1
fi
IFS=.; set $ac_version; IFS=' '
if test "$1" = "2" -a "$2" -lt "57" || test "$1" -lt "2"; then
echo "buildconf: autoconf version $ac_version found."
echo " You need autoconf version $need_autoconf or newer installed."
echo " If you have a sufficient autoconf installed, but it"
echo " is not named 'autoconf', then try setting the"
echo " AUTOCONF environment variable."
exit 1
fi
echo "buildconf: autoconf version $ac_version (ok)"
#--------------------------------------------------------------------------
# autoheader 2.50 or newer
#
ah_version=`${AUTOHEADER:-autoheader} --version 2>/dev/null|head -1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
if test -z "$ah_version"; then
echo "buildconf: autoheader not found."
echo " You need autoheader version 2.50 or newer installed."
exit 1
fi
IFS=.; set $ah_version; IFS=' '
if test "$1" = "2" -a "$2" -lt "50" || test "$1" -lt "2"; then
echo "buildconf: autoheader version $ah_version found."
echo " You need autoheader version 2.50 or newer installed."
echo " If you have a sufficient autoheader installed, but it"
echo " is not named 'autoheader', then try setting the"
echo " AUTOHEADER environment variable."
exit 1
fi
echo "buildconf: autoheader version $ah_version (ok)"
#--------------------------------------------------------------------------
# automake 1.7 or newer
#
need_automake="1.7"
am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
if test -z "$am_version"; then
echo "buildconf: automake not found."
echo " You need automake version $need_automake or newer installed."
exit 1
fi
IFS=.; set $am_version; IFS=' '
if test "$1" = "1" -a "$2" -lt "7" || test "$1" -lt "1"; then
echo "buildconf: automake version $am_version found."
echo " You need automake version $need_automake or newer installed."
echo " If you have a sufficient automake installed, but it"
echo " is not named 'autommake', then try setting the"
echo " AUTOMAKE environment variable."
exit 1
fi
echo "buildconf: automake version $am_version (ok)"
#--------------------------------------------------------------------------
# libtool check
#
LIBTOOL_WANTED_MAJOR=1
LIBTOOL_WANTED_MINOR=4
LIBTOOL_WANTED_PATCH=2
LIBTOOL_WANTED_VERSION=1.4.2
libtool=`which glibtool 2>/dev/null`
if test ! -x "$libtool"; then
libtool=`which libtool`
fi
#lt_pversion=`${LIBTOOL:-$libtool} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
lt_pversion=`$libtool --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//g' -e 's/[- ].*//'`
if test -z "$lt_pversion"; then
echo "buildconf: libtool not found."
echo " You need libtool version $LIBTOOL_WANTED_VERSION or newer installed"
exit 1
fi
lt_version=`echo $lt_pversion` #|sed -e 's/\([a-z]*\)$/.\1/'`
IFS=.; set $lt_version; IFS=' '
lt_status="good"
if test "$1" = "$LIBTOOL_WANTED_MAJOR"; then
if test "$2" -lt "$LIBTOOL_WANTED_MINOR"; then
lt_status="bad"
elif test ! -z "$LIBTOOL_WANTED_PATCH"; then
if test -n "$3"; then
if test "$3" -lt "$LIBTOOL_WANTED_PATCH"; then
lt_status="bad"
fi
fi
fi
fi
if test $lt_status != "good"; then
echo "buildconf: libtool version $lt_pversion found."
echo " You need libtool version $LIBTOOL_WANTED_VERSION or newer installed"
exit 1
fi
echo "buildconf: libtool version $lt_version (ok)"
# ------------------------------------------------------------
# run the correct scripts now
echo "buildconf: running libtoolize"
${LIBTOOLIZE:-libtoolize} --copy --automake || die "The command '${LIBTOOLIZE:-libtoolize} --copy --automake' failed"
echo "buildconf: running aclocal"
${ACLOCAL:-aclocal} || die "The command '${AUTOHEADER:-aclocal}' failed"
echo "buildconf: running autoheader"
${AUTOHEADER:-autoheader} || die "The command '${AUTOHEADER:-autoheader}' failed"
echo "buildconf: running autoconf"
${AUTOCONF:-autoconf} || die "The command '${AUTOCONF:-autoconf}' failed"
echo "buildconf: running automake"
${AUTOMAKE:-automake} -a || die "The command '${AUTOMAKE:-automake} -a' failed"
exit 0

997
config.guess vendored
View File

@@ -1,997 +0,0 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Written by Per Bothner <bothner@cygnus.com>.
# The master version of this file is at the FSF in /home/gd/gnu/lib.
# Please send patches to the Autoconf mailing list <autoconf@gnu.org>.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
# The plan is that this can be called by configure scripts if you
# don't specify an explicit system type (host/target name).
#
# Only a few systems have been added to this list; please add others
# (but try to keep the structure clean).
#
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 8/24/94.)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
PATH=$PATH:/.attbin ; export PATH
fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
dummy=dummy-$$
trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
fi
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
cat <<EOF >$dummy.s
.globl main
.ent main
main:
.frame \$30,0,\$26,0
.prologue 0
.long 0x47e03d80 # implver $0
lda \$2,259
.long 0x47e20c21 # amask $2,$1
srl \$1,8,\$2
sll \$2,2,\$2
sll \$0,3,\$0
addl \$1,\$0,\$0
addl \$2,\$0,\$0
ret \$31,(\$26),1
.end main
EOF
${CC-cc} $dummy.s -o $dummy 2>/dev/null
if test "$?" = 0 ; then
./$dummy
case "$?" in
7)
UNAME_MACHINE="alpha"
;;
15)
UNAME_MACHINE="alphaev5"
;;
14)
UNAME_MACHINE="alphaev56"
;;
10)
UNAME_MACHINE="alphapca56"
;;
16)
UNAME_MACHINE="alphaev6"
;;
esac
fi
rm -f $dummy.s $dummy
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
exit 0 ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
exit 0 ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-cbm-sysv4
exit 0;;
amiga:NetBSD:*:*)
echo m68k-cbm-netbsd${UNAME_RELEASE}
exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
exit 0 ;;
arc64:OpenBSD:*:*)
echo mips64el-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
hkmips:OpenBSD:*:*)
echo mips-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
pmax:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sgi:OpenBSD:*:*)
echo mips-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
wgrisc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
arm32:NetBSD:*:*)
echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
SR2?01:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
exit 0;;
Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
fi
exit 0 ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
i86pc:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
exit 0 ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
exit 0 ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
echo m68k-sun-sunos${UNAME_RELEASE}
;;
sun4)
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
exit 0 ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit 0 ;;
atari*:NetBSD:*:*)
echo m68k-atari-netbsd${UNAME_RELEASE}
exit 0 ;;
atari*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:NetBSD:*:*)
echo m68k-sun-netbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:NetBSD:*:*)
echo m68k-apple-netbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvme68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvme88k:OpenBSD:*:*)
echo m88k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
macppc:NetBSD:*:*)
echo powerpc-apple-netbsd${UNAME_RELEASE}
exit 0 ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit 0 ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
2020:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
exit 0 ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
sed 's/^ //' << EOF >$dummy.c
#ifdef __cplusplus
int main (int argc, char *argv[]) {
#else
int main (argc, argv) int argc; char *argv[]; {
#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
${CC-cc} $dummy.c -o $dummy \
&& ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
&& rm $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
exit 0 ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
exit 0 ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
exit 0 ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
exit 0 ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-o ${TARGET_BINARY_INTERFACE}x = x ] ; then
echo m88k-dg-dgux${UNAME_RELEASE}
else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
fi
else echo i586-dg-dgux${UNAME_RELEASE}
fi
exit 0 ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit 0 ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
exit 0 ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
exit 0 ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
exit 0 ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
exit 0 ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i?86:AIX:*:*)
echo i386-ibm-aix
exit 0 ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
sed 's/^ //' << EOF >$dummy.c
#include <sys/systemcfg.h>
main()
{
if (!__power_pc())
exit(1);
puts("powerpc-ibm-aix3.2.5");
exit(0);
}
EOF
${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
exit 0 ;;
*:AIX:*:4)
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
IBM_REV=4.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
exit 0 ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit 0 ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
exit 0 ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
exit 0 ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
exit 0 ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
exit 0 ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
exit 0 ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
exit 0 ;;
9000/[34678]??:HP-UX:*:*)
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
9000/6?? | 9000/7?? | 9000/80[024] | 9000/8?[136790] | 9000/892 )
sed 's/^ //' << EOF >$dummy.c
#include <stdlib.h>
#include <unistd.h>
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
EOF
(${CC-cc} $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
rm -f $dummy.c $dummy
esac
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
3050*:HI-UX:*:*)
sed 's/^ //' << EOF >$dummy.c
#include <unistd.h>
int
main ()
{
long cpu = sysconf (_SC_CPU_VERSION);
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
results, however. */
if (CPU_IS_PA_RISC (cpu))
{
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
default: puts ("hppa-hitachi-hiuxwe2"); break;
}
}
else if (CPU_IS_HP_MC68K (cpu))
puts ("m68k-hitachi-hiuxwe2");
else puts ("unknown-hitachi-hiuxwe2");
exit (0);
}
EOF
${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
exit 0 ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
exit 0 ;;
*9??*:MPE*:*:*)
echo hppa1.0-hp-mpeix
exit 0 ;;
*9??*:MPE*:*:*)
echo hppa1.0-hp-mpeix
exit 0 ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
exit 0 ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
exit 0 ;;
i?86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
exit 0 ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit 0 ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit 0 ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit 0 ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
exit 0 ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
exit 0 ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit 0 ;;
CRAY*X-MP:*:*:*)
echo xmp-cray-unicos
exit 0 ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE}
exit 0 ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
exit 0 ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE}
exit 0 ;;
CRAY*T3E:*:*:*)
echo t3e-cray-unicosmk${UNAME_RELEASE}
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
F300:UNIX_System_V:*:*)
FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
F301:UNIX_System_V:*:*)
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
exit 0 ;;
hp3[0-9][05]:NetBSD:*:*)
echo m68k-hp-netbsd${UNAME_RELEASE}
exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
if test -x /usr/bin/objformat; then
if test "elf" = "`/usr/bin/objformat`"; then
echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
exit 0
fi
fi
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
*:NetBSD:*:*)
echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit 0 ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit 0 ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
exit 0 ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
*:GNU:*:*)
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
*:Linux:*:*)
# # uname on the ARM produces all sorts of strangeness, and we need to
# # filter it out.
# case "$UNAME_MACHINE" in
# armv*) UNAME_MACHINE=$UNAME_MACHINE ;;
# arm* | sa110*) UNAME_MACHINE="arm" ;;
# esac
# The BFD linker knows what the default object file format is, so
# first see if it will tell us.
ld_help_string=`ld --help 2>&1`
ld_supported_emulations=`echo $ld_help_string \
| sed -ne '/supported emulations:/!d
s/[ ][ ]*/ /g
s/.*supported emulations: *//
s/ .*//
p'`
case "$ld_supported_emulations" in
i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
elf32arm) echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 ;;
elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
esac
if test "${UNAME_MACHINE}" = "alpha" ; then
sed 's/^ //' <<EOF >$dummy.s
.globl main
.ent main
main:
.frame \$30,0,\$26,0
.prologue 0
.long 0x47e03d80 # implver $0
lda \$2,259
.long 0x47e20c21 # amask $2,$1
srl \$1,8,\$2
sll \$2,2,\$2
sll \$0,3,\$0
addl \$1,\$0,\$0
addl \$2,\$0,\$0
ret \$31,(\$26),1
.end main
EOF
LIBC=""
${CC-cc} $dummy.s -o $dummy 2>/dev/null
if test "$?" = 0 ; then
./$dummy
case "$?" in
7)
UNAME_MACHINE="alpha"
;;
15)
UNAME_MACHINE="alphaev5"
;;
14)
UNAME_MACHINE="alphaev56"
;;
10)
UNAME_MACHINE="alphapca56"
;;
16)
UNAME_MACHINE="alphaev6"
;;
esac
objdump --private-headers $dummy | \
grep ld.so.1 > /dev/null
if test "$?" = 0 ; then
LIBC="libc1"
fi
fi
rm -f $dummy.s $dummy
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
elif test "${UNAME_MACHINE}" = "mips" ; then
cat >$dummy.c <<EOF
#ifdef __cplusplus
int main (int argc, char *argv[]) {
#else
int main (argc, argv) int argc; char *argv[]; {
#endif
#ifdef __MIPSEB__
printf ("%s-unknown-linux-gnu\n", argv[1]);
#endif
#ifdef __MIPSEL__
printf ("%sel-unknown-linux-gnu\n", argv[1]);
#endif
return 0;
}
EOF
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
else
# Either a pre-BFD a.out linker (linux-gnuoldld)
# or one that does not give us useful --help.
# GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
# If ld does not provide *any* "supported emulations:"
# that means it is gnuoldld.
echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
case "${UNAME_MACHINE}" in
i?86)
VENDOR=pc;
;;
*)
VENDOR=unknown;
;;
esac
# Determine whether the default compiler is a.out or elf
cat >$dummy.c <<EOF
#include <features.h>
#ifdef __cplusplus
int main (int argc, char *argv[]) {
#else
int main (argc, argv) int argc; char *argv[]; {
#endif
#ifdef __ELF__
# ifdef __GLIBC__
# if __GLIBC__ >= 2
printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
# else
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
# endif
# else
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
# endif
#else
printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
#endif
return 0;
}
EOF
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
fi ;;
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
# are messed up and put the nodename in both sysname and nodename.
i?86:DYNIX/ptx:4*:*)
echo i386-sequent-sysv4
exit 0 ;;
i?86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit 0 ;;
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
fi
exit 0 ;;
i?86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit 0 ;;
i?86:UnixWare:*:*)
if /bin/uname -X 2>/dev/null >/dev/null ; then
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
fi
echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
exit 0 ;;
pc:*:*:*)
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i386.
echo i386-pc-msdosdjgpp
exit 0 ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit 0 ;;
paragon:*:*:*)
echo i860-intel-osf1
exit 0 ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
exit 0 ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
exit 0 ;;
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4.3${OS_REL} && exit 0
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4 && exit 0 ;;
m68*:LynxOS:2.*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit 0 ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
exit 0 ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
exit 0 ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
echo ${UNAME_MACHINE}-sni-sysv4
else
echo ns32k-sni-sysv
fi
exit 0 ;;
PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit 0 ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
exit 0 ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
exit 0 ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
exit 0 ;;
news*:NEWS-OS:*:6*)
echo mips-sony-newsos6
exit 0 ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit 0 ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit 0 ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
exit 0 ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit 0 ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit 0 ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
exit 0 ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
printf ("arm-acorn-riscix"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
printf ("m68k-hp-bsd\n"); exit (0);
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
#if !defined (ultrix)
printf ("vax-dec-bsd\n"); exit (0);
#else
printf ("vax-dec-ultrix\n"); exit (0);
#endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
# Convex versions that predate uname can use getsysinfo(1)
if [ -x /usr/convex/getsysinfo ]
then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
exit 0 ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit 0 ;;
c34*)
echo c34-convex-bsd
exit 0 ;;
c38*)
echo c38-convex-bsd
exit 0 ;;
c4*)
echo c4-convex-bsd
exit 0 ;;
esac
fi
#echo '(Unable to guess system type)' 1>&2
exit 1

View File

@@ -1,234 +0,0 @@
/* config.h.in. Generated automatically from configure.in by autoheader. */
/* Define if on AIX 3.
System headers sometimes define this.
We just want to avoid a redefinition error message. */
#ifndef _ALL_SOURCE
#undef _ALL_SOURCE
#endif
/* Define to empty if the keyword does not work. */
#undef const
/* Define if you don't have vprintf but do have _doprnt. */
#undef HAVE_DOPRNT
/* Define if you have the vprintf function. */
#undef HAVE_VPRINTF
/* Define as the return type of signal handlers (int or void). */
#undef RETSIGTYPE
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Define cpu-machine-OS */
#undef OS
/* The number of bytes in a long double. */
#undef SIZEOF_LONG_DOUBLE
/* The number of bytes in a long long. */
#undef SIZEOF_LONG_LONG
/* Define if you have the RAND_screen function. */
#undef HAVE_RAND_SCREEN
/* Define if you have the RAND_status function. */
#undef HAVE_RAND_STATUS
/* Define if you have the closesocket function. */
#undef HAVE_CLOSESOCKET
/* Define if you have the gethostbyaddr function. */
#undef HAVE_GETHOSTBYADDR
/* Define if you have the gethostname function. */
#undef HAVE_GETHOSTNAME
/* Define if you have the getpass function. */
#undef HAVE_GETPASS
/* Define if you have the getservbyname function. */
#undef HAVE_GETSERVBYNAME
/* Define if you have the gettimeofday function. */
#undef HAVE_GETTIMEOFDAY
/* Define if you have the inet_addr function. */
#undef HAVE_INET_ADDR
/* Define if you have the inet_ntoa function. */
#undef HAVE_INET_NTOA
/* Define if you have the perror function. */
#undef HAVE_PERROR
/* Define if you have the select function. */
#undef HAVE_SELECT
/* Define if you have the setvbuf function. */
#undef HAVE_SETVBUF
/* Define if you have the socket function. */
#undef HAVE_SOCKET
/* Define if you have the strcasecmp function. */
#undef HAVE_STRCASECMP
/* Define if you have the strdup function. */
#undef HAVE_STRDUP
/* Define if you have the strftime function. */
#undef HAVE_STRFTIME
/* Define if you have the strstr function. */
#undef HAVE_STRSTR
/* Define if you have the tcgetattr function. */
#undef HAVE_TCGETATTR
/* Define if you have the tcsetattr function. */
#undef HAVE_TCSETATTR
/* Define if you have the uname function. */
#undef HAVE_UNAME
/* Define if you have the <alloca.h> header file. */
#undef HAVE_ALLOCA_H
/* Define if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H
/* Define if you have the <crypto.h> header file. */
#undef HAVE_CRYPTO_H
/* Define if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define if you have the <err.h> header file. */
#undef HAVE_ERR_H
/* Define if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define if you have the <getopt.h> header file. */
#undef HAVE_GETOPT_H
/* Define if you have the <io.h> header file. */
#undef HAVE_IO_H
/* Define if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
/* Define if you have the <net/if.h> header file. */
#undef HAVE_NET_IF_H
/* Define if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
/* Define if you have the <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H
/* Define if you have the <openssl/crypto.h> header file. */
#undef HAVE_OPENSSL_CRYPTO_H
/* Define if you have the <openssl/err.h> header file. */
#undef HAVE_OPENSSL_ERR_H
/* Define if you have the <openssl/pem.h> header file. */
#undef HAVE_OPENSSL_PEM_H
/* Define if you have the <openssl/rsa.h> header file. */
#undef HAVE_OPENSSL_RSA_H
/* Define if you have the <openssl/ssl.h> header file. */
#undef HAVE_OPENSSL_SSL_H
/* Define if you have the <openssl/x509.h> header file. */
#undef HAVE_OPENSSL_X509_H
/* Define if you have the <pem.h> header file. */
#undef HAVE_PEM_H
/* Define if you have the <rsa.h> header file. */
#undef HAVE_RSA_H
/* Define if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H
/* Define if you have the <ssl.h> header file. */
#undef HAVE_SSL_H
/* Define if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
/* Define if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H
/* Define if you have the <sys/sockio.h> header file. */
#undef HAVE_SYS_SOCKIO_H
/* Define if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H
/* Define if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H
/* Define if you have the <time.h> header file. */
#undef HAVE_TIME_H
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you have the <winsock.h> header file. */
#undef HAVE_WINSOCK_H
/* Define if you have the <x509.h> header file. */
#undef HAVE_X509_H
/* Define if you have the crypto library (-lcrypto). */
#undef HAVE_LIBCRYPTO
/* Define if you have the dl library (-ldl). */
#undef HAVE_LIBDL
/* Define if you have the nsl library (-lnsl). */
#undef HAVE_LIBNSL
/* Define if you have the resolve library (-lresolve). */
#undef HAVE_LIBRESOLVE
/* Define if you have the socket library (-lsocket). */
#undef HAVE_LIBSOCKET
/* Define if you have the ssl library (-lssl). */
#undef HAVE_LIBSSL
/* Define if you have the ucb library (-lucb). */
#undef HAVE_LIBUCB
/* Name of package */
#undef PACKAGE
/* Version number of package */
#undef VERSION

979
config.sub vendored
View File

@@ -1,979 +0,0 @@
#! /bin/sh
# Configuration validation subroutine script, version 1.1.
# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# can handle that machine. It does not imply ALL GNU software can.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support. The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.
# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
if [ x$1 = x ]
then
echo Configuration name missing. 1>&2
echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
echo "or $0 ALIAS" 1>&2
echo where ALIAS is a recognized configuration type. 1>&2
exit 1
fi
# First pass through any local machine types.
case $1 in
*local*)
echo $1
exit 0
;;
*)
;;
esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
linux-gnu*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
then os=`echo $1 | sed 's/.*-/-/'`
else os=; fi
;;
esac
### Let's recognize common machines as not being operating systems so
### that things like config.sub decstation-3100 work. We also
### recognize some manufacturers as not being operating systems, so we
### can provide default operating systems below.
case $os in
-sun*os*)
# Prevent following clause from handling this invalid input.
;;
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple)
os=
basic_machine=$1
;;
-hiux*)
os=-hiuxwe2
;;
-sco5)
os=sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-lynx*)
os=-lynxos
;;
-ptx*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
;;
-windowsnt*)
os=`echo $os | sed -e 's/windowsnt/winnt/'`
;;
-psos*)
os=-psos
;;
esac
# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
| 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \
| hppa2.0w \
| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
| mipstx39 | mipstx39el | armv[34][lb] \
| sparc | sparclet | sparclite | sparc64 | v850)
basic_machine=$basic_machine-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i[34567]86)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
*-*-*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \
| hppa2.0w-* \
| alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
| ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
| sparc64-* | mips64-* | mipsel-* | armv[34][lb]-*\
| mips64el-* | mips64orion-* | mips64orionel-* \
| mipstx39-* | mipstx39el-* \
| f301-* | armv*-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
basic_machine=m68000-att
;;
3b*)
basic_machine=we32k-att
;;
alliant | fx80)
basic_machine=fx80-alliant
;;
altos | altos3068)
basic_machine=m68k-altos
;;
am29k)
basic_machine=a29k-none
os=-bsd
;;
amdahl)
basic_machine=580-amdahl
os=-sysv
;;
amiga | amiga-*)
basic_machine=m68k-cbm
;;
amigaos | amigados)
basic_machine=m68k-cbm
os=-amigaos
;;
amigaunix | amix)
basic_machine=m68k-cbm
os=-sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=-sysv
;;
aux)
basic_machine=m68k-apple
os=-aux
;;
balance)
basic_machine=ns32k-sequent
os=-dynix
;;
convex-c1)
basic_machine=c1-convex
os=-bsd
;;
convex-c2)
basic_machine=c2-convex
os=-bsd
;;
convex-c32)
basic_machine=c32-convex
os=-bsd
;;
convex-c34)
basic_machine=c34-convex
os=-bsd
;;
convex-c38)
basic_machine=c38-convex
os=-bsd
;;
cray | ymp)
basic_machine=ymp-cray
os=-unicos
;;
cray2)
basic_machine=cray2-cray
os=-unicos
;;
[ctj]90-cray)
basic_machine=c90-cray
os=-unicos
;;
crds | unos)
basic_machine=m68k-crds
;;
da30 | da30-*)
basic_machine=m68k-da30
;;
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
basic_machine=m68k-motorola
;;
delta88)
basic_machine=m88k-motorola
os=-sysv3
;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
;;
dpx2* | dpx2*-bull)
basic_machine=m68k-bull
os=-sysv3
;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
;;
elxsi)
basic_machine=elxsi-elxsi
os=-bsd
;;
encore | umax | mmax)
basic_machine=ns32k-encore
;;
fx2800)
basic_machine=i860-alliant
;;
genix)
basic_machine=ns32k-ns
;;
gmicro)
basic_machine=tron-gmicro
os=-sysv
;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
h8300hms)
basic_machine=h8300-hitachi
os=-hms
;;
harris)
basic_machine=m88k-harris
os=-sysv3
;;
hp300-*)
basic_machine=m68k-hp
;;
hp300bsd)
basic_machine=m68k-hp
os=-bsd
;;
hp300hpux)
basic_machine=m68k-hp
os=-hpux
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
basic_machine=m68000-hp
;;
hp9k3[2-9][0-9])
basic_machine=m68k-hp
;;
hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hppa-next)
os=-nextstep3
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
basic_machine=hppa1.0-hp
os=-mpeix
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
basic_machine=hppa1.0-hp
os=-mpeix
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
os=-mvs
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i[34567]86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
i[34567]86v4*)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
i[34567]86v)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
i[34567]86sol2)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
-irix*)
;;
*)
os=-irix4
;;
esac
;;
isi68 | isi)
basic_machine=m68k-isi
os=-sysv
;;
m88k-omron*)
basic_machine=m88k-omron
;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
;;
merlin)
basic_machine=ns32k-utek
os=-sysv
;;
miniframe)
basic_machine=m68000-convergent
;;
mipsel*-linux*)
basic_machine=mipsel-unknown
os=-linux-gnu
;;
mips*-linux*)
basic_machine=mips-unknown
os=-linux-gnu
;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
;;
netwinder)
basic_machine=armv4l-corel
os=-linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=-newsos
;;
news1000)
basic_machine=m68030-sony
os=-newsos
;;
news-3600 | risc-news)
basic_machine=mips-sony
os=-newsos
;;
next | m*-next )
basic_machine=m68k-next
case $os in
-nextstep* )
;;
-ns2*)
os=-nextstep2
;;
*)
os=-nextstep3
;;
esac
;;
nh3000)
basic_machine=m68k-harris
os=-cxux
;;
nh[45]000)
basic_machine=m88k-harris
os=-cxux
;;
nindy960)
basic_machine=i960-intel
os=-nindy
;;
np1)
basic_machine=np1-gould
;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
paragon)
basic_machine=i860-intel
os=-osf
;;
pbd)
basic_machine=sparc-tti
;;
pbb)
basic_machine=m68k-tti
;;
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pentium | p5 | k5 | nexen)
basic_machine=i586-pc
;;
pentiumpro | p6 | k6 | 6x86)
basic_machine=i686-pc
;;
pentiumii | pentium2)
basic_machine=i786-pc
;;
pentium-* | p5-* | k5-* | nexen-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | k6-* | 6x86-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-*)
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=rs6000-ibm
;;
ppc) basic_machine=powerpc-unknown
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
;;
rm[46]00)
basic_machine=mips-siemens
;;
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
sequent)
basic_machine=i386-sequent
;;
sh)
basic_machine=sh-hitachi
os=-hms
;;
sps7)
basic_machine=m68k-bull
os=-sysv2
;;
spur)
basic_machine=spur-unknown
;;
sun2)
basic_machine=m68000-sun
;;
sun2os3)
basic_machine=m68000-sun
os=-sunos3
;;
sun2os4)
basic_machine=m68000-sun
os=-sunos4
;;
sun3os3)
basic_machine=m68k-sun
os=-sunos3
;;
sun3os4)
basic_machine=m68k-sun
os=-sunos4
;;
sun4os3)
basic_machine=sparc-sun
os=-sunos3
;;
sun4os4)
basic_machine=sparc-sun
os=-sunos4
;;
sun4sol2)
basic_machine=sparc-sun
os=-solaris2
;;
sun3 | sun3-*)
basic_machine=m68k-sun
;;
sun4)
basic_machine=sparc-sun
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
symmetry)
basic_machine=i386-sequent
os=-dynix
;;
tx39)
basic_machine=mipstx39-unknown
;;
tx39el)
basic_machine=mipstx39el-unknown
;;
tower | tower-32)
basic_machine=m68k-ncr
;;
udi29k)
basic_machine=a29k-amd
os=-udi
;;
ultra3)
basic_machine=a29k-nyu
os=-sym1
;;
vaxv)
basic_machine=vax-dec
os=-sysv
;;
vms)
basic_machine=vax-dec
os=-vms
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
;;
vxworks68)
basic_machine=m68k-wrs
os=-vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
os=-vxworks
;;
xmp)
basic_machine=xmp-cray
os=-unicos
;;
xps | xps100)
basic_machine=xps100-honeywell
;;
none)
basic_machine=none-none
os=-none
;;
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
mips)
if [ x$os = x-linux-gnu ]; then
basic_machine=mips-unknown
else
basic_machine=mips-mips
fi
;;
romp)
basic_machine=romp-ibm
;;
rs6000)
basic_machine=rs6000-ibm
;;
vax)
basic_machine=vax-dec
;;
pdp11)
basic_machine=pdp11-dec
;;
we32k)
basic_machine=we32k-att
;;
sparc)
basic_machine=sparc-sun
;;
cydra)
basic_machine=cydra-cydrome
;;
orion)
basic_machine=orion-highlevel
;;
orion105)
basic_machine=clipper-highlevel
;;
*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
esac
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
;;
*-commodore*)
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
if [ x"$os" != x"" ]
then
case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
-solaris)
os=-solaris2
;;
-svr4*)
os=-sysv4
;;
-unixware*)
os=-sysv4.2uw
;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
# First accept the basic system types.
# The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -rhapsody* \
| -openstep* | -mpeix* | -oskit*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'`
;;
-osfrose*)
os=-osfrose
;;
-osf*)
os=-osf
;;
-utek*)
os=-bsd
;;
-dynix*)
os=-bsd
;;
-acis*)
os=-aos
;;
-ctix* | -uts*)
os=-sysv
;;
-ns2 )
os=-nextstep2
;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
-sinix*)
os=-sysv4
;;
-triton*)
os=-sysv3
;;
-oss*)
os=-sysv3
;;
-svr4)
os=-sysv4
;;
-svr3)
os=-sysv3
;;
-sysvr4)
os=-sysv4
;;
# This must come after -sysvr4.
-sysv*)
;;
-xenix)
os=-xenix
;;
-none)
;;
*)
# Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
exit 1
;;
esac
else
# Here we handle the default operating systems that come with various machines.
# The value should be what the vendor currently ships out the door with their
# machine or put another way, the most popular os provided with the machine.
# Note that if you're going to try to match "-MANUFACTURER" here (say,
# "-sun"), then you have to tell the case statement up towards the top
# that MANUFACTURER isn't an operating system. Otherwise, code above
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
case $basic_machine in
*-acorn)
os=-riscix1.2
;;
arm*-corel)
os=-linux
;;
arm*-semi)
os=-aout
;;
pdp11-*)
os=-none
;;
*-dec | vax-*)
os=-ultrix4.2
;;
m68*-apollo)
os=-domain
;;
i386-sun)
os=-sunos4.0.2
;;
m68000-sun)
os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
sparc-* | *-sun)
os=-sunos4.1.1
;;
*-be)
os=-beos
;;
*-ibm)
os=-aix
;;
*-hp)
os=-hpux
;;
*-hitachi)
os=-hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
os=-sysv
;;
*-cbm)
os=-amigaos
;;
*-dg)
os=-dgux
;;
*-dolphin)
os=-sysv3
;;
m68k-ccur)
os=-rtu
;;
m88k-omron*)
os=-luna
;;
*-next )
os=-nextstep
;;
*-sequent)
os=-ptx
;;
*-crds)
os=-unos
;;
*-ns)
os=-genix
;;
i370-*)
os=-mvs
;;
*-next)
os=-nextstep3
;;
*-gould)
os=-sysv
;;
*-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
*-sgi)
os=-irix
;;
*-siemens)
os=-sysv4
;;
*-masscomp)
os=-rtu
;;
f301-fujitsu)
os=-uxpv
;;
*)
os=-none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
vendor=unknown
case $basic_machine in
*-unknown)
case $os in
-riscix*)
vendor=acorn
;;
-sunos*)
vendor=sun
;;
-aix*)
vendor=ibm
;;
-hpux*)
vendor=hp
;;
-mpeix*)
vendor=hp
;;
-mpeix*)
vendor=hp
;;
-hiux*)
vendor=hitachi
;;
-unos*)
vendor=crds
;;
-dgux*)
vendor=dg
;;
-luna*)
vendor=omron
;;
-genix*)
vendor=ns
;;
-mvs*)
vendor=ibm
;;
-ptx*)
vendor=sequent
;;
-vxsim* | -vxworks*)
vendor=wrs
;;
-aux*)
vendor=apple
;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
echo $basic_machine$os

921
configure.ac Normal file
View File

@@ -0,0 +1,921 @@
dnl $Id$
dnl Process this file with autoconf to produce a configure script.
dnl Ensure that this file is processed with autoconf 2.50 or newer
dnl Don't even think about removing this check!
AC_PREREQ(2.50)
dnl We don't know the version number "staticly" so we use a dash here
AC_INIT(curl, [-], [curl-bug@haxx.se])
dnl configure script copyright
AC_COPYRIGHT([Copyright (c) 1998 - 2003 Daniel Stenberg, <daniel@haxx.se>
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 tests/server/config.h lib/ca-bundle.h)
AM_MAINTAINER_MODE
AC_PATH_PROG( SED, sed, , $PATH:/usr/bin:/usr/local/bin)
AC_SUBST(SED)
dnl figure out the libcurl version
VERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curl.h`
AM_INIT_AUTOMAKE(curl,$VERSION)
AC_MSG_CHECKING([curl version])
AC_MSG_RESULT($VERSION)
dnl
dnl we extract the numerical version for curl-config only
VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curl.h`
AC_SUBST(VERSIONNUM)
dnl Solaris pkgadd support definitions
PKGADD_PKG="HAXXcurl"
PKGADD_NAME="cURL - a client that groks URLs"
PKGADD_VENDOR="curl.haxx.se"
AC_SUBST(PKGADD_PKG)
AC_SUBST(PKGADD_NAME)
AC_SUBST(PKGADD_VENDOR)
dnl
dnl Detect the canonical host and target build environment
dnl
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 check for how to do large files
AC_SYS_LARGEFILE
dnl check for cygwin stuff
AC_LIBTOOL_WIN32_DLL
dnl libtool setup
AM_PROG_LIBTOOL
case $host in
*-*-cygwin | *-*-mingw* | *-*-pw32*)
need_no_undefined=yes
;;
*)
need_no_undefined=no
;;
esac
AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
dnl The install stuff has already been taken care of by the automake stuff
dnl AC_PROG_INSTALL
AC_PROG_MAKE_SET
dnl ************************************************************
dnl switch off particular protocols
dnl
AC_MSG_CHECKING([whether to support http])
AC_ARG_ENABLE(http,
AC_HELP_STRING([--enable-http],[Enable HTTP support])
AC_HELP_STRING([--disable-http],[Disable HTTP support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
AC_MSG_WARN([disable HTTP disables FTP over proxy and GOPHER too])
AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable GOPHER])
AC_SUBST(CURL_DISABLE_HTTP)
AC_SUBST(CURL_DISABLE_GOPHER)
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support ftp])
AC_ARG_ENABLE(ftp,
AC_HELP_STRING([--enable-ftp],[Enable FTP support])
AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
AC_SUBST(CURL_DISABLE_FTP)
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support gopher])
AC_ARG_ENABLE(gopher,
AC_HELP_STRING([--enable-gopher],[Enable GOPHER support])
AC_HELP_STRING([--disable-gopher],[Disable GOPHER support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable GOPHER])
AC_SUBST(CURL_DISABLE_GOPHER)
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support file])
AC_ARG_ENABLE(file,
AC_HELP_STRING([--enable-file],[Enable FILE support])
AC_HELP_STRING([--disable-file],[Disable FILE support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
AC_SUBST(CURL_DISABLE_FILE)
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support ldap])
AC_ARG_ENABLE(ldap,
AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
AC_SUBST(CURL_DISABLE_LDAP)
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support dict])
AC_ARG_ENABLE(dict,
AC_HELP_STRING([--enable-dict],[Enable DICT support])
AC_HELP_STRING([--disable-dict],[Disable DICT support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
AC_SUBST(CURL_DISABLE_DICT)
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support telnet])
AC_ARG_ENABLE(telnet,
AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
AC_SUBST(CURL_DISABLE_TELNET)
;;
*) AC_MSG_RESULT(yes)
;;
esac ],
AC_MSG_RESULT(yes)
)
dnl **********************************************************************
dnl Checks for IPv6
dnl **********************************************************************
AC_MSG_CHECKING([whether to enable ipv6])
AC_ARG_ENABLE(ipv6,
AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
ipv6=no
;;
*) AC_MSG_RESULT(yes)
ipv6=yes
;;
esac ],
AC_TRY_RUN([ /* is AF_INET6 available? */
#include <sys/types.h>
#include <sys/socket.h>
main()
{
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
exit(1);
else
exit(0);
}
],
AC_MSG_RESULT(yes)
ipv6=yes,
AC_MSG_RESULT(no)
ipv6=no,
AC_MSG_RESULT(no)
ipv6=no
))
if test "$ipv6" = "yes"; then
CURL_CHECK_WORKING_GETADDRINFO
fi
dnl **********************************************************************
dnl Checks for libraries.
dnl **********************************************************************
dnl gethostbyname in the nsl lib?
AC_CHECK_FUNC(gethostbyname, , [ AC_CHECK_LIB(nsl, gethostbyname) ])
if test "$ac_cv_lib_nsl_gethostbyname" != "yes" -a "$ac_cv_func_gethostbyname" != "yes"; then
dnl gethostbyname in the socket lib?
AC_CHECK_FUNC(gethostbyname, , [ AC_CHECK_LIB(socket, gethostbyname) ])
fi
dnl At least one system has been identified to require BOTH nsl and
dnl socket libs to link properly.
if test "$ac_cv_lib_nsl_gethostbyname" = "$ac_cv_func_gethostbyname"; then
AC_MSG_CHECKING([trying both nsl and socket libs])
my_ac_save_LIBS=$LIBS
LIBS="-lnsl -lsocket $LIBS"
AC_TRY_LINK( ,
[gethostbyname();],
my_ac_link_result=success,
my_ac_link_result=failure )
if test "$my_ac_link_result" = "failure"; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
dnl restore LIBS
LIBS=$my_ac_save_LIBS
else
AC_MSG_RESULT([yes])
fi
fi
dnl resolve lib?
AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
AC_CHECK_LIB(resolve, strcasecmp,
[LIBS="-lresolve $LIBS"],
,
-lnsl)
fi
dnl socket lib?
AC_CHECK_FUNC(connect, , [ AC_CHECK_LIB(socket, connect) ])
dnl dl lib?
AC_CHECK_FUNC(dlclose, , [ AC_CHECK_LIB(dl, dlopen) ])
AC_MSG_CHECKING([whether to use libgcc])
AC_ARG_ENABLE(libgcc,
AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
[ case "$enableval" in
yes)
LIBS="$LIBS -lgcc"
AC_MSG_RESULT(yes)
;;
*) AC_MSG_RESULT(no)
;;
esac ],
AC_MSG_RESULT(no)
)
dnl **********************************************************************
dnl Check how non-blocking sockets are set
dnl **********************************************************************
AC_ARG_ENABLE(nonblocking,
AC_HELP_STRING([--enable-nonblocking],[Enable detecting how to do it])
AC_HELP_STRING([--disable-nonblocking],[Disable non-blocking socket detection]),
[
if test "$enableval" = "no" ; then
AC_MSG_WARN([non-blocking sockets disabled])
AC_DEFINE(HAVE_DISABLED_NONBLOCKING, 1,
[to disable NON-BLOCKING connections])
else
CURL_CHECK_NONBLOCKING_SOCKET
fi
],
[
CURL_CHECK_NONBLOCKING_SOCKET
])
dnl **********************************************************************
dnl Check for the random seed preferences
dnl **********************************************************************
AC_ARG_WITH(egd-socket,
AC_HELP_STRING([--with-egd-socket=FILE],
[Entropy Gathering Daemon socket pathname]),
[ EGD_SOCKET="$withval" ]
)
if test -n "$EGD_SOCKET" ; then
AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
[your Entropy Gathering Daemon socket pathname] )
fi
dnl Check for user-specified random device
AC_ARG_WITH(random,
AC_HELP_STRING([--with-random=FILE],[read randomness from FILE (default=/dev/urandom)]),
[ RANDOM_FILE="$withval" ],
[
dnl Check for random device
AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
]
)
if test -n "$RANDOM_FILE" ; then
AC_SUBST(RANDOM_FILE)
AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
[a suitable file to read random data from])
fi
dnl **********************************************************************
dnl Check if the operating system allows programs to write to their own argv[]
dnl **********************************************************************
AC_MSG_CHECKING([if argv can be written to])
AC_RUN_IFELSE([[
int main(int argc, char ** argv) {
argv[0][0] = ' ';
return (argv[0][0] == ' ')?0:1;
}
]],
AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no),
AC_MSG_RESULT(no)
AC_MSG_WARN([the previous check could not be made default was used])
)
dnl **********************************************************************
dnl Check for the presence of Kerberos4 libraries and headers
dnl **********************************************************************
AC_ARG_WITH(krb4-includes,
AC_HELP_STRING([--with-krb4-includes=DIR],
[Specify location of kerberos4 headers]),[
CPPFLAGS="$CPPFLAGS -I$withval"
KRB4INC="$withval"
want_krb4=yes
])
AC_ARG_WITH(krb4-libs,
AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
LDFLAGS="$LDFLAGS -L$withval"
KRB4LIB="$withval"
want_krb4=yes
])
OPT_KRB4=off
AC_ARG_WITH(krb4,dnl
AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
OPT_KRB4="$withval"
if test X"$OPT_KRB4" != Xyes
then
LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib"
KRB4LIB="$OPT_KRB4/lib"
CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
KRB4INC="$OPT_KRB4/include"
fi
want_krb4="yes"
])
AC_MSG_CHECKING([if Kerberos4 support is requested])
if test "$want_krb4" = yes
then
if test "$ipv6" = "yes"; then
echo krb4 is not compatible with IPv6
exit 1
fi
AC_MSG_RESULT(yes)
dnl Check for & handle argument to --with-krb4
AC_MSG_CHECKING(where to look for Kerberos4)
if test X"$OPT_KRB4" = Xyes
then
AC_MSG_RESULT([defaults])
else
AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
fi
dnl Check for DES library
AC_CHECK_LIB(des, des_pcbc_encrypt,
[
AC_CHECK_HEADERS(des.h)
dnl resolv lib?
AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
dnl Check for the Kerberos4 library
AC_CHECK_LIB(krb, krb_net_read,
[
dnl Check for header files
AC_CHECK_HEADERS(krb.h)
dnl we found the required libraries, add to LIBS
LIBS="-lkrb -ldes $LIBS"
dnl Check for function krb_get_our_ip_for_realm
dnl this is needed for NAT networks
AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
dnl add define KRB4
AC_DEFINE(KRB4, 1,
[if you have the Kerberos4 libraries (including -ldes)])
dnl substitute it too!
KRB4_ENABLED=1
AC_SUBST(KRB4_ENABLED)
dnl the krb4 stuff needs a strlcpy()
AC_CHECK_FUNCS(strlcpy)
])
])
else
AC_MSG_RESULT(no)
fi
dnl Detect the pkg-config tool, as it may have extra info about the
dnl openssl installation we can use. I *believe* this is what we are
dnl expected to do on really recent Redhat Linux hosts.
AC_PATH_PROG( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
if test "$PKGCONFIG" != "no" ; then
AC_MSG_CHECKING([for OpenSSL options using pkg-config])
$PKGCONFIG --exists openssl
SSL_EXISTS=$?
if test "$SSL_EXISTS" -eq "0"; then
SSL_LIBS=`$PKGCONFIG --libs-only-l openssl 2>/dev/null`
SSL_LDFLAGS=`$PKGCONFIG --libs-only-L openssl 2>/dev/null`
SSL_CPPFLAGS=`$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
LIBS="$LIBS $SSL_LIBS"
CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
dnl **********************************************************************
dnl Check for the presence of SSL libraries and headers
dnl **********************************************************************
dnl Default to compiler & linker defaults for SSL files & libraries.
OPT_SSL=off
AC_ARG_WITH(ssl,dnl
AC_HELP_STRING([--with-ssl=PATH],[where to look for SSL, PATH points to the SSL installation (default: /usr/local/ssl)])
AC_HELP_STRING([--without-ssl], [disable SSL]),
OPT_SSL=$withval)
if test X"$OPT_SSL" = Xno
then
AC_MSG_WARN(SSL/https support disabled)
else
dnl Check for and handle argument to --with-ssl.
dnl save the pre-ssl check flags for a while
CLEANLDFLAGS="$LDFLAGS"
CLEANCPPFLAGS="$CPPFLAGS"
case "$OPT_SSL" in
yes)
EXTRA_SSL=/usr/local/ssl ;;
off)
EXTRA_SSL= ;;
*)
dnl check the given spot right away!
EXTRA_SSL=$OPT_SSL
LDFLAGS="$LDFLAGS -L$EXTRA_SSL/lib"
CPPFLAGS="$CPPFLAGS -I$EXTRA_SSL/include/openssl -I$EXTRA_SSL/include"
;;
esac
AC_CHECK_LIB(crypto, CRYPTO_lock,[
HAVECRYPTO="yes"
],[
OLDLDFLAGS="$LDFLAGS"
OLDCPPFLAGS="$CPPFLAGS"
LDFLAGS="$CLEANLDFLAGS -L$EXTRA_SSL/lib"
CPPFLAGS="$CLEANCPPFLAGS -I$EXTRA_SSL/include/openssl -I$EXTRA_SSL/include"
AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
HAVECRYPTO="yes" ], [
LDFLAGS="$OLDLDFLAGS"
CPPFLAGS="$OLDCPPFLAGS"
])
])
if test "$HAVECRYPTO" = "yes"; then
dnl This is only reasonable to do if crypto actually is there: check for
dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
AC_CHECK_LIB(crypto, CRYPTO_add_lock)
AC_CHECK_LIB(ssl, SSL_connect)
if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
OLIBS=$LIBS
LIBS="$LIBS -lRSAglue -lrsaref"
AC_CHECK_LIB(ssl, SSL_connect)
if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
dnl still no SSL_connect
AC_MSG_RESULT(no)
LIBS=$OLIBS
else
AC_MSG_RESULT(yes)
fi
fi
dnl Check for SSLeay headers
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
openssl/pem.h openssl/ssl.h openssl/err.h,
OPENSSL_ENABLED=1)
if test $ac_cv_header_openssl_x509_h = no; then
AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h,
OPENSSL_ENABLED=1)
fi
dnl If the ENGINE library seems to be around, check for the OpenSSL engine
dnl header, it is kind of "separated" from the main SSL check
AC_CHECK_FUNC(ENGINE_init, [ AC_CHECK_HEADERS(openssl/engine.h) ])
AC_SUBST(OPENSSL_ENABLED)
fi
if test X"$OPT_SSL" != Xoff &&
test "$OPENSSL_ENABLED" != "1"; then
AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
fi
dnl these can only exist if openssl exists
AC_CHECK_FUNCS( RAND_status \
RAND_screen \
RAND_egd )
fi
dnl **********************************************************************
dnl Check for the presence of ZLIB libraries and headers
dnl **********************************************************************
dnl Check for & handle argument to --with-zlib.
_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
OPT_ZLIB="/usr/local"
AC_ARG_WITH(zlib,
AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
AC_HELP_STRING([--without-zlib],[disable use of zlib]),
[OPT_ZLIB="$withval"])
case "$OPT_ZLIB" in
no)
AC_MSG_WARN([zlib disabled]) ;;
*)
dnl check for the lib first without setting any new path, since many
dnl people have it in the default path
AC_CHECK_LIB(z, inflateEnd, ,
[if test -d "$OPT_ZLIB"; then
CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib"
fi])
AC_CHECK_HEADER(zlib.h,[
AC_CHECK_LIB(z, gzread,
[HAVE_LIBZ="1"
AC_SUBST(HAVE_LIBZ)
LIBS="$LIBS -lz"
AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
AC_DEFINE(HAVE_LIBZ, 1, [If zlib is available])],
[ CPPFLAGS=$_cppflags
LDFLAGS=$_ldflags])],
[ CPPFLAGS=$_cppflags
LDFLAGS=$_ldflags]
)
;;
esac
dnl Default is to try the thread-safe versions of a few functions
OPT_THREAD=on
dnl detect AIX 4.3 or later
dnl see full docs on this reasoning in the lib/hostip.c source file
AC_MSG_CHECKING([AIX 4.3 or later])
AC_PREPROC_IFELSE([
#if defined(_AIX) && defined(_AIX43)
printf("just fine");
#else
#error "this is not AIX 4.3 or later"
#endif
],
[ AC_MSG_RESULT([yes])
OPT_THREAD=off ],
[ AC_MSG_RESULT([no]) ]
)
AC_ARG_ENABLE(thread,dnl
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions]),
OPT_THREAD=off
AC_MSG_WARN(libcurl will not get built using thread-safe functions)
)
if test X"$OPT_THREAD" = Xoff
then
AC_DEFINE(DISABLED_THREADSAFE, 1, \
Set to explicitly specify we don't want to use thread-safe functions)
else
dnl dig around for gethostbyname_r()
CURL_CHECK_GETHOSTBYNAME_R()
dnl dig around for gethostbyaddr_r()
CURL_CHECK_GETHOSTBYADDR_R()
dnl poke around for inet_ntoa_r()
CURL_CHECK_INET_NTOA_R()
dnl is there a localtime_r()
CURL_CHECK_LOCALTIME_R()
AC_CHECK_FUNCS( gmtime_r )
fi
dnl **********************************************************************
dnl Back to "normal" configuring
dnl **********************************************************************
dnl Checks for header files.
AC_HEADER_STDC
dnl First check for the very most basic headers. Then we can use these
dnl ones as default-headers when checking for the rest!
AC_CHECK_HEADERS(
sys/types.h \
sys/time.h \
sys/select.h \
sys/socket.h \
unistd.h \
malloc.h \
stdlib.h \
arpa/inet.h \
net/if.h \
netinet/in.h \
netdb.h \
sys/sockio.h \
sys/stat.h \
sys/param.h \
termios.h \
termio.h \
sgtty.h \
fcntl.h \
dlfcn.h \
alloca.h \
winsock.h \
time.h \
io.h \
pwd.h \
utime.h \
sys/utime.h \
sys/poll.h \
setjmp.h,
dnl to do if not found
[],
dnl to do if found
[],
dnl default includes
[
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
]
)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
# mprintf() checks:
# check for 'long double'
# AC_CHECK_SIZEOF(long double, 8)
# check for 'long long'
# AC_CHECK_SIZEOF(long long, 4)
# check for ssize_t
AC_CHECK_TYPE(ssize_t, int)
TYPE_SOCKLEN_T
TYPE_IN_ADDR_T
AC_FUNC_SELECT_ARGTYPES
dnl Checks for library functions.
dnl AC_PROG_GCC_TRADITIONAL
AC_TYPE_SIGNAL
dnl AC_FUNC_VPRINTF
AC_CHECK_FUNCS( socket \
select \
strdup \
strstr \
strtok_r \
strftime \
uname \
strcasecmp \
stricmp \
strcmpi \
gethostbyaddr \
gettimeofday \
inet_addr \
inet_ntoa \
tcsetattr \
tcgetattr \
perror \
closesocket \
setvbuf \
sigaction \
signal \
getpass_r \
strlcat \
getpwuid \
geteuid \
dlopen \
utime \
sigsetjmp \
poll,
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)
)
)
dnl sigsetjmp() might be a macro and no function so if it isn't found already
dnl we make an extra check here!
if test "$ac_cv_func_sigsetjmp" != "yes"; then
AC_MSG_CHECKING([for sigsetjmp defined as macro])
AC_TRY_LINK( [#include <setjmp.h>],
[sigjmp_buf jmpenv;
sigsetjmp(jmpenv, 1);],
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_SIGSETJMP, 1, [If you have sigsetjmp]),
AC_MSG_RESULT(no)
)
fi
AC_PATH_PROG( PERL, perl, ,
$PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
AC_SUBST(PERL)
AC_PATH_PROGS( NROFF, gnroff nroff, ,
$PATH:/usr/bin/:/usr/local/bin )
AC_SUBST(NROFF)
AC_MSG_CHECKING([CA cert bundle install path])
AC_ARG_WITH(ca-bundle,
AC_HELP_STRING([--with-ca-bundle=FILE], [File name to install the CA bundle as])
AC_HELP_STRING([--without-ca-bundle], [Don't install the CA bundle]),
[ ca="$withval" ],
[
if test "x$prefix" != xNONE; then
ca="$prefix/share/curl/curl-ca-bundle.crt"
else
ca="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
fi
] )
if test X"$OPT_SSL" = Xno
then
ca="no"
fi
if test "x$ca" = "xno"; then
dnl let's not keep "no" as path name, blank it instead
ca=""
else
AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [CA bundle full path name])
fi
CURL_CA_BUNDLE="$ca"
AC_SUBST(CURL_CA_BUNDLE)
AC_MSG_RESULT([$ca])
AC_PROG_YACC
dnl AC_PATH_PROG( RANLIB, ranlib, /usr/bin/ranlib,
dnl $PATH:/usr/bin/:/usr/local/bin )
dnl AC_SUBST(RANLIB)
dnl ************************************************************
dnl lame option to switch on debug options
dnl
AC_MSG_CHECKING([whether to enable debug options])
AC_ARG_ENABLE(debug,
AC_HELP_STRING([--enable-debug],[Enable pedantic debug options])
AC_HELP_STRING([--disable-debug],[Disable debug options]),
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
;;
*) AC_MSG_RESULT(yes)
CPPFLAGS="$CPPFLAGS -DMALLOCDEBUG"
CFLAGS="$CFLAGS -g"
if test "$GCC" = "yes"; then
CFLAGS="$CFLAGS -W -Wall -Wwrite-strings -pedantic -Wundef -Wpointer-arith -Wnested-externs"
fi
dnl strip off optimizer flags
NEWFLAGS=""
for flag in $CFLAGS; do
case "$flag" in
-O*)
dnl echo "cut off $flag"
;;
*)
NEWFLAGS="$NEWFLAGS $flag"
;;
esac
done
CFLAGS=$NEWFLAGS
;;
esac ],
AC_MSG_RESULT(no)
)
AC_CONFIG_FILES([Makefile \
docs/Makefile \
docs/examples/Makefile \
docs/libcurl/Makefile \
include/Makefile \
include/curl/Makefile \
src/Makefile \
lib/Makefile \
tests/Makefile \
tests/data/Makefile \
tests/server/Makefile \
tests/libtest/Makefile \
packages/Makefile \
packages/Win32/Makefile \
packages/Win32/cygwin/Makefile \
packages/Linux/Makefile \
packages/Linux/RPM/Makefile \
packages/Linux/RPM/curl.spec \
packages/Linux/RPM/curl-ssl.spec \
packages/Solaris/Makefile \
packages/EPM/curl.list \
packages/EPM/Makefile \
curl-config
])
AC_OUTPUT

View File

@@ -1,215 +0,0 @@
dnl $Id$
dnl Process this file with autoconf to produce a configure script.
AC_INIT(lib/urldata.h)
AM_CONFIG_HEADER(config.h src/config.h)
AM_INIT_AUTOMAKE(curl,"6.5.1")
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_MAKE_SET
dnl Check for AIX weirdos
AC_AIX
dnl **********************************************************************
dnl Checks for libraries.
dnl **********************************************************************
dnl nsl lib?
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname))
dnl resolve lib?
AC_CHECK_FUNC(strcasecmp, , AC_CHECK_LIB(resolve, strcasecmp))
dnl socket lib?
AC_CHECK_FUNC(connect, , AC_CHECK_LIB(socket, connect))
dnl ucb lib?
AC_CHECK_FUNC(gethostname, , AC_CHECK_LIB(ucb, gethostname))
dnl dl lib?
AC_CHECK_FUNC(dlopen, , AC_CHECK_LIB(dl, dlopen))
dnl **********************************************************************
dnl Check for the presence of SSL libraries and headers
dnl **********************************************************************
dnl Default to compiler & linker defaults for SSL files & libraries.
OPT_SSL=off
AC_ARG_WITH(ssl,dnl
[ --with-ssl[=DIR] where to look for SSL [compiler/linker default paths]
DIR points to the SSL installation [/usr/local/ssl]],
OPT_SSL=$withval
)
if test X"$OPT_SSL" = Xno
then
AC_MSG_WARN(SSL/https support disabled)
else
dnl Check for & handle argument to --with-ssl.
AC_MSG_CHECKING(where to look for SSL)
if test X"$OPT_SSL" = Xoff
then
AC_MSG_RESULT([defaults (or given in environment)])
else
test X"$OPT_SSL" = Xyes && OPT_SSL=/usr/local/ssl
LIBS="$LIBS -L$OPT_SSL/lib"
CPPFLAGS="$CPPFLAGS -I$OPT_SSL/include/openssl -I$OPT_SSL/include"
AC_MSG_RESULT([$OPT_SSL])
fi
dnl check for crypto libs (part of SSLeay)
AC_CHECK_LIB(crypto, CRYPTO_lock)
if test $ac_cv_lib_crypto_CRYPTO_lock = yes; then
dnl This is only reasonable to do if crypto actually is there: check for
dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
AC_CHECK_LIB(ssl, SSL_connect)
dnl Check for SSLeay headers
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h openssl/pem.h openssl/ssl.h openssl/err.h)
if test $ac_cv_header_openssl_x509_h = no; then
AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
fi
fi
fi
dnl **********************************************************************
dnl Check for the presence of ZLIB libraries and headers
dnl **********************************************************************
dnl Default to compiler & linker defaults for files & libraries.
dnl OPT_ZLIB=no
dnl AC_ARG_WITH(zlib,dnl
dnl [ --with-zlib[=DIR] where to look for ZLIB [compiler/linker default paths]
dnl DIR points to the ZLIB installation prefix [/usr/local]],
dnl OPT_ZLIB=$withval,
dnl )
dnl Check for & handle argument to --with-zlib.
dnl
dnl NOTE: We *always* look for ZLIB headers & libraries, all this option
dnl does is change where we look (by adjusting LIBS and CPPFLAGS.)
dnl
dnl AC_MSG_CHECKING(where to look for ZLIB)
dnl if test X"$OPT_ZLIB" = Xno
dnl then
dnl AC_MSG_RESULT([defaults (or given in environment)])
dnl else
dnl test X"$OPT_ZLIB" = Xyes && OPT_ZLIB=/usr/local
dnl LIBS="$LIBS -L$OPT_ZLIB/lib"
dnl CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
dnl AC_MSG_RESULT([$OPT_ZLIB])
dnl fi
dnl z lib?
dnl AC_CHECK_FUNC(gzread, , AC_CHECK_LIB(z, gzread))
dnl **********************************************************************
dnl Back to "normal" configuring
dnl **********************************************************************
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS( \
unistd.h \
malloc.h \
stdlib.h \
arpa/inet.h \
net/if.h \
netinet/in.h \
netdb.h \
sys/select.h \
sys/socket.h \
sys/sockio.h \
sys/stat.h \
sys/types.h \
getopt.h \
sys/param.h \
termios.h \
termio.h \
sgtty.h \
fcntl.h \
dlfcn.h \
alloca.h \
winsock.h \
time.h \
io.h \
)
dnl Check for libz header
dnl AC_CHECK_HEADERS(zlib.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
# mprintf() checks:
# check for 'long double'
AC_CHECK_SIZEOF(long double, 8)
# check for 'long long'
AC_CHECK_SIZEOF(long long, 4)
dnl Get system canonical name
AC_CANONICAL_HOST
AC_DEFINE_UNQUOTED(OS, "${host}")
dnl Checks for library functions.
dnl AC_PROG_GCC_TRADITIONAL
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS( socket \
select \
strdup \
strstr \
strftime \
uname \
strcasecmp \
gethostname \
gethostbyaddr \
getservbyname \
gettimeofday \
inet_addr \
inet_ntoa \
tcsetattr \
tcgetattr \
perror \
getpass \
closesocket \
setvbuf \
RAND_status \
RAND_screen
)
AC_PATH_PROG( PERL, perl, ,
$PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
AC_SUBST(PERL)
AC_PATH_PROGS( NROFF, gnroff nroff, ,
$PATH:/usr/bin/:/usr/local/bin )
AC_SUBST(NROFF)
AC_PROG_RANLIB
AC_PROG_YACC
dnl AC_PATH_PROG( RANLIB, ranlib, /usr/bin/ranlib,
dnl $PATH:/usr/bin/:/usr/local/bin )
dnl AC_SUBST(RANLIB)
AC_OUTPUT( Makefile \
src/Makefile \
lib/Makefile )
dnl perl/checklinks.pl \
dnl perl/getlinks.pl \
dnl perl/formfind.pl \
dnl perl/recursiveftpget.pl )

130
curl-config.in Normal file
View File

@@ -0,0 +1,130 @@
#! /bin/sh
#
# The idea to this kind of setup info script was stolen from numerous
# other packages, such as neon, libxml and gnome.
#
# $Id$
#
prefix=@prefix@
exec_prefix=@exec_prefix@
includedir=@includedir@
usage()
{
cat <<EOF
Usage: curl-config [OPTION]
Available values for OPTION include:
--ca ca bundle install path
--cc compiler
--cflags pre-processor and compiler flags
--feature newline separated list of enabled features
--help display this help and exit
--libs library linking information
--prefix curl install prefix
--version output version information
--vernum output the version information as a number (hexadecimal)
EOF
exit $1
}
if test $# -eq 0; then
usage 1
fi
while test $# -gt 0; do
case "$1" in
# this deals with options in the style
# --option=value and extracts the value part
# [not currently used]
-*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) value= ;;
esac
case "$1" in
--ca)
echo @CURL_CA_BUNDLE@
;;
--cc)
echo @CC@
;;
--prefix)
echo $prefix
;;
--feature)
if test "@OPENSSL_ENABLED@" = "1"; then
echo "SSL"
fi
if test "@KRB4_ENABLED@" = "1"; then
echo "KRB4"
fi
if test "@IPV6_ENABLED@" = "1"; then
echo "IPv6"
fi
if test "@HAVE_LIBZ@" = "1"; then
echo "libz"
fi
if test "@CURL_DISABLE_HTTP@" = "1"; then
echo "HTTP-disabled"
fi
if test "@CURL_DISABLE_FTP@" = "1"; then
echo "FTP-disabled"
fi
if test "@CURL_DISABLE_GOPHER@" = "1"; then
echo "GOPHER-disabled"
fi
if test "@CURL_DISABLE_FILE@" = "1"; then
echo "FILE-disabled"
fi
if test "@CURL_DISABLE_TELNET@" = "1"; then
echo "TELNET-disabled"
fi
if test "@CURL_DISABLE_LDAP@" = "1"; then
echo "LDAP-disabled"
fi
if test "@CURL_DISABLE_DICT@" = "1"; then
echo "DICT-disabled"
fi
;;
--version)
echo libcurl @VERSION@
exit 0
;;
--vernum)
echo @VERSIONNUM@
exit 0
;;
--help)
usage 0
;;
--cflags)
if test "X@includedir@" = "X/usr/include"; then
echo ""
else
echo "-I@includedir@"
fi
;;
--libs)
echo -L@libdir@ -lcurl @LDFLAGS@ @LIBS@
;;
*)
echo "unknown option: $1"
usage
exit 1
;;
esac
shift
done
exit 0

View File

@@ -1,52 +0,0 @@
%define name curl-ssl
%define tarball curl
%define version 6.0
%define release 1
%define prefix /usr/local
%define builddir $RPM_BUILD_DIR/%{tarball}-%{version}
Summary: get a file from a FTP, GOPHER or HTTP server.
Name: %{name}
Version: %{version}
Release: %{release}
Copyright: MPL
Vendor: Daniel Stenberg <Daniel.Stenberg@haxx.nu>
Packager: Troy Engel <tengel@sonic.net>
Group: Utilities/Console
Source: %{tarball}-%{version}.tar.gz
URL: http://curl.haxx.nu/
BuildRoot: /tmp/%{tarball}-%{version}-root
%description
curl is a client to get documents/files from servers, using any of the
supported protocols. The command is designed to work without user
interaction or any kind of interactivity.
curl offers a busload of useful tricks like proxy support, user
authentication, ftp upload, HTTP post, file transfer resume and more.
Note: this version is compiled with SSL (https:) support.
%prep
rm -rf $RPM_BUILD_ROOT
rm -rf %{builddir}
%setup -n %{tarball}-%{version}
%build
CFLAGS=$RPM_OPT_FLAGS ./configure --prefix=$RPM_BUILD_ROOT%{prefix} --with-ssl
make CFLAGS="-DUSE_SSLEAY -I/usr/include/openssl"
%install
make install-strip
%clean
rm -rf $RPM_BUILD_ROOT
rm -rf %{builddir}
%files
%defattr(-,root,root)
%attr(0755,root,root) %{prefix}/bin/curl
%doc curl.1 README* CHANGES CONTRIBUTE FAQ FILES INSTALL LEGAL MPL-1.0.txt RESOURCES TODO perl/

50
curl-style.el Normal file
View File

@@ -0,0 +1,50 @@
;;;; Emacs Lisp help for writing curl code. ;;;;
;;;; $Id$
;;; The curl hacker's C conventions.
;;; After loading this file and added the mode-hook you can in C
;;; files, put something like this to use the curl style
;;; automatically:
;;
;; /* -----------------------------------------------------------------
;; * local variables:
;; * eval: (set c-file-style "curl")
;; * end:
;; */
;;
(defconst curl-c-style
'((c-basic-offset . 2)
(c-comment-only-line-offset . 0)
(c-hanging-braces-alist . ((substatement-open before after)))
(c-offsets-alist . ((topmost-intro . 0)
(topmost-intro-cont . 0)
(substatement . +)
(substatement-open . 0)
(statement-case-intro . +)
(statement-case-open . 0)
(case-label . 0)
))
)
"Curl C Programming Style")
;; Customizations for all of c-mode, c++-mode, and objc-mode
(defun curl-c-mode-common-hook ()
"Curl C mode hook"
;; add curl style and set it for the current buffer
(c-add-style "curl" curl-c-style t)
(setq tab-width 8
indent-tabs-mode nil ; Use spaces. Not tabs.
comment-column 40
c-font-lock-extra-types (append '("bool" "CURL" "CURLcode" "ssize_t" "size_t" "socklen_t" "fd_set"))
)
;; keybindings for C, C++, and Objective-C. We can put these in
;; c-mode-base-map because of inheritance ...
(define-key c-mode-base-map "\M-q" 'c-fill-paragraph)
(setq c-recognize-knr-p nil)
)
;; Set this is in your .emacs if you want to use the c-mode-hook as
;; defined here right out of the box.
; (add-hook 'c-mode-common-hook 'curl-c-mode-common-hook)

598
curl.1
View File

@@ -1,598 +0,0 @@
.\" You can view this file with:
.\" nroff -man curl.1
.\" Written by Daniel Stenberg
.\"
.TH curl 1 "13 March 2000" "Curl 6.5" "Curl Manual"
.SH NAME
curl \- get a URL with FTP, TELNET, LDAP, GOPHER, DICT, FILE, HTTP or
HTTPS syntax.
.SH SYNOPSIS
.B curl [options]
.I url
.SH DESCRIPTION
.B curl
is a client to get documents/files from servers, using any of the
supported protocols. The command is designed to work without user
interaction or any kind of interactivity.
curl offers a busload of useful tricks like proxy support, user
authentication, ftp upload, HTTP post, SSL (https:) connections, cookies, file
transfer resume and more.
.SH URL
The URL syntax is protocol dependent. You'll find a detailed description in
RFC 2396.
You can specify multiple URLs or parts of URLs by writing part sets within
braces as in:
http://site.{one,two,three}.com
or you can get sequences of alphanumeric series by using [] as in:
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numericals.com/file[001-100].txt (with leading zeros)
ftp://ftp.letters.com/file[a-z].txt
It is possible to specify up to 9 sets or series for a URL, but no nesting is
supported at the moment:
http://www.any.org/archive[1996-1999]/volume[1-4]part{a,b,c,index}.html
.SH OPTIONS
.IP "-a/--append"
(FTP)
When used in a ftp 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.
.IP "-A/--user-agent <agent string>"
(HTTP)
Specify the User-Agent string to send to the HTTP server. Some badly done CGIs
fail if its not set to "Mozilla/4.0". To encode blanks in the string,
surround the string with single quote marks. This can also be set with the
-H/--header flag of course.
.IP "-b/--cookie <name=data>"
(HTTP)
Pass the data to the HTTP server as a cookie. It is supposedly the
data previously received from the server in a "Set-Cookie:" line.
The data should be in the format "NAME1=VALUE1; NAME2=VALUE2".
If no '=' letter is used in the line, it is treated as a filename to use to
read previously stored cookie lines from, which should be used in this session
if they match. Using this method also activates the "cookie parser" which
will make curl record incoming cookies too, which may be handy if you're using
this in combination with the -L/--location option. The file format of the file
to read cookies from should be plain HTTP headers or the netscape cookie file
format.
.B NOTE
that the file specified with -b/--cookie is only used as input. No cookies
will be stored in the file. To store cookies, save the HTTP headers to a file
using -D/--dump-header!
.IP "-B/--ftp-ascii"
(FTP/LDAP)
Use ASCII transfer when getting an FTP file or LDAP info. For FTP, this can
also be enforced by using an URL that ends with ";type=A".
.IP "-c/--continue"
Continue/Resume a previous file transfer. This instructs curl to
continue appending data on the file where it was previously left,
possibly because of a broken connection to the server. There must be
a named physical file to append to for this to work.
Note: Upload resume is depening on a command named SIZE not always
present in all ftp servers! Upload resume is for FTP only.
HTTP resume is only possible with HTTP/1.1 or later servers.
.IP "-C/--continue-at <offset>"
Continue/Resume a previous file transfer at the given offset. The
given offset is the exact number of bytes that will be skipped
counted from the beginning of the source file before it is transfered
to the destination.
If used with uploads, the ftp server command SIZE will not be used by
curl. Upload resume is for FTP only.
HTTP resume is only possible with HTTP/1.1 or later servers.
.IP "-d/--data <data>"
(HTTP)
Sends the specified data in a POST request to the HTTP server. Note
that the data is sent exactly as specified with no extra processing.
The data is expected to be "url-encoded". This will cause curl to
pass the data to the server using the content-type
application/x-www-form-urlencoded. Compare to -F.
If you start the data with the letter @, the rest should be a file name to
read the data from, or - if you want curl to read the data from stdin.
The contents of the file must already be url-encoded.
.IP "-D/--dump-header <file>"
(HTTP/FTP)
Write the HTTP headers to this file. Write the FTP file info to this
file if -I/--head is used.
This option is handy to use when you want to store the cookies that a HTTP
site sends to you. The cookies could then be read in a second curl invoke by
using the -b/--cookie option!
.IP "-e/--referer <URL>"
(HTTP)
Sends the "Referer Page" information to the HTTP server. Some badly
done CGIs fail if it's not set. This can also be set with the -H/--header
flag of course.
.IP "-E/--cert <certificate[:password]>"
(HTTPS)
Tells curl to use the specified certificate file when getting a file
with HTTPS. The certificate must be in PEM format.
If the optional password isn't specified, it will be queried for on
the terminal. Note that this certificate is the private key and the private
certificate concatenated!
.IP "-f/--fail"
(HTTP)
Fail silently (no output at all) on server errors. This is mostly done
like this to better enable scripts etc to better deal with failed
attempts. In normal cases when a HTTP server fails to deliver a
document, it returns a HTML document stating so (which often also
describes why and more). This flag will prevent curl from
outputting that and fail silently instead.
.IP "-F/--form <name=content>"
(HTTP)
This lets curl emulate a filled in form in which a user has pressed
the submit button. This causes curl to POST data using the
content-type multipart/form-data according to RFC1867. This enables
uploading of binary files etc. To force the 'content' part to be
read from a file, prefix the file name with an @ sign. Example, to
send your password file to the server, where 'password' is the
name of the form-field to which /etc/passwd will be the input:
.B curl
-F password=@/etc/passwd www.mypasswords.com
To read the file's content from stdin insted of a file, use - where the file
name should've been.
.IP "-h/--help"
Usage help.
.IP "-H/--header <header>"
(HTTP)
Extra header to use when getting a web page. You may specify any number of
extra headers. Note that if you should add a custom header that has the same
name as one of the internal ones curl would use, your externally set header
will be used instead of the internal one. This allows you to make even
trickier stuff than curl would normally do. You should not replace internally
set headers without knowing perfectly well what you're doing.
.IP "-i/--include"
(HTTP)
Include the HTTP-header in the output. The HTTP-header includes things
like server-name, date of the document, HTTP-version and more...
.IP "-I/--head"
(HTTP/FTP)
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 file, curl displays the file size only.
.IP "-K/--config <config file>"
Specify which config file to read curl arguments from. The config
file is a text file in which command line arguments can be written
which then will be used as if they were written on the actual command
line. If the first column of a config line is a '#' character, the
rest of the line will be treated as a comment.
Specify the filename as '-' to make curl read the file from stdin.
.IP "-l/--list-only"
(FTP)
When listing an FTP directory, this switch forces a name-only view.
Especially useful if you want to machine-parse the contents of an FTP
directory since the normal directory view doesn't use a standard look
or format.
.IP "-L/--location"
(HTTP/HTTPS)
If the server reports that the requested page has a different location
(indicated with the header line Location:) this flag will let curl
attempt to reattempt the get on the new place. If used together with
-i or -I, headers from all requested pages will be shown.
.IP "-m/--max-time <seconds>"
Maximum time in seconds that you allow the whole operation to take.
This is useful for preventing your batch jobs from hanging for hours
due to slow networks or links going down.
This doesn't work properly in win32 systems.
.IP "-M/--manual"
Manual. Display the huge help text.
.IP "-n/--netrc"
Makes curl scan the
.I .netrc
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(5)
for details on the file format. Curl will not complain if that file
hasn't the right permissions (it should not be world nor group
readable). The environment variable "HOME" is used to find the home
directory.
A quick and very simple example of how to setup a
.I .netrc
to allow curl to ftp to the machine host.domain.com with user name
'myself' and password 'secret' should look similar to:
.B "machine host.domain.com user myself password secret"
.IP "-N/--no-buffer"
Disables the buffering of the output stream. In normal work situations, curl
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.
.IP "-o/--output <file>"
Write output to <file> instead of stdout. If you are using {} or [] to fetch
multiple documents, you can use '#' followed by a number in the <file>
specifier. That variable will be replaced with the current string for the URL
being fetched. Like in:
curl http://{one,two}.site.com -o "file_#1.txt"
or use several variables like:
curl http://{site,host}.host[1-5].com -o "#1_#2"
.IP "-O/--remote-name"
Write output to a local file named like the remote file we get. (Only
the file part of the remote file is used, the path is cut off.)
.IP "-P/--ftpport <address>"
(FTP)
Reverses the initiator/listener roles when connecting with ftp. This
switch makes Curl use the PORT command instead of PASV. In
practice, PORT tells the server to connect to the client's specified
address and port, while PASV asks the server for an ip address and
port to connect to. <address> should be one of:
.RS
.TP 12
.B interface
i.e "eth0" to specify which interface's IP address you want to use (Unix only)
.TP
.B "IP address"
i.e "192.168.10.1" to specify exact IP number
.TP
.B "host name"
i.e "my.host.domain" to specify machine
.TP
.B "-"
(any single-letter string) to make it pick the machine's default
.RE
.IP "-q"
If used as the first parameter on the command line, the
.I $HOME/.curlrc
file will not be read and used as a config file.
.IP "-Q/--quote <comand>"
(FTP) Send an arbitrary command to the remote FTP server, by using the QUOTE
command of the server. Not all servers support this command, and the set of
QUOTE commands are server specific! Quote commands are sent BEFORE the
transfer is taking place. To make commands take place after a successful
transfer, prefix them with a dash '-'. You may specify any amount of commands
to be run before and after the transfer. If the server returns failure for one
of the commands, the entire operation will be aborted.
.IP "-r/--range <range>"
(HTTP/FTP)
Retrieve a byte range (i.e a partial document) from a HTTP/1.1 or FTP
server. Ranges can be specified in a number of ways.
.RS
.TP 10
.B 0-499
specifies the first 500 bytes
.TP
.B 500-999
specifies the second 500 bytes
.TP
.B -500
specifies the last 500 bytes
.TP
.B 9500
specifies the bytes from offset 9500 and forward
.TP
.B 0-0,-1
specifies the first and last byte only(*)(H)
.TP
.B 500-700,600-799
specifies 300 bytes from offset 500(H)
.TP
.B 100-199,500-599
specifies two separate 100 bytes ranges(*)(H)
.RE
(*) = NOTE that this will cause the server to reply with a multipart
response!
You should also be aware that many HTTP/1.1 servers do not have this feature
enabled, so that when you attempt to get a range, you'll instead get the whole
document.
FTP range downloads only support the simple syntax 'start-stop' (optionally
with one of the numbers omitted). It depends on the non-RFC command SIZE.
.IP "-s/--silent"
Silent mode. Don't show progress meter or error messages. Makes
Curl mute.
.IP "-S/--show-error"
When used with -s it makes curl show error message if it fails.
.IP "-t/--upload"
Transfer the stdin data to the specified file. Curl will read
everything from stdin until EOF and store with the supplied name. If
this is used on a http(s) server, the PUT command will be used.
.IP "-T/--upload-file <file>"
Like -t, but this transfers the specified local file. If there is no
file part in the specified URL, Curl will append the local file
name. NOTE that you must use a trailing / on the last directory to
really prove to Curl that there is no file name or curl will
think that your last directory name is the remote file name to
use. That will most likely cause the upload operation to fail. If
this is used on a http(s) server, the PUT command will be used.
.IP "-u/--user <user:password>"
Specify user and password to use when fetching. See README.curl for detailed
examples of how to use this. If no password is specified, curl will
ask for it interactively.
.IP "-U/--proxy-user <user:password>"
Specify user and password to use for Proxy authentication. If no
password is specified, curl will ask for it interactively.
.IP "-v/--verbose"
Makes the fetching more verbose/talkative. Mostly usable for
debugging. Lines starting with '>' means data sent by curl, '<'
means data received by curl that is hidden in normal cases and lines
starting with '*' means additional info provided by curl.
.IP "-V/--version"
Displays the full version of curl, libcurl and other 3rd party libraries
linked with the executable.
.IP "-w/--write-out <format>"
Defines what to display after a completed and successful operation. The format
is a string that may contain plain text mixed with any number of variables. The
string can be specified as "string", to get read from a particular file you
specify it "@filename" and to tell curl to read the format from stdin you
write "@-".
The variables present in the output format will be substituted by the value or
text that curl thinks fit, as described below. All variables are specified
like %{variable_name} and to output a normal % you just write them like
%%. You can output a newline by using \\n, a carrige return with \\r and a tab
space with \\t.
.B NOTE:
The %-letter is a special letter in the win32-environment, where all
occurrences of % must be doubled when using this option.
Available variables are at this point:
.RS
.TP 15
.B url_effective
The URL that was fetched last. This is mostly meaningful if you've told curl
to follow location: headers.
.TP
.B http_code
The numerical code that was found in the last retrieved HTTP(S) page.
.TP
.B time_total
The total time, in seconds, that the full operation lasted. The time will be
displayed with millisecond resolution.
.TP
.B time_namelookup
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.
.TP
.B time_pretransfer
The time, in seconds, 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.
.TP
.B size_download
The total amount of bytes that were downloaded.
.TP
.B size_upload
The total amount of bytes that were uploaded.
.TP
.B speed_download
The average download speed that curl measured for the complete download.
.TP
.B speed_upload
The average upload speed that curl measured for the complete download.
.RE
.IP "-x/--proxy <proxyhost[:port]>"
Use specified proxy. If the port number is not specified, it is assumed at
port 1080.
.IP "-X/--request <command>"
(HTTP)
Specifies a custom request to use when communicating with the HTTP server.
The specified request will be used instead of the standard GET. Read the
HTTP 1.1 specification for details and explanations.
(FTP)
Specifies a custom FTP command to use instead of LIST when doing file lists
with ftp.
.IP "-y/--speed-time <time>"
If a download is slower than speed-limit bytes per second during a speed-time
period, the download gets aborted. If speed-time is used, the default
speed-limit will be 1 unless set with -y.
.IP "-Y/--speed-limit <speed>"
If a download is slower than this given speed, in bytes per second, for
speed-time seconds it gets aborted. speed-time is set with -Y and is 30 if
not set.
.IP "-z/--time-cond <date expression>"
(HTTP)
Request to get a file that has been modified later than the given time and
date, or one that has been modified before that time. The date expression can
be all sorts of date strings or if it doesn't match any internal ones, it
tries to get the time from a given file name instead! See the
.BR "GNU date(1)"
man page for date expression details.
Start the date expression with a dash (-) to make it request for a document
that is older than the given date/time, default is a document that is newer
than the specified date/time.
.IP "-3/--sslv3"
(HTTPS)
Forces curl to use SSL version 3 when negotiating with a remote SSL server.
.IP "-2/--sslv2"
(HTTPS)
Forces curl to use SSL version 2 when negotiating with a remote SSL server.
.IP "-#/--progress-bar"
Make curl display progress information as a progress bar instead of the
default statistics.
.IP "--crlf"
(FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).
.IP "--stderr <file>"
Redirect all writes to stderr to the specified file instead. If the file name
is a plain '-', it is instead written to stdout. This option has no point when
you're using a shell with decent redirecting capabilities.
.SH FILES
.I ~/.curlrc
.RS
Default config file.
.SH ENVIRONMENT
.IP "HTTP_PROXY [protocol://]<host>[:port]"
Sets proxy server to use for HTTP.
.IP "HTTPS_PROXY [protocol://]<host>[:port]"
Sets proxy server to use for HTTPS.
.IP "FTP_PROXY [protocol://]<host>[:port]"
Sets proxy server to use for FTP.
.IP "GOPHER_PROXY [protocol://]<host>[:port]"
Sets proxy server to use for GOPHER.
.IP "ALL_PROXY [protocol://]<host>[:port]"
Sets proxy server to use if no protocol-specific proxy is set.
.IP "NO_PROXY <comma-separated list of hosts>"
list of host names that shouldn't go through any proxy. If set to a
asterisk '*' only, it matches all hosts.
.IP "COLUMNS <integer>"
The width of the terminal. This variable only affects curl when the
--progress-bar option is used.
.SH EXIT CODES
There exists a bunch of different error codes and their corresponding error
messages that may appear during bad conditions. At the time of this writing,
the exit codes are:
.IP 1
Unsupported protocol. This build of curl has no support for this protocol.
.IP 2
Failed to initialize.
.IP 3
URL malformat. The syntax was not correct.
.IP 4
URL user malformatted. The user-part of the URL syntax was not correct.
.IP 5
Couldn't resolve proxy. The given proxy host could not be resolved.
.IP 6
Couldn't resolve host. The given remote host was not resolved.
.IP 7
Failed to connect to host.
.IP 8
FTP weird server reply. The server sent data curl couldn't parse.
.IP 9
FTP access denied. The server denied login.
.IP 10
FTP user/password incorrect. Either one or both were not accepted by the
server.
.IP 11
FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.
.IP 12
FTP weird USER reply. Curl couldn't parse the reply sent to the USER request.
.IP 13
FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.
.IP 14
FTP weird 227 formay. Curl couldn't parse the 227-line the server sent.
.IP 15
FTP can't get host. Couldn't resolve the host IP we got in the 227-line.
.IP 16
FTP can't reconnect. Couldn't connect to the host we got in the 227-line.
.IP 17
FTP couldn't set binary. Couldn't change transfer method to binary.
.IP 18
Partial file. Only a part of the file was transfered.
.IP 19
FTP couldn't RETR file. The RETR command failed.
.IP 20
FTP write error. The transfer was reported bad by the server.
.IP 21
FTP quote error. A quote command returned error from the server.
.IP 22
HTTP not found. The requested page was not found. This return code only
appears if --fail is used.
.IP 23
Write error. Curl couldn't write data to a local filesystem or similar.
.IP 24
Malformat user. User name badly specified.
.IP 25
FTP couldn't STOR file. The server denied the STOR operation.
.IP 26
Read error. Various reading problems.
.IP 27
Out of memory. A memory allocation request failed.
.IP 28
Operation timeout. The specified time-out period was reached according to the
conditions.
.IP 29
FTP couldn't set ASCII. The server returned an unknown reply.
.IP 30
FTP PORT failed. The PORT command failed.
.IP 31
FTP couldn't use REST. The REST command failed.
.IP 32
FTP couldn't use SIZE. The SIZE command failed. The command is an extension
to the original FTP spec RFC 959.
.IP 33
HTTP range error. The range "command" didn't work.
.IP 34
HTTP post error. Internal post-request generation error.
.IP 35
SSL connect error. The SSL handshaking failed.
.IP 36
FTP bad download resume. Couldn't continue an earlier aborted download.
.IP 37
FILE couldn't read file. Failed to open the file. Permissions?
.IP 38
LDAP cannot bind. LDAP bind operation failed.
.IP 39
LDAP search failed.
.IP 40
Library not found. The LDAP library was not found.
.IP 41
Function not found. A required LDAP function was not found.
.IP XX
There will appear more error codes here in future releases. The existing ones
are meant to never change.
.SH BUGS
If you do find any (or have other suggestions), mail Daniel Stenberg
<Daniel.Stenberg@haxx.nu>.
.SH AUTHORS / CONTRIBUTORS
- Daniel Stenberg <Daniel.Stenberg@haxx.nu>
- Rafael Sagula <sagula@inf.ufrgs.br>
- Sampo Kellomaki <sampo@iki.fi>
- Linas Vepstas <linas@linas.org>
- Bjorn Reese <breese@mail1.stofanet.dk>
- Johan Anderson <johan@homemail.com>
- Kjell Ericson <Kjell.Ericson@haxx,nu>
- Troy Engel <tengel@sonic.net>
- Ryan Nelson <ryan@inch.com>
- Bjorn Stenberg <Bjorn.Stenberg@haxx.nu>
- Angus Mackay <amackay@gus.ml.org>
- Eric Young <eay@cryptsoft.com>
- Simon Dick <simond@totally.irrelevant.org>
- Oren Tirosh <oren@monty.hishome.net>
- Steven G. Johnson <stevenj@alum.mit.edu>
- Gilbert Ramirez Jr. <gram@verdict.uthscsa.edu>
- Andr<64>s Garc<72>a <ornalux@redestb.es>
- Douglas E. Wegscheid <wegscd@whirlpool.com>
- Mark Butler <butlerm@xmission.com>
- Eric Thelin <eric@generation-i.com>
- Marc Boucher <marc@mbsi.ca>
- Greg Onufer <Greg.Onufer@Eng.Sun.COM>
- Doug Kaufman <dkaufman@rahul.net>
- David Eriksson <david@2good.com>
- Ralph Beckmann <rabe@uni-paderborn.de>
- T. Yamada <tai@imasy.or.jp>
- Lars J. Aas <larsa@sim.no>
- J<>rn Hartroth <Joern.Hartroth@telekom.de>
- Matthew Clarke <clamat@van.maves.ca>
- Linus Nielsen <Linus.Nielsen@haxx.nu>
- Felix von Leitner <felix@convergence.de>
- Dan Zitter <dzitter@zitter.net>
- Jongki Suwandi <Jongki.Suwandi@eng.sun.com>
- Chris Maltby <chris@aurema.com>
- Ron Zapp <rzapper@yahoo.com>
- Paul Marquis <pmarquis@iname.com>
- Ellis Pritchard <ellis@citria.com>
- Damien Adant <dams@usa.net>
- Chris <cbayliss@csc.come>
- Marco G. Salvagno <mgs@whiz.cjb.net>
.SH WWW
http://curl.haxx.nu
.SH FTP
ftp://ftp.sunet.se/pub/www/utilities/curl/
.SH "SEE ALSO"
.BR ftp (1),
.BR wget (1),
.BR snarf (1)

View File

@@ -1,52 +0,0 @@
%define name curl
%define version 6.0
%define release 1
%define prefix /usr/local
%define builddir $RPM_BUILD_DIR/%{name}-%{version}
Summary: get a file from a FTP, GOPHER or HTTP server.
Name: %{name}
Version: %{version}
Release: %{release}
Copyright: MPL
Vendor: Daniel Stenberg <Daniel.Stenberg@haxx.nu>
Packager: Troy Engel <tengel@sonic.net>
Group: Utilities/Console
Source: %{name}-%{version}.tar.gz
URL: http://curl.haxx.nu/
BuildRoot: /tmp/%{name}-%{version}-root
%description
curl is a client to get documents/files from servers, using any of the
supported protocols. The command is designed to work without user
interaction or any kind of interactivity.
curl offers a busload of useful tricks like proxy support, user
authentication, ftp upload, HTTP post, file transfer resume and more.
Note: this version is compiled without SSL (https:) support.
%prep
rm -rf $RPM_BUILD_ROOT
rm -rf %{builddir}
%setup
%build
export CFLAGS=$RPM_OPT_FLAGS
./configure --prefix=$RPM_BUILD_ROOT%{prefix}
make
%install
make install-strip
%clean
rm -rf $RPM_BUILD_ROOT
rm -rf %{builddir}
%files
%defattr(-,root,root)
%attr(0755,root,root) %{prefix}/bin/curl
%doc curl.1 README* CHANGES CONTRIBUTE FAQ FILES INSTALL LEGAL MPL-1.0.txt RESOURCES TODO perl/

5
docs/.cvsignore Normal file
View File

@@ -0,0 +1,5 @@
Makefile
Makefile.in
*html
*ps
*pdf

96
docs/BINDINGS Normal file
View File

@@ -0,0 +1,96 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
libcurl bindings
Creative people have written particular bindings or interfaces for various
environments and programming languages. Using one of these allows you to take
advantage of curl powers from within your favourite language or system.
This is a list of all known interfaces as of this writing.
The bindings listed below are not part of the curl/libcurl distribution
archives, but must be downloaded and installed separately.
Basic
ScriptBasic bindings to libcurl. Writtten by Peter Verhas.
http://scriptbasic.com/
C++
Maintained by Jean-Philippe Barrette-LaPierre.
http://curl.haxx.se/libcurl/cplusplus/
Cocoa
Written by Dan Wood.
http://curlhandle.sourceforge.net/
Dylan
Written by Chris Double.
http://dylanlibs.sourceforge.net/
Java
Written by Daniel Stenberg.
http://curl.haxx.se/libcurl/java/
Lua
Written by Steve Dekorte.
http://curl.haxx.se/libcurl/lua/
Object-Pascal
Free Pascal, Delphi and Kylix binding written by Christophe Espern.
http://www.tekool.com/opcurl
Pascal
Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.
http://houston.quik.com/jkp/curlpas/
Perl
Maintained by Cris Bailiff.
http://curl.haxx.se/libcurl/perl/
PHP
Written by Sterling Hughes.
http://curl.haxx.se/libcurl/php/
PostgreSQL
Written by Gian Paolo Ciceri.
http://gborg.postgresql.org/project/pgcurl/projdisplay.php
Python
Written by Kjetil Jacobsen.
http://pycurl.sourceforge.net/
Rexx
Written Mark Hessling.
http://rexxcurl.sourceforge.net/
Ruby
Written by Hirotaka Matsuyuki.
http://www.d1.dion.ne.jp/~matuyuki/ruby.html
Scheme
Bigloo binding written by Kirill Lisovsky.
http://curl.haxx.se/libcurl/scheme/
Tcl
Written by Andr<64>s Garc<72>a.
http://personal1.iddeo.es/andresgarci/tclcurl/english/docs.html

82
docs/BUGS Normal file
View File

@@ -0,0 +1,82 @@
$Id$
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
BUGS
Curl and libcurl have grown substantially since the beginning. At the time
of writing (end of March 2003), there are 35000 lines of source code, and by
the time you read this it has probably grown even more.
Of course there are lots of bugs left. And lots of misfeatures.
To help us make curl the stable and solid product we want it to be, we need
bug reports and bug fixes.
WHERE TO REPORT
If you can't fix a bug yourself and submit a fix for it, try to report an as
detailed report as possible to a curl mailing list to allow one of us to
have a go at a solution. You should also post your bug/problem at curl's bug
tracking system over at
http://sourceforge.net/bugs/?group_id=976
(but please read the sections below first before doing that)
If you feel you need to ask around first, find a suitable mailing list and
post there. The lists are available on http://curl.haxx.se/mail/
WHAT TO REPORT
When reporting a bug, you should include information that will help us
understand what's wrong, what you expected to happen and how to repeat the
bad behavior. You therefore need to tell us:
- your operating system's name and version number (uname -a under a unix
is fine)
- what version of curl you're using (curl -V is fine)
- what URL you were working with (if possible), at least which protocol
and anything and everything else you think matters. Tell us what you
expected to happen, tell use what did happen, tell us how you could make it
work another way. Dig around, try out, test. Then include all the tiny bits
and pieces in your report. You will benefit from this yourself, as it will
enable us to help you quicker and more accurately.
Since curl deals with networks, it often helps us if you include a protocol
debug dump with your bug report. The output you get by using the -v
flag. Usually, you also get more info by using -i so that is likely to be
useful when reporting bugs as well.
If curl crashed, causing a core dump (in unix), there is hardly any use to
send that huge file to anyone of us. Unless we have an exact same system
setup as you, we can't do much with it. What we instead ask of you is to get
a stack trace and send that (much smaller) output to us instead!
The address and how to subscribe to the mailing list is detailed in the
MANUAL file.
HOW TO GET A STACK TRACE
First, you must make sure that you compile all sources with -g and that you
don't 'strip' the final executable. Try to avoid optimizing the code as
well, remove -O, -O2 etc from the compiler options.
Run the program until it dumps core.
Run your debugger on the core file, like '<debugger> curl core'. <debugger>
should be replaced with the name of your debugger, in most cases that will
be 'gdb', but 'dbx' and others also occur.
When the debugger has finished loading the core file and presents you a
prompt, enter 'where' (without the quotes) and press return.
The list that is presented is the stack trace. If everything worked, it is
supposed to contain the chain of functions that were called when curl
crashed. Include the stack trace with your detailed bug report. It'll help a
lot.

159
docs/CONTRIBUTE Normal file
View File

@@ -0,0 +1,159 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
To Think About When Contributing Source Code
This document is intended to offer some simple guidelines that can be useful
to keep in mind when you decide to contribute to the project. This concerns
new features as well as corrections to existing flaws or bugs.
Join the Community
Skip over to http://curl.haxx.se/mail/ and join the appropriate mailing
list(s). Read up on details before you post questions. Read this file before
you start sending patches! We prefer patches and discussions being held on
the mailing list(s), not sent to individuals.
The License Issue
When contributing with code, you agree to put your changes and new code under
the same license curl and libcurl is already using unless stated otherwise.
If you add a larger piece of code, you can opt to make that file or set of
files to use a different license as long as they don't enforce any changes to
the rest of the package and they make sense. Such "separate parts" can not be
GPL (as we don't want the GPL virus to attack users of libcurl) but they must
use "GPL compatible" licenses.
What To Read
Source code, the man pages, the INTERNALS document, the TODO, the most recent
CHANGES. Just lurking on the libcurl mailing list is gonna give you a lot of
insights on what's going on right now. Asking there is a good idea too.
Naming
Try using a non-confusing naming scheme for your new functions and variable
names. It doesn't necessarily have to mean that you should use the same as in
other places of the code, just that the names should be logical,
understandable and be named according to what they're used for. File-local
functions should be made static. We like lower case names.
See the INTERNALS document on how we name non-exported library-global
symbols.
Indenting
Please try using the same indenting levels and bracing method as all the
other code already does. It makes the source code a lot easier to follow if
all of it is written using the same style. We don't ask you to like it, we
just ask you to follow the tradition! ;-) This mainly means: 2-level indents,
using spaces only (no tabs) and having the opening brace ({) on the same line
as the if() or while().
Commenting
Comment your source code extensively using C comments (/* comment */), DO NOT
use C++ comments (// this style). Commented code is quality code and enables
future modifications much more. Uncommented code much more risk being
completely replaced when someone wants to extend things, since other persons'
source code can get quite hard to read.
General Style
Keep your functions small. If they're small you avoid a lot of mistakes and
you don't accidentally mix up variables etc.
Non-clobbering All Over
When you write new functionality or fix bugs, it is important that you don't
fiddle all over the source files and functions. Remember that it is likely
that other people have done changes in the same source files as you have and
possibly even in the same functions. If you bring completely new
functionality, try writing it in a new source file. If you fix bugs, try to
fix one bug at a time and send them as separate patches.
Platform Dependent Code
Use #ifdef HAVE_FEATURE to do conditional code. We avoid checking for
particular operating systems or hardware in the #ifdef lines. The
HAVE_FEATURE shall be generated by the configure script for unix-like systems
and they are hard-coded in the config-[system].h files for the others.
Separate Patches
It is annoying when you get a huge patch from someone that is said to fix 511
odd problems, but discussions and opinions don't agree with 510 of them - or
509 of them were already fixed in a different way. Then the patcher needs to
extract the single interesting patch from somewhere within the huge pile of
source, and that gives a lot of extra work. Preferably, all fixes that
correct different problems should be in their own patch with an attached
description exactly what they correct so that all patches can be selectively
applied by the maintainer or other interested parties.
Patch Against Recent Sources
Please try to get the latest available sources to make your patches
against. It makes the life of the developers so much easier. The very best is
if you get the most up-to-date sources from the CVS repository, but the
latest release archive is quite OK as well!
Document
Writing docs is dead boring and one of the big problems with many open source
projects. Someone's gotta do it. It makes it a lot easier if you submit a
small description of your fix or your new features with every contribution so
that it can be swiftly added to the package documentation.
The documentation is always made in man pages (nroff formatted) or plain
ASCII files. All HTML files on the web site and in the release archives are
generated from the nroff/ASCII versions.
Write Access to CVS Repository
If you are a frequent contributor, or have another good reason, you can of
course get write access to the CVS repository and then you'll be able to
check-in all your changes straight into the CVS tree instead of sending all
changes by mail as patches. Just ask if this is what you'd want. You will be
required to have posted a few quality patches first, before you can be
granted write access.
Test Cases
Since the introduction of the test suite, we can quickly verify that the main
features are working as they're supposed to. To maintain this situation and
improve it, all new features and functions that are added need to be tested
in the test suite. Every feature that is added should get at least one valid
test case that verifies that it works as documented. If every submitter also
post a few test cases, it won't end up as a heavy burden on a single person!
How To Make a Patch
Keep a copy of the unmodified curl sources. Make your changes in a separate
source tree. When you think you have something that you want to offer the
curl community, use GNU diff to generate patches.
If you have modified a single file, try something like:
diff -u undmodified-file.c my-changed-one.c > my-fixes.diff
If you have modified several files, possibly in different directories, you
can use diff recursively:
diff -ur curl-original-dir curl-modfied-sources-dir > my-fixes.diff
The GNU diff and GNU patch tools exist for virtually all platforms, including
all kinds of unixes and Windows:
For unix-like operating systems:
http://www.fsf.org/software/patch/patch.html
http://www.gnu.org/directory/diffutils.html
For Windows:
http://gnuwin32.sourceforge.net/packages/patch.htm
http://gnuwin32.sourceforge.net/packages/diffutils.htm

781
docs/FAQ Normal file
View File

@@ -0,0 +1,781 @@
Updated: May 9, 2003 (http://curl.haxx.se/docs/faq.html)
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
FAQ
1. Philosophy
1.1 What is cURL?
1.2 What is libcurl?
1.3 What is cURL not?
1.4 When will you make curl do XXXX ?
1.5 Who makes cURL?
1.6 What do you get for making cURL?
1.7 What about CURL from curl.com?
1.8 I have a problem who do I mail?
2. Install Related Problems
2.1 configure doesn't find OpenSSL even when it is installed
2.1.1. native linker doesn't find openssl
2.1.2. only the libssl lib is missing
2.2 Does curl work/build with other SSL libraries?
2.3 Where can I find a copy of LIBEAY32.DLL?
2.4 Does cURL support Socks (RFC 1928) ?
3. Usage Problems
3.1 curl: (1) SSL is disabled, https: not supported
3.2 How do I tell curl to resume a transfer?
3.3 Why doesn't my posting using -F work?
3.4 How do I tell curl to run custom FTP commands?
3.5 How can I disable the Pragma: nocache header?
3.6 Does curl support ASP, XML, XHTML or HTML version Y?
3.7 Can I use curl to delete/rename a file through FTP?
3.8 How do I tell curl to follow HTTP redirects?
3.9 How do I use curl in my favorite programming language?
3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
3.11 How do I POST with a different Content-Type?
3.12 Why do FTP specific features over HTTP proxy fail?
3.13 Why does my single/double quotes fail?
3.14 Does curl support javascript or pac (automated proxy config)?
4. Running Problems
4.1 Problems connecting to SSL servers.
4.2 Why do I get problems when I use & or % in the URL?
4.3 How can I use {, }, [ or ] to specify multiple URLs?
4.4 Why do I get downloaded data even though the web page doesn't exist?
4.5 Why do I get return code XXX from a HTTP server?
4.5.1 "400 Bad Request"
4.5.2 "401 Unauthorized"
4.5.3 "403 Forbidden"
4.5.4 "404 Not Found"
4.5.5 "405 Method Not Allowed"
4.5.6 "301 Moved Permanently"
4.6 Can you tell me what error code 142 means?
4.7 How do I keep user names and passwords secret in Curl command lines?
4.8 I found a bug!
4.9 Curl can't authenticate to the server that requires NTLM?
4.10 My HTTP request using HEAD, PUT or DELETE doesn't work!
4.11 Why does my HTTP range requests return the full document?
4.12 Why do I get "certificate verify failed" ?
5. libcurl Issues
5.1 Is libcurl thread-safe?
5.2 How can I receive all data into a large memory chunk?
5.3 How do I fetch multiple files with libcurl?
5.4 Does libcurl do Winsock initing on win32 systems?
5.5 Does CURLOPT_FILE and CURLOPT_INFILE work on win32 ?
5.6 What about Keep-Alive or persistent connections?
5.7 Link errors when building libcurl on Windows!
6. License Issues
6.1 I have a GPL program, can I use the libcurl library?
6.2 I have a closed-source program, can I use the libcurl library?
6.3 I have a BSD licensed program, can I use the libcurl library?
6.4 I have a program that uses LGPL libraries, can I use libcurl?
6.5 Can I modify curl/libcurl for my program and keep the changes secret?
6.6 Can you please change the curl/libcurl license to XXXX?
==============================================================================
1. Philosophy
1.1 What is cURL?
cURL (or simply just 'curl') is a command line tool for getting or sending
files using URL syntax. The name is a play on 'Client for URLs', originally
with URL spelled in uppercase to make it obvious it deals with URLs. The
fact it can also be pronounced 'see URL' also helped, it works as an
abbrivation for "Client URL Request Library" or why not the recursive
version: "Curl is a URL Request Library".
Curl supports a range of common Internet protocols, currently including
HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and FILE.
We spell it cURL or just curl. We pronounce it with an initial k sound:
[kurl].
NOTE: there are numerous sub-projects and related projects that also use the
word curl in the project names in various combinations, but you should take
notice that this FAQ is directed at the command-line tool named curl (and
libcurl the library), and may therefore not be valid for other curl
projects.
1.2 What is libcurl?
libcurl is a reliable and portable library which provides you with an easy
interface to a range of common Internet protocols.
You can use libcurl for free in your application even if it is commercial
or closed-source.
1.3 What is cURL not?
Curl is *not* a wget clone even though that is a very common misconception.
Never, during curl's development, have we intended curl to replace wget or
compete on its market. Curl is targeted at single-shot file transfers.
Curl is not a web site mirroring program. If you wanna use curl to mirror
something: fine, go ahead and write a script that wraps around curl to make
it reality (like curlmirror.pl does).
Curl is not an FTP site mirroring program. Sure, get and send FTP with curl
but if you want systematic and sequential behavior you should write a
script (or write a new program that interfaces libcurl) and do it.
Curl is not a PHP tool, even though it works perfectly well when used from
or with PHP.
Curl is not a single-OS program. Curl exists, compiles, builds and runs
under a wide range of operating systems, including all modern Unixes (and a
bunch of older ones too), Windows, Amiga, BeOS, OS/2, OS X, QNX etc.
1.4 When will you make curl do XXXX ?
We love suggestions of what to change in order to make curl and libcurl
better. We do however believe in a few rules when it comes to the future of
curl:
* Curl -- the command line tool -- is to remain a non-graphical command line
tool. If you want GUIs or fancy scripting capabilities, you should look
for another tool that uses libcurl.
* We do not add things to curl that other small and available tools already
do very fine at the side. Curl's output is fine to pipe into another
program or redirect to another file for the next program to interpret.
* We focus on protocol related issues and improvements. If you wanna do more
magic with the supported protocols than curl currently does, chances are
big we will agree. If you wanna add more protocols, we may very well
agree.
* If you want someone else to make all the work while you wait for us to
implement it for you, that is not a very friendly attitude. We spend a
considerable time already on maintaining and developing curl. In order to
get more out of us, you should consider trading in some of your time and
efforts in return.
* If you write the code, chances are bigger that it will get into curl
faster.
1.5 Who makes cURL?
cURL and libcurl are not made by any single individual. Sure, Daniel
Stenberg writes the major parts, but other persons' submissions are
important and crucial. Anyone can contribute and post their changes and
improvements and have them inserted in the main sources (of course on the
condition that developers agree on that the fixes are good).
The list of contributors in the docs/THANKS file is only a small part of all
the people that every day provide us with bug reports, suggestions, ideas
and source code.
curl is developed by a community, with Daniel at the wheel.
1.6 What do you get for making cURL?
Project cURL is entirely free and open. No person gets paid for developing
curl. We do this voluntarily on our spare time.
We get some help from companies. Contactor Data hosts the curl web site,
Haxx owns the curl web site's domain and sourceforge.net hosts several
project services we take advantage from, like the bug tracker, mailing lists
and more.
If you want to support our project with a donation or similar, one way of
doing that would be to buy "gift certificates" at useful online shopping
sites, such as amazon.com or thinkgeek.com. Another way would be to sponsor
us through a banner-program or even better: by helping us coding,
documenting, testing etc. You're welcome to send us a buck using paypal, as
described here: http://curl.haxx.se/donation.html
1.7 What about CURL from curl.com?
During the summer 2001, curl.com was busy advertising their client-side
programming language for the web, named CURL.
We are in no way associated with curl.com or their CURL programming
language.
Our project name curl has been in effective use since 1998. We were not the
first computer related project to use the name "curl" and do not claim any
first-hand rights to the name.
We recognize that we will be living in parallel with curl.com and wish them
every success.
1.8 I have a problem who do I mail?
Please do not mail any single individual unless you really need to. Keep
curl-related questions on a suitable mailing list. All available mailing
lists are listed in the MANUAL document and online at
http://curl.haxx.se/mail/
Keeping curl-related questions and discussions on mailing lists allows
others to join in and help, to share their ideas, contribute their
suggestions and spread their wisdom. Keeping discussions on public mailing
lists also allows for others to learn from this (both current and future
users thanks to the web based archives of the mailing lists), thus saving us
from having to repeat ourselves even more. Thanks for respecting this.
2. Install Related Problems
2.1. configure doesn't find OpenSSL even when it is installed
This may be because of several reasons.
2.1.1. native linker doesn't find openssl
Affected platforms:
Solaris (native cc compiler)
HPUX (native cc compiler)
SGI IRIX (native cc compiler)
SCO UNIX (native cc compiler)
When configuring curl, I specify --with-ssl. OpenSSL is installed in
/usr/local/ssl Configure reports SSL in /usr/local/ssl, but fails to find
CRYPTO_lock in -lcrypto
Cause: The cc for this test places the -L/usr/local/ssl/lib AFTER
-lcrypto, so ld can't find the library. This is due to a bug in the GNU
autoconf tool.
Workaround: Specifying "LDFLAGS=-L/usr/local/ssl/lib" in front of
./configure places the -L/usr/local/ssl/lib early enough in the command
line to make things work
Solution submitted by: Bob Allison <allisonb@users.sourceforge.net>
2.1.2. only the libssl lib is missing
If all include files and the libcrypto lib is present, with only the
libssl being missing according to configure, this is mostly likely because
a few functions are left out from the libssl.
If the function names missing include RSA or RSAREF you can be certain
that this is because libssl requires the RSA and RSAREF libs to build.
See the INSTALL file section that explains how to add those libs to
configure. Make sure that you remove the config.cache file before you
rerun configure with the new flags.
2.2. Does curl work/build with other SSL libraries?
Curl has been written to use OpenSSL, although there should not be much
problems using a different library. If anyone does "port" curl to use a
different SSL library, we are of course very interested in getting the
patch!
2.3. Where can I find a copy of LIBEAY32.DLL?
That is an OpenSSL binary built for Windows.
Curl uses OpenSSL to do the SSL stuff. The LIBEAY32.DLL is what curl needs
on a windows machine to do https://. Check out the curl web site to find
accurate and up-to-date pointers to recent OpenSSL DLLs and other binary
packages.
2.4. Does cURL support Socks (RFC 1928) ?
There is limited support for SOCKS5 for curl built with IPv6 support
disabled.
3. Usage problems
3.1. curl: (1) SSL is disabled, https: not supported
If you get this output when trying to get anything from a https:// server,
it means that the configure script couldn't find all libs and include files
it requires for SSL to work. If the configure script fails to find them,
curl is simply built without SSL support.
To get the https:// support into a curl that was previously built but that
reports that https:// is not supported, you should dig through the document
and logs and check out why the configure script doesn't find the SSL libs
and/or include files.
Also, check out the other paragraph in this FAQ labeled "configure doesn't
find OpenSSL even when it is installed".
3.2. How do I tell curl to resume a transfer?
Curl supports resumed transfers both ways on both FTP and HTTP.
Try the -C option.
3.3. Why doesn't my posting using -F work?
You can't simply use -F or -d at your choice. The web server that will
receive your post assumes one of the formats. If the form you're trying to
"fake" sets the type to 'multipart/form-data', then and only then you must
use the -F type. In all the most common cases, you should use -d which then
causes a posting with the type 'application/x-www-form-urlencoded'.
This is described in some detail in the MANUAL and TheArtOfHttpScripting
documents, and if you don't understand it the first time, read it again
before you post questions about this to the mailing list. Also, try reading
through the mailing list archives for old postings and questions regarding
this.
3.4. How do I tell curl to run custom FTP commands?
You can tell curl to perform optional commands both before and/or after a
file transfer. Study the -Q/--quote option.
Since curl is used for file transfers, you don't use curl to just perform
FTP commands without transferring anything. Therefore you must always specify
a URL to transfer to/from even when doing custom FTP commands.
3.5. How can I disable the Pragma: nocache header?
You can change all internally generated headers by adding a replacement with
the -H/--header option. By adding a header with empty contents you safely
disable that one. Use -H "Pragma:" to disable that specific header.
3.6. Does curl support ASP, XML, XHTML or HTML version Y?
To curl, all contents are alike. It doesn't matter how the page was
generated. It may be ASP, PHP, Perl, shell-script, SSI or plain
HTML-files. There's no difference to curl and it doesn't even know what kind
of language that generated the page.
See also item 3.14 regarding javascript.
3.7. Can I use curl to delete/rename a file through FTP?
Yes. You specify custom FTP commands with -Q/--quote.
One example would be to delete a file after you have downloaded it:
curl -O ftp://download.com/coolfile -Q '-DELE coolfile'
3.8 How do I tell curl to follow HTTP redirects?
Curl does not follow so-called redirects by default. The Location: header
that informs the client about this is only interpreted if you're using the
-L/--location option. As in:
curl -L http://redirector.com
3.9 How do I use curl in my favorite programming language?
There exist many language interfaces/bindings for curl that integrates it
better with various languages. If you are fluid in a script language, you
may very well opt to use such an interface instead of using the command line
tool.
Find out more about which languages that support curl directly, and how to
install and use them, in the libcurl section of the curl web site:
http://curl.haxx.se/libcurl/
In February 2003, there are interfaces available for the following
languages: Basic, C, C++, Cocoa, Dylan, Euphoria, Java, Lua, Object-Pascal,
Pascal, Perl, PHP, PostgreSQL, Python, Rexx, Ruby, Scheme and Tcl. By the
time you read this, additional ones may have appeared!
3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
Curl adheres to the HTTP spec, which basically means you can play with *any*
protocol that is built on top of HTTP. Protocols such as SOAP, WEBDAV and
XML-RPC are all such ones. You can use -X to set custom requests and -H to
set custom headers (or replace internally generated ones).
Using libcurl is of course just as fine and you'd just use the proper
library options to do the same.
3.11 How do I POST with a different Content-Type?
You can always replace the internally generated headers with -H/--header.
To make a simple HTTP POST with text/xml as content-type, do something like:
curl -d "datatopost" -H "Content-Type: text/xml" [URL]
3.12 Why do FTP specific features over HTTP proxy fail?
Because when you use a HTTP proxy, the protocol spoken on the network will
be HTTP, even if you specify a FTP URL. This effectively means that you
normally can't use FTP specific features such as FTP upload and FTP quote
etc.
There is one exception to this rule, and that is if you can "tunnel through"
the given HTTP proxy. Proxy tunneling is enabled with a special option (-p)
and is generally not available as proxy admins usually disable tunneling to
other ports than 443 (which is used for HTTPS access through proxies).
3.13 Why does my single/double quotes fail?
To specify a command line option that includes spaces, you might need to
put the entire option within quotes. Like in:
curl -d " with spaces " url.com
or perhaps
curl -d ' with spaces ' url.com
Exactly what kind of quotes and how to do this is entirely up to the shell
or command line interpreter that you are using. For most unix shells, you
can more or less pick either single (') or double (") quotes. For
Windows/DOS prompts I believe you're forced to use double (") quotes.
Please study the documentation for your particular environment. Examples in
the curl docs will use a mix of both these ones as shown above. You must
adjust them to work in your environment.
Remember that curl works and runs on more operating systems than most single
individuals have ever tried.
3.14 Does curl support javascript or pac (automated proxy config)?
Many web pages do magic stuff using embedded javascript. Curl and libcurl
have no built-in support for that, so it will be treated just like any other
contents.
.pac files are a netscape invention and are sometimes used by organizations
to allow them to differentiate which proxies to use. The .pac contents is
just a javascript program that gets invoked by the browser and that returns
the name of the proxy to connect to. Since curl doesn't support javascript,
it can't support .pac proxy configuration either.
Some work-arounds usually suggested to overcome this javascript dependency:
- Depending on the javascript complexity, write up a script that
translates it to another language and execute that.
- Read the javascript code and rewrite the same logic in another language.
- Implement a javascript interpreted, people have successfully used the
Mozilla javascript engine in the past.
- Ask your admins to stop this, for a static proxy setup or similar.
4. Running Problems
4.1. Problems connecting to SSL servers.
It took a very long time before we could sort out why curl had problems to
connect to certain SSL servers when using SSLeay or OpenSSL v0.9+. The
error sometimes showed up similar to:
16570:error:1407D071:SSL routines:SSL2_READ:bad mac decode:s2_pkt.c:233:
It turned out to be because many older SSL servers don't deal with SSLv3
requests properly. To correct this problem, tell curl to select SSLv2 from
the command line (-2/--sslv2).
There has also been examples where the remote server didn't like the SSLv2
request and instead you had to force curl to use SSLv3 with -3/--sslv3.
4.2. Why do I get problems when I use & or % in the URL?
In general unix shells, the & letter is treated special and when used, it
runs the specified command in the background. To safely send the & as a part
of a URL, you should quote the entire URL by using single (') or double (")
quotes around it.
An example that would invoke a remote CGI that uses &-letters could be:
curl 'http://www.altavista.com/cgi-bin/query?text=yes&q=curl'
In Windows, the standard DOS shell treats the %-letter specially and you
need to use TWO %-letters for each single one you want to use in the URL.
Also note that if you want the literal %-letter to be part of the data you
pass in a POST using -d/--data you must encode it as '%25' (which then also
needs the %-letter doubled on Windows machines).
4.3. How can I use {, }, [ or ] to specify multiple URLs?
Because those letters have a special meaning to the shell, and to be used in
a URL specified to curl you must quote them.
An example that downloads two URLs (sequentially) would do:
curl '{curl,www}.haxx.se'
To be able to use those letters as actual parts of the URL (without using
them for the curl URL "globbing" system), use the -g/--globoff option:
curl -g 'www.site.com/weirdname[].html'
4.4. Why do I get downloaded data even though the web page doesn't exist?
Curl asks remote servers for the page you specify. If the page doesn't exist
at the server, the HTTP protocol defines how the server should respond and
that means that headers and a "page" will be returned. That's simply how
HTTP works.
By using the --fail option you can tell curl explicitly to not get any data
if the HTTP return code doesn't say success.
4.5 Why do I get return code XXX from a HTTP server?
RFC2616 clearly explains the return codes. This is a short transcript. Go
read the RFC for exact details:
4.5.1 "400 Bad Request"
The request could not be understood by the server due to malformed
syntax. The client SHOULD NOT repeat the request without modifications.
4.5.2 "401 Unauthorized"
The request requires user authentication.
4.5.3 "403 Forbidden"
The server understood the request, but is refusing to fulfill it.
Authorization will not help and the request SHOULD NOT be repeated.
4.5.4 "404 Not Found"
The server has not found anything matching the Request-URI. No indication
is given of whether the condition is temporary or permanent.
4.5.5 "405 Method Not Allowed"
The method specified in the Request-Line is not allowed for the resource
identified by the Request-URI. The response MUST include an Allow header
containing a list of valid methods for the requested resource.
4.5.6 "301 Moved Permanently"
If you get this return code and an HTML output similar to this:
<H1>Moved Permanently</H1> The document has moved <A
HREF="http://same_url_now_with_a_trailing_slash/">here</A>.
it might be because you request a directory URL but without the trailing
slash. Try the same operation again _with_ the trailing URL, or use the
-L/--location option to follow the redirection.
4.6. Can you tell me what error code 142 means?
All error codes that are larger than the highest documented error code means
that curl has exited due to a crash. This is a serious error, and we
appreciate a detailed bug report from you that describes how we could go
ahead and repeat this!
4.7. How do I keep user names and passwords secret in Curl command lines?
This problem has two sides:
The first part is to avoid having clear-text passwords in the command line
so that they don't appear in 'ps' outputs and similar. That is easily
avoided by using the "-K" option to tell curl to read parameters from a
file or stdin to which you can pass the secret info.
To keep the passwords in your account secret from the rest of the world is
not a task that curl addresses. You could of course encrypt them somehow to
at least hide them from being read by human eyes, but that is not what
anyone would call security.
Also note that regular HTTP and FTP passwords are sent in clear across the
network. All it takes for anyone to fetch them is to listen on the network.
Eavesdropping is very easy.
4.8 I found a bug!
It is not a bug if the behavior is documented. Read the docs first.
If it is a problem with a binary you've downloaded or a package for your
particular platform, try contacting the person who built the package/archive
you have.
If there is a bug, read the BUGS document first. Then report it as described
in there.
4.9. Curl can't authenticate to the server that requires NTLM?
NTLM is a Microsoft proprietary protocol. Unfortunately, curl does not
currently support that. Proprietary formats are evil. You should not use
such ones.
4.10 My HTTP request using HEAD, PUT or DELETE doesn't work!
Many web servers allow or demand that the administrator configures the
server properly for these requests to work on the web server.
Some servers seem to support HEAD only on certain kinds of URLs.
To fully grasp this, try the documentation for the particular server
software you're trying to interact with. This is not anything curl can do
anything about.
4.11 Why does my HTTP range requests return the full document?
Because the range may not be supported by the server, or the server may
choose to ignore it and return the full document anyway.
4.12 Why do I get "certificate verify failed" ?
You invoke curl 7.10 or later to communicate on a https:// URL and get an
error back looking something similar to this:
curl: (35) SSL: error:14090086:SSL routines:
SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Then it means that curl couldn't verify that the server's certificate was
good. Curl verifies the certificate using the CA cert bundle that comes with
the curl installation.
To disable the verification (which makes it act like curl did before 7.10),
use -k. This does however enable man-in-the-middle attacks.
If you get this failure but are having a CA cert bundle installed and used,
the server's certificate is not signed by one of the CA's in the bundle. It
might for example be self-signed. You then correct this problem by obtaining
a valid CA cert for the server. Or again, decrease the security by disabling
this check.
Details are also in the SSLCERTS file in the release archives, found online
here: http://curl.haxx.se/docs/sslcerts.html
5. libcurl Issues
5.1. Is libcurl thread-safe?
Yes.
We have written the libcurl code specificly adjusted for multi-threaded
programs. libcurl will use thread-safe functions instead of non-safe ones if
your system has such.
We would appreciate some kind of report or README file from those who have
used libcurl in a threaded environment.
5.2 How can I receive all data into a large memory chunk?
[ See also the examples/getinmemory.c source ]
You are in full control of the callback function that gets called every time
there is data received from the remote server. You can make that callback do
whatever you want. You do not have to write the received data to a file.
One solution to this problem could be to have a pointer to a struct that you
pass to the callback function. You set the pointer using the
curl_easy_setopt(CURLOPT_FILE) function. Then that pointer will be passed to
the callback instead of a FILE * to a file:
/* imaginary struct */
struct MemoryStruct {
char *memory;
size_t size;
};
/* imaginary callback function */
size_t
WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
register int realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)data;
mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
if (mem->memory) {
memcpy(&(mem->memory[mem->size]), ptr, realsize);
mem->size += realsize;
mem->memory[mem->size] = 0;
}
return realsize;
}
5.3 How do I fetch multiple files with libcurl?
libcurl has excellent support for transferring multiple files. You should
just repeatedly set new URLs with curl_easy_setopt() and then transfer it
with curl_easy_perform(). The handle you get from curl_easy_init() is not
only reusable, but you're even encouraged to reuse it if you can, as that
will enable libcurl to use persistent connections.
5.4 Does libcurl do Winsock initialization on win32 systems?
Yes, if told to in the curl_global_init() call.
5.5 Does CURLOPT_FILE and CURLOPT_INFILE work on win32 ?
Yes, but you cannot open a FILE * and pass the pointer to a DLL and have
that DLL use the FILE *. If you set CURLOPT_FILE you must also use
CURLOPT_WRITEFUNCTION as well to set a function that writes the file, even
if that simply writes the data to the specified FILE*. Similarly, if you use
CURLOPT_INFILE you must also specify CURLOPT_READFUNCTION.
(Provided by Joel DeYoung and Bob Schader)
5.6 What about Keep-Alive or persistent connections?
curl and libcurl have excellent support for persistent connections when
transferring several files from the same server. Curl will attempt to reuse
connections for all URLs specified on the same command line/config file, and
libcurl will reuse connections for all transfers that are made using the
same libcurl handle.
5.7 Link errors when building libcurl on Windows!
You need to make sure that your project, and all the libraries (both static
and dynamic) that it links against, are compiled/linked against the same run
time library.
This is determined by the /MD, /ML, /MT (and their corresponding /M?d)
options to the command line compiler. /MD (linking against MSVCRT dll) seems
to be the most commonly used option.
(Provided by Andrew Francis)
6. License Issues
Curl and libcurl are released under a MIT/X derivate license. The license is
very liberal and should not impose a problem for your project. This section
is just a brief summary for the cases we get the most questions. (Parts of
this section was much enhanced by Bjorn Reese.)
6.1. I have a GPL program, can I use the libcurl library?
Yes!
Since libcurl may be distributed under the MIT/X derivate license, it can be
used together with GPL in any software.
6.2. I have a closed-source program, can I use the libcurl library?
Yes!
libcurl does not put any restrictions on the program that uses the library.
6.3. I have a BSD licensed program, can I use the libcurl library?
Yes!
libcurl does not put any restrictions on the program that uses the library.
6.4. I have a program that uses LGPL libraries, can I use libcurl?
Yes!
The LGPL license doesn't clash with other licenses.
6.5. Can I modify curl/libcurl for my program and keep the changes secret?
Yes!
The MIT/X derivate license practically allows you to do almost anything with
the sources, on the condition that the copyright texts in the sources are
left intact.
6.6. Can you please change the curl/libcurl license to XXXX?
No.
We have carefully picked this license after years of development and
discussions and a large amount of people have contributed with source code
knowing that this is the license we use. This license puts the restrictions
we want on curl/libcurl and it does not spread to other programs or
libraries that use it. The recent dual license modification should make it
possible for everyone to use libcurl or curl in their projects, no matter
what license they already have in use.

View File

@@ -15,39 +15,48 @@ Misc
- guesses protocol from host name unless specified
- uses .netrc
- progress bar/time specs while downloading
- PROXY environment variables support
- "standard" proxy environment variables support
- config file support
- compiles on win32
- compiles on win32 (reported built on 29 operating systems)
- redirectable stderr
- use selected network interface for outgoing traffic
- IPv6 support
- persistant connections
HTTP
- HTTP/1.1 compliant
- GET
- PUT
- HEAD
- POST
- multipart POST
- authentication
- resume
- resume (both GET and PUT)
- follow redirects
- maximum amount of redirects to follow
- custom HTTP request
- cookie get/send
- understands the netscape cookie file
- custom headers (that can replace internally generated headers)
- cookie get/send fully parsed
- understands the netscape cookie file format
- custom headers (that can replace/remove internally generated headers)
- custom user-agent string
- custom referer string
- range
- proxy authentication
- time conditions
- via http-proxy
- retrieve file modification date
HTTPS (*1)
- (all the HTTP features)
- using certificates
- verify server certificate
- via http-proxy
FTP
- download
- authentication
- PORT or PASV
- kerberos security
- active/passive using PORT, EPRT, PASV or EPSV
- single file size information (compare to HTTP HEAD)
- 'type=' URL support
- dir listing
@@ -57,12 +66,15 @@ FTP
- upload via http-proxy as HTTP PUT
- download resume
- upload resume
- QUOT commands (before and/or after the transfer)
- custom ftp commands (before and/or after the transfer)
- simple "range" support
- via http-proxy
- all operations can be tunneled through a http-proxy
- customizable to retrieve file modification date
TELNET
- connection negotiation
- custom telnet options
- stdin/stdout I/O
LDAP (*2)

116
docs/HISTORY Normal file
View File

@@ -0,0 +1,116 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
How cURL Became Like This
In the second half of 1997, Daniel Stenberg came up with the idea to make
currency-exchange calculations available to Internet Relay Chat (IRC)
users. All the necessary data are published on the Web; he just needed to
automate their retrieval.
Daniel simply adopted an existing command-line open-source tool, httpget, that
Brazilian Rafael Sagula had written. After a few minor adjustments, it did
just what he needed.
Soon, he found currencies on a GOPHER site, so support for that had to go in,
and not before long FTP download support was added as well. The name of the
project was changed to urlget to better fit what it actually did now, since
the http-only days were already passed.
The project slowly grew bigger. When upload capabilities were added and the
name once again was misleading, a second name change was made and on March 20,
1998 curl 4 was released. (The version numbering from the previous names were
kept.)
(Unrelated to this project a company called Curl Corporation filed a US
trademark on the name "CURL" on May 18 1998. That company had then already
registered the curl.com domain back in November of the previous year. All this
was much later brought into the lights.)
SSL support was added, powered by the SSLeay library.
August 1998, added project curl to freshmeat.net.
October 1998, with the curl 4.9 release and the introduction of cookie
support, curl was no longer released under the GPL license. Now we're at 4000
lines of code, we switched over to the MPL license to restrict the effects of
"copyleft".
November 1998, configure script and reported successful compiles on several
major operating systems. The never-quite-understood -F option was added and
curl could now simulate quite a lot of a browser.
Curl 5 was released in December 1998 and introduced the first ever curl man
page. People started making Linux RPM packages out of it.
January 1999, DICT support added.
OpenSSL took over where SSLeay was abandoned.
May 1999, first Debian package.
August 1999, LDAP:// and FILE:// support added. The curl web site gets 1300
visits weekly.
Released curl 6.0 in September. 15000 lines of code.
December 28 1999, added the project on Sourceforge and started using its
services for managing the project.
Spring 2000, major internal overhaul to provide a suitable library interface.
The first non-beta release was named 7.1 and arrived in August. This offered
the easy interface and turned out to be the beginning of actually getting
other software and programs to get based on and powered by libcurl. Almost
20000 lines of code.
August 2000, the curl web site gets 4000 visits weekly.
The PHP guys adopted libcurl already the same month, when the first ever third
party libcurl binding showed up. CURL has been a supported module in PHP since
the release of PHP 4.0.2. This would soon get followers. More than 16
different bindings exist at the time of this writing.
September 2000, kerberos4 support was added.
In November 2000 started the work on a test suite for curl. It was later
re-written from scratch again.
January 2001, Daniel released curl 7.5.2 under a new license again: MIT (or
MPL). The MIT license is extremely liberal and can be used combined with GPL
in other projects. This would finally put an end to the "complaints" from
people involved in GPLed projects that previously were prohibited from using
libcurl while it was released under MPL only. (Due to the fact that MPL is
deemed "GPL incompatible".)
curl supports HTTP 1.1 starting with the release of 7.7, March 22 2001. This
also introduced libcurl's ability to do persistent connections. 24000 lines of
code.
August 2001. curl is bundled in Mac OS X, 10.1. It was already becoming more
and more of a standard utility of Linux distributions and a regular in the BSD
ports collections. The curl web site gets 8000 visits weekly. Curl Corporation
contacted Daniel to discuss "the name issue". After Daniel's reply, they have
never since got in touch again.
September 2001, libcurl 7.9 introduces cookie jar and curl_formadd(). During
the forthcoming 7.9.x releases, we introduced the multi interface slowly and
without much whistles.
June 2002, the curl web site gets 13000 visits weekly. curl and libcurl is
35000 lines of code. Reported successful compiles on more than 40 combinations
of CPUs and operating systems.
To estimate number of users of the curl tool or libcurl library is next to
impossible. Around 5000 downloaded packages each week from the main site gives
a hint, but the packages are mirrored extensively, bundled with numerous OS
distributions and otherwise retrieved as part of other software.
September 2002, with the release of curl 7.10 it is released under the MIT
license only.
February 2003, the curl site averages at 20000 visits weekly. At any given
moment, there's an average of 3 people browsing the curl.haxx.se site.

25
docs/HOWTO-RELEASE Normal file
View File

@@ -0,0 +1,25 @@
Steps To Perform When Building a Public Release
* "make distcheck"
* ./maketgz
then upload the 3 curl packages maketgz created
* update these files:
www/_download.html
www/_changes.html
www/_newslog.html
www/Makefile
* commit the web changes
* 'cvs commit'
* 'cvs tag'
* write the release announcement, including:
- changes / bugfixes
- other curl-related news
- contributors
* mail release-announcement to curl-announce and curl-users

495
docs/INSTALL Normal file
View File

@@ -0,0 +1,495 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
How To Compile
Curl has been compiled and built on numerous different operating systems.
Most systems build curl the same way (unix-style). Continue reading below for
more details if you're one of them.
If you're using Windows (95/98/NT/ME/2000/XP or similar), VMS, RISC OS or OS/2
or cross-compile, you should continue reading from one the paragraphs further
down.
UNIX
====
A normal unix installation is made in three or four steps (after you've
unpacked the source archive):
./configure
make
make test (optional)
make install
You probably need to be root when doing the last command.
If you have checked out the sources from the CVS repository, read the
CVS-INFO on how to proceed.
Get a full listing of all available configure options by invoking it like:
./configure --help
If you want to install curl in a different file hierarchy than /usr/local,
you need to specify that already when running configure:
./configure --prefix=/path/to/curl/tree
If you happen to have write permission in that directory, you can do 'make
install' without being root. An example of this would be to make a local
install in your own home directory:
./configure --prefix=$HOME
make
make install
The configure script always tries to find a working SSL library unless
explicitly told not to. If you have OpenSSL installed in the default search
path for your compiler/linker, you don't need to do anything special. If
you have OpenSSL installed in /usr/local/ssl, you can run configure like:
./configure --with-ssl
If you have OpenSSL installed somewhere else (for example, /opt/OpenSSL,)
you can run configure like this:
./configure --with-ssl=/opt/OpenSSL
If you insist on forcing a build without SSL support, even though you may
have OpenSSL installed in your system, you can run configure like this:
./configure --without-ssl
If you have OpenSSL installed, but with the libraries in one place and the
header files somewhere else, you have to set the LDFLAGS and CPPFLAGS
environment variables prior to running configure. Something like this
should work:
(with the Bourne shell and its clones):
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
If your SSL library was compiled with rsaref (usually for use in the United
States), you may also need to set:
LIBS=-lRSAglue -lrsaref
(as suggested by Doug Kaufman)
MORE OPTIONS
To force configure to use the standard cc compiler if both cc and gcc are
present, run configure like
CC=cc ./configure
or
env Cc=cc ./configure
To force a static library compile, disable the shared library creation
by running configure like:
./configure --disable-shared
To tell the configure script to skip searching for thread-safe functions,
add an option like:
./configure --disable-thread
To build curl with kerberos4 support enabled, curl requires the krb4 libs
and headers installed. You can then use a set of options to tell
configure where those are:
--with-krb4-includes[=DIR] Specify location of kerberos4 headers
--with-krb4-libs[=DIR] Specify location of kerberos4 libs
--with-krb4[=DIR] where to look for Kerberos4
In most cases, /usr/athena is the install prefix and then it works with
./configure --with-krb4=/usr/athena
If you're a curl developer and use gcc, you might want to enable more
debug options with the --enable-debug option.
Win32
=====
Without SSL:
MingW32 (GCC-2.95) style
------------------------
Run the 'mingw32.bat' file to get the proper environment variables
set, then run 'make mingw32' in the root dir.
If you have any problems linking libraries or finding header files, be
sure to verify that the provided "Makefile.m32" files use the proper
paths, and adjust as necessary.
Cygwin style
------------
Almost identical to the unix installation. Run the configure script in
the curl root with 'sh configure'. Make sure you have the sh
executable in /bin/ or you'll see the configure fail towards the end.
Run 'make'
Microsoft command line style
----------------------------
Run the 'vcvars32.bat' file to get the proper environment variables
set, then run 'nmake vc' in the root dir.
The vcvars32.bat file is part of the Microsoft development
environment.
IDE-style
-------------------------
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).
(you should name it libcurl or similar)
Make the sources in the src/ drawer be a "win32 console application"
project. Name it curl.
With VC++, add 'ws2_32.lib' to the link libs when you build curl!
Borland seems to do that itself magically. Of course you have to make
sure it links with the libcurl too!
For VC++ 6, there's an included Makefile.vc6 that should be possible
to use out-of-the-box.
Microsoft note: add /Zm200 to the compiler options to increase the
compiler's memory allocation limit, as the hugehelp.c won't compile
due to "too long puts string".
With SSL:
MingW32 (GCC-2.95) style
------------------------
Run the 'mingw32.bat' file to get the proper environment variables
set, then run 'make mingw32-ssl' in the root dir.
If you have any problems linking libraries or finding header files, be
sure to look at the provided "Makefile.m32" files for the proper
paths, and adjust as necessary.
Cygwin style
------------
Haven't done, nor got any reports on how to do. It should although be
identical to the unix setup for the same purpose. See above.
Microsoft command line style
----------------------------
Please read the OpenSSL documentation on how to compile and install
the OpenSSL libraries. The build process of OpenSSL generates the
libeay32.dll and ssleay32.dll files in the out32dll subdirectory in
the OpenSSL home directory. OpenSSL static libraries (libeay32.lib,
ssleay32.lib, RSAglue.lib) are created in the out32 subdirectory.
Run the 'vcvars32.bat' file to get a proper environment. The
vcvars32.bat file is part of the Microsoft development environment and
you may find it in 'C:\Program Files\Microsoft Visual Studio\vc98\bin'
provided that you installed Visual C/C++ 6 in the default directory.
Before running nmake define the OPENSSL_PATH environment variable with
the root/base directory of OpenSSL, for example:
set OPENSSL_PATH=c:\openssl-0.9.6b
Then run 'nmake vc-ssl' or 'nmake vc-ssl-dll' in curl's root
directory. 'nmake vc-ssl' will create a libcurl static and dynamic
libraries in the lib subdirectory, as well as a statically linked
version of curl.exe in the src subdirectory. This statically linked
version is a standalone executable not requiring any DLL at
runtime. This make method requires that you have the static OpenSSL
libraries available in OpenSSL's out32 subdirectory.
'nmake vc-ssl-dll' creates the libcurl dynamic library and
links curl.exe against libcurl and OpenSSL dynamically.
This executable requires libcurl.dll and the OpenSSL DLLs
at runtime.
Microsoft / Borland style
-------------------------
If you have OpenSSL, and want curl to take advantage of it, edit your
project properties to use the SSL include path, link with the SSL libs
and define the USE_SSLEAY symbol.
Disabling Specific Protocols:
The configure utility, unfortunately, is not available for the Windows
environment, therefore, you cannot use the various disable-protocol
options of the configure utility on this platform.
However, you can use the following defines to disable specific
protocols:
HTTP_ONLY disables all protocols except HTTP
CURL_DISABLE_FTP disables FTP
CURL_DISABLE_LDAP disables LDAP
CURL_DISABLE_TELNET disables TELNET
CURL_DISABLE_DICT disables DICT
CURL_DISABLE_FILE disables FILE
CURL_DISABLE_GOPHER disables GOPHER
If you want to set any of these defines you have the following
possibilities:
- Modify lib/setup.h
- Modify lib/Makefile.vc6
- Add defines to Project/Settings/C/C++/General/Preprocessor Definitions
in the curllib.dsw/curllib.dsp Visual C++ 6 IDE project.
IBM OS/2
========
Building under OS/2 is not much different from building under unix.
You need:
- emx 0.9d
- GNU make
- GNU patch
- ksh
- GNU bison
- GNU file utilities
- GNU sed
- autoconf 2.13
If you want to build with OpenSSL or OpenLDAP support, you'll need to
download those libraries, too. Dirk Ohme has done some work to port SSL
libraries under OS/2, but it looks like he doesn't care about emx. You'll
find his patches on: http://come.to/Dirk_Ohme
If during the linking you get an error about _errno being an undefined
symbol referenced from the text segment, you need to add -D__ST_MT_ERRNO__
in your definitions.
If everything seems to work fine but there's no curl.exe, you need to add
-Zexe to your linker flags.
If you're getting huge binaries, probably your makefiles have the -g in
CFLAGS.
VMS
===
(The VMS section is in whole contributed by the friendly Nico Baggus)
This is the first attempt at porting cURL to VMS.
Curl seems to work with FTP & HTTP other protocols are not tested. (the
perl http/ftp testing server supplied as testing too cannot work on VMS
because vms has no concept of fork(). [ I tried to give it a whack, but
thats of no use.
SSL stuff has not been ported.
Telnet has about the same issues as for Win32. When the changes for Win32
are clear maybe they'l work for VMS too. The basic problem is that select
ONLY works for sockets.
Marked instances of fopen/[f]stat that might become a problem, especially
for non stream files. In this regard, the files opened for writing will be
created stream/lf and will thus be safe. Just keep in mind that non-binary
read/wring from/to files will have a records size limit of 32767 bytes
imposed.
Stat to get the size of the files is again only safe for stream files &
fixed record files without implied CC.
-- My guess is that only allowing access to stream files is the quickest
way to get around the most issues. Therefore all files need to to be
checked to be sure they will be stream/lf before processing them. This is
the easiest way out, I know. The reason for this is that code that needs to
report the filesize will become a pain in the ass otherwise.
Exit status.... Well we needed something done here,
VMS has a structured exist status:
| 3 | 2 | 1 | 0|
|1098|765432109876|5432109876543|210|
+----+------------+-------------+---+
|Ctrl| Facility | Error code |sev|
+----+------------+-------------+---+
With the Ctrl-bits an application can tell if part or the whole message has
allready been printed from the program, DCL doesn't need to print it again.
Facility - basicaly the program ID. A code assigned to the program
the name can be fetched from external or internal message libraries
Errorcode - the errodes assigned by the application
Sev. - severity: Even = error, off = non error
0 = Warning
1 = Success
2 = Error
3 = Information
4 = Fatal
<5-7> reserved.
This all presents itself with:
%<FACILITY>-<SeV>-<Errorname>, <Error message>
See also the src/curlmsg.msg file, it has the source for the messages In
src/main.c a section is devoted to message status values, the globalvalues
create symbols with certain values, referenced from a compiled message
file. Have all exit function use a exit status derived from a translation
table with the compiled message codes.
This was all compiled with:
Compaq C V6.2-003 on OpenVMS Alpha V7.1-1H2
So far for porting notes as of:
13-jul-2001
N. Baggus
QNX
===
(This section was graciously brought to us by David Bentham)
As QNX is targetted for resource constrained environments, the QNX headers
set conservative limits. This includes the FD_SETSIZE macro, set by default
to 32. Socket descriptors returned within the CURL library may exceed this,
resulting in memory faults/SIGSEGV crashes when passed into select(..)
calls using fd_set macros.
A good all-round solution to this is to override the default when building
libcurl, by overriding CFLAGS during configure, example
# configure CFLAGS='-DFD_SETSIZE=64 -g -O2'
CROSS COMPILE
=============
(This section was graciously brought to us by Jim Duey, 23-oct-2001)
Download and unpack the cURL package. Version should be 7.9.1 or later.
'cd' to the new directory. (ie. curl-7.9.1-pre4)
Set environment variables to point to the cross-compile toolchain and call
configure with any options you need. Be sure and specify the '--host' and
'--build' parameters at configuration time. The following script is an
example of cross-compiling for the IBM 405GP PowerPC processor using the
toolchain from MonteVista for Hardhat Linux.
(begin script)
#! /bin/sh
export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin
export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include"
export AR=ppc_405-ar
export AS=ppc_405-as
export LD=ppc_405-ld
export RANLIB=ppc_405-ranlib
export CC=ppc_405-gcc
export NM=ppc_405-nm
configure --target=powerpc-hardhat-linux \
--host=powerpc-hardhat-linux \
--build=i586-pc-linux-gnu \
--prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \
--exec-prefix=/usr/local
(end script)
The '--prefix' parameter specifies where cURL will be installed. If
'configure' completes successfully, do 'make' and 'make install' as usual.
RISC OS
=======
The library can be cross-compiled using gccsdk as follows:
CC=riscos-gcc AR=riscos-ar RANLIB='riscos-ar -s' ./configure \
--host=arm-riscos-aof --without-random --disable-shared
make
where riscos-gcc and riscos-ar are links to the gccsdk tools.
You can then link your program with curl/lib/.libs/libcurl.a
PORTS
=====
This is a probably incomplete list of known hardware and operating systems
that curl has been compiled for. If you know a system curl compiles and
runs on, that isn't listed, please let us know!
- Alpha DEC OSF 4
- Alpha Digital UNIX v3.2
- Alpha FreeBSD 4.1, 4.5
- Alpha Linux 2.2, 2.4
- Alpha NetBSD 1.5.2
- Alpha OpenBSD 3.0
- Alpha OpenVMS V7.1-1H2
- Alpha Tru64 v5.0 5.1
- HP-PA HP-UX 9.X 10.X 11.X
- HP-PA Linux
- MIPS IRIX 6.2, 6.5
- MIPS Linux
- Pocket PC/Win CE 3.0
- Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1
- PowerPC Darwin 1.0
- PowerPC Linux
- PowerPC Mac OS 9
- PowerPC Mac OS X
- SINIX-Z v5
- Sparc Linux
- Sparc Solaris 2.4, 2.5, 2.5.1, 2.6, 7, 8
- Sparc SunOS 4.1.X
- StrongARM (and other ARM) RISC OS 3.1, 4.02
- StrongARM Linux 2.4
- StrongARM NetBSD 1.4.1
- Ultrix 4.3a
- i386 BeOS
- i386 FreeBSD
- i386 HURD
- i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4
- i386 NetBSD
- i386 OS/2
- i386 OpenBSD
- i386 SCO unix
- i386 Solaris 2.7
- i386 Windows 95, 98, ME, NT, 2000
- i386 QNX 6
- i486 ncr-sysv4.3.03 (NCR MP-RAS)
- ia64 Linux 2.3.99
- m68k AmigaOS 3
- m68k Linux
- m68k OpenBSD
- m88k dg-dgux5.4R3.00
- s390 Linux
- XScale/PXA250 Linux 2.4
OpenSSL
=======
You'll find OpenSSL information at:
http://www.openssl.org
MingW32/Cygwin
==============
You'll find MingW32 and Cygwin information at:
http://www.mingw.org
OpenLDAP
========
You'll find OpenLDAP information at:
http://www.openldap.org
You need to install it with shared libraries, which is enabled when running
the ldap configure script with "--enable-shared". With my linux 2.0.36
kernel I also had to disable using threads (with --without-threads),
because the configure script couldn't figure out my system.

381
docs/INTERNALS Normal file
View File

@@ -0,0 +1,381 @@
Updated for curl 7.9.1 on November 2, 2001
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
INTERNALS
The project is split in two. The library and the client. The client part uses
the library, but the library is designed to allow other applications to use
it.
The largest amount of code and complexity is in the library part.
CVS
===
All changes to the sources are committed to the CVS repository as soon as
they're somewhat verified to work. Changes shall be commited as independently
as possible so that individual changes can be easier spotted and tracked
afterwards.
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.
Windows vs Unix
===============
There are a few differences in how to program curl the unix way compared to
the Windows way. The four perhaps most notable details are:
1. Different function names for socket operations.
In curl, this is solved with defines and macros, so that the source looks
the same at all places except for the header file that defines them. The
macros in use are sclose(), sread() and swrite().
2. Windows requires a couple of init calls for the socket stuff.
Those must be made by the application that uses libcurl, in curl that means
src/main.c has some code #ifdef'ed to do just that.
3. The file descriptors for network communication and file operations are
not easily interchangable as in unix.
We avoid this by not trying any funny tricks on file descriptors.
4. When writing data to stdout, Windows makes end-of-lines the DOS way, thus
destroying binary data, although you do want that conversion if it is
text coming through... (sigh)
We set stdout to binary under windows
Inside the source code, We make an effort to avoid '#ifdef [Your OS]'. All
conditionals that deal with features *should* instead be in the format
'#ifdef HAVE_THAT_WEIRD_FUNCTION'. Since Windows can't run configure scripts,
we maintain two config-win32.h files (one in lib/ and one in src/) that are
supposed to look exactly as a config.h file would have looked like on a
Windows machine!
Generally speaking: always remember that this will be compiled on dozens of
operating systems. Don't walk on the edge.
Library
=======
There are plenty of entry points to the library, namely each publicly defined
function that libcurl offers to applications. All of those functions are
rather small and easy-to-follow. All the ones prefixed with 'curl_easy' are
put in the lib/easy.c file.
curl_global_init_() and curl_global_cleanup() should be called by the
application to initialize and clean up global stuff in the library. As of
today, it can handle the global SSL initing if SSL is enabled and it can init
the socket layer on windows machines. libcurl itself has no "global" scope.
All printf()-style functions use the supplied clones in lib/mprintf.c. This
makes sure we stay absolutely platform independent.
curl_easy_init() allocates an internal struct and makes some initializations.
The returned handle does not reveal internals. This is the 'SessionHandle'
struct which works as an "anchor" struct for all curl_easy functions. All
connections performed will get connect-specific data allocated that should be
used for things related to particular connections/requests.
curl_easy_setopt() takes three arguments, where the option stuff must be
passed in pairs: the parameter-ID and the parameter-value. The list of
options is documented in the man page. This function mainly sets things in
the 'SessionHandle' struct.
curl_easy_perform() does a whole lot of things:
It starts off in the lib/easy.c file by calling Curl_perform() and the main
work then continues in lib/url.c. The flow continues with a call to
Curl_connect() to connect to the remote site.
o Curl_connect()
... analyzes the URL, it separates the different components and connects to
the remote host. This may involve using a proxy and/or using SSL. The
Curl_gethost() function in lib/hostip.c is used for looking up host names.
When Curl_connect is done, we are connected to the remote site. Then it is
time to tell the server to get a document/file. Curl_do() arranges this.
This function makes sure there's an allocated and initiated 'connectdata'
struct that is used for this particular connection only (although there may
be several requests performed on the same connect). A bunch of things are
inited/inherited from the SessionHandle struct.
o Curl_do()
Curl_do() makes sure the proper protocol-specific function is called. The
functions are named after the protocols they handle. Curl_ftp(),
Curl_http(), Curl_dict(), etc. They all reside in their respective files
(ftp.c, http.c and dict.c). HTTPS is handled by Curl_http() and FTPS by
Curl_ftp().
The protocol-specific functions of course deal with protocol-specific
negotiations and setup. They have access to the Curl_sendf() (from
lib/sendf.c) function to send printf-style formatted data to the remote
host and when they're ready to make the actual file transfer they call the
Curl_Transfer() function (in lib/transfer.c) to setup the transfer and
returns.
Starting in 7.9.1, if this DO function fails and the connection is being
re-used, libcurl will then close this connection, setup a new connection
and re-issue the DO request on that. This is because there is no way to be
perfectly sure that we have discovered a dead connection before the DO
function and thus we might wrongly be re-using a connection that was closed
by the remote peer.
o Transfer()
Curl_perform() then calls Transfer() in lib/transfer.c that performs
the entire file transfer.
During transfer, the progress functions in lib/progress.c are called at a
frequent interval (or at the user's choice, a specified callback might get
called). The speedcheck functions in lib/speedcheck.c are also used to
verify that the transfer is as fast as required.
o Curl_done()
Called after a transfer is done. This function takes care of everything
that has to be done after a transfer. This function attempts to leave
matters in a state so that Curl_do() should be possible to call again on
the same connection (in a persistent connection case). It might also soon
be closed with Curl_disconnect().
o Curl_disconnect()
When doing normal connections and transfers, no one ever tries to close any
connections so this is not normally called when curl_easy_perform() is
used. This function is only used when we are certain that no more transfers
is going to be made on the connection. It can be also closed by force, or
it can be called to make sure that libcurl doesn't keep too many
connections alive at the same time (there's a default amount of 5 but that
can be changed with the CURLOPT_MAXCONNECTS option).
This function cleans up all resources that are associated with a single
connection.
Curl_perform() is the function that does the main "connect - do - transfer -
done" loop. It loops if there's a Location: to follow.
When completed, the curl_easy_cleanup() should be called to free up used
resources. It runs Curl_disconnect() on all open connectons.
A quick roundup on internal function sequences (many of these call
protocol-specific function-pointers):
curl_connect - connects to a remote site and does initial connect fluff
This also checks for an existing connection to the requested site and uses
that one if it is possible.
curl_do - starts a transfer
curl_transfer() - transfers data
curl_done - ends a transfer
curl_disconnect - disconnects from a remote site. This is called when the
disconnect is really requested, which doesn't necessarily have to be
exactly after curl_done in case we want to keep the connection open for
a while.
HTTP(S)
HTTP offers a lot and is the protocol in curl that uses the most lines of
code. There is a special file (lib/formdata.c) that offers all the multipart
post functions.
base64-functions for user+password stuff (and more) is in (lib/base64.c) and
all functions for parsing and sending cookies are found in (lib/cookie.c).
HTTPS uses in almost every means the same procedure as HTTP, with only two
exceptions: the connect procedure is different and the function used to read
or write from the socket is different, although the latter fact is hidden in
the source by the use of curl_read() for reading and curl_write() for writing
data to the remote server.
http_chunks.c contains functions that understands HTTP 1.1 chunked transfer
encoding.
An interesting detail with the HTTP(S) request, is the add_buffer() series of
functions we use. They append data to one single buffer, and when the
building is done the entire request is sent off in one single write. This is
done this way to overcome problems with flawed firewalls and lame servers.
FTP
The Curl_if2ip() function can be used for getting the IP number of a
specified network interface, and it resides in lib/if2ip.c.
Curl_ftpsendf() is used for sending FTP commands to the remote server. It was
made a separate function to prevent us programmers from forgetting that they
must be CRLF terminated. They must also be sent in one single write() to make
firewalls and similar happy.
Kerberos
The kerberos support is mainly in lib/krb4.c and lib/security.c.
TELNET
Telnet is implemented in lib/telnet.c.
FILE
The file:// protocol is dealt with in lib/file.c.
LDAP
Everything LDAP is in lib/ldap.c.
GENERAL
URL encoding and decoding, called escaping and unescaping in the source code,
is found in lib/escape.c.
While transfering data in Transfer() a few functions might get
used. curl_getdate() in lib/getdate.c is for HTTP date comparisons (and
more).
lib/getenv.c offers curl_getenv() which is for reading environment variables
in a neat platform independent way. That's used in the client, but also in
lib/url.c when checking the proxy environment variables. Note that contrary
to the normal unix getenv(), this returns an allocated buffer that must be
free()ed after use.
lib/netrc.c holds the .netrc parser
lib/timeval.c features replacement functions for systems that don't have
gettimeofday() and a few support functions for timeval convertions.
A function named curl_version() that returns the full curl version string is
found in lib/version.c.
If authentication is requested but no password is given, a getpass_r() clone
exists in lib/getpass.c. libcurl offers a custom callback that can be used
instead of this, but it doesn't change much to us.
Persistent Connections
======================
The persistent connection support in libcurl requires some considerations on
how to do things inside of the library.
o The 'SessionHandle' struct returned in the curl_easy_init() call must never
hold connection-oriented data. It is meant to hold the root data as well as
all the options etc that the library-user may choose.
o The 'SessionHandle' struct holds the "connection cache" (an array of
pointers to 'connectdata' structs). There's one connectdata struct
allocated for each connection that libcurl knows about.
o This also enables the 'curl handle' to be reused on subsequent transfers,
something that was illegal before libcurl 7.7.
o When we are about to perform a transfer with curl_easy_perform(), we first
check for an already existing connection in the cache that we can use,
otherwise we create a new one and add to the cache. If the cache is full
already when we add a new connection, we close one of the present ones. We
select which one to close dependent on the close policy that may have been
previously set.
o When the transfer operation is complete, we try to leave the connection
open. Particular options may tell us not to, and protocols may signal
closure on connections and then we don't keep it open of course.
o When curl_easy_cleanup() is called, we close all still opened connections.
You do realize that the curl handle must be re-used in order for the
persistent connections to work.
Library Symbols
===============
All symbols used internally in libcurl must use a 'Curl_' prefix if they're
used in more than a single file. Single-file symbols must be made static.
Public ("exported") symbols must use a 'curl_' prefix. (There are exceptions,
but they are to be changed to follow this pattern in future versions.)
Return Codes and Informationals
===============================
I've made things simple. Almost every function in libcurl returns a CURLcode,
that must be CURLE_OK if everything is OK or otherwise a suitable error code
as the curl/curl.h include file defines. The very spot that detects an error
must use the Curl_failf() function to set the human-readable error
description.
In aiding the user to understand what's happening and to debug curl usage, we
must supply a fair amount of informational messages by using the Curl_infof()
function. Those messages are only displayed when the user explicitly asks for
them. They are best used when revealing information that isn't otherwise
obvious.
Client
======
main() resides in src/main.c together with most of the client code.
src/hugehelp.c is automatically generated by the mkhelp.pl perl script to
display the complete "manual" and the src/urlglob.c file holds the functions
used for the URL-"globbing" support. Globbing in the sense that the {} and []
expansion stuff is there.
The client mostly messes around to setup its 'config' struct properly, then
it calls the curl_easy_*() functions of the library and when it gets back
control after the curl_easy_perform() it cleans up the library, checks status
and exits.
When the operation is done, the ourWriteOut() function in src/writeout.c may
be called to report about the operation. That function is using the
curl_easy_getinfo() function to extract useful information from the curl
session.
Recent versions may loop and do all this several times if many URLs were
specified on the command line or config file.
Memory Debugging
================
The file lib/memdebug.c contains debug-versions of a few functions. Functions
such as malloc, free, fopen, fclose, etc that somehow deal with resources
that might give us problems if we "leak" them. The functions in the memdebug
system do nothing fancy, they do their normal function and then log
information about what they just did. The logged data can then be analyzed
after a complete session,
memanalyze.pl is the perl script present only present in CVS (not part of the
release archives) that analyzes a log file generated by the memdebug
system. It detects if resources are allocated but never freed and other kinds
of errors related to resource management.
Use -DMALLOCDEBUG when compiling to enable memory debugging, this is also
switched on by running configure with --enable-debug.
Test Suite
==========
Since November 2000, a test suite has evolved. It is placed in its own
subdirectory directly off the root in the curl archive tree, and it contains
a bunch of scripts and a lot of test case data.
The main test script is runtests.pl that will invoke the two servers
httpserver.pl and ftpserver.pl before all the test cases are performed. The
test suite currently only runs on unix-like platforms.
You'll find a complete description of the test case data files in the
tests/README file.
The test suite automatically detects if curl was built with the memory
debugging enabled, and if it was it will detect memory leaks too.
Building Releases
=================
There's no magic to this. When you consider everything stable enough to be
released, run the 'maketgz' script (using 'make distcheck' will give you a
pretty good view on the status of the current sources). maketgz prompts for
version number of the client and the library before it creates a release
archive. maketgz uses 'make dist' for the actual archive building, why you
need to fill in the Makefile.am files properly for which files that should
be included in the release archives.

91
docs/KNOWN_BUGS Normal file
View File

@@ -0,0 +1,91 @@
These are problems known to exist at the time of this release. Feel free to
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!
* IPv6 support on AIX 4.3.3 doesn't work due to a missing sockaddr_storage
struct. It has been reported to work on AIX 5.1 though.
* Running 'make test' on Mac OS X gives 4 errors. This seems to be related
to some kind of libtool problem:
http://curl.haxx.se/mail/archive-2002-03/0029.html and
http://curl.haxx.se/mail/archive-2002-03/0033.html
* libcurl does not deal nicely with files larger than 2GB
* GOPHER transfers seem broken
* configure --disable-http is not fully supported. All other protocols seem
to work to disable.
* The -m parameter does not work when using telnet with curl on Windows.
* If a HTTP server responds to a HEAD request and includes a body (thus
violating the RFC2616), curl won't wait to read the response but just stop
reading and return back. If a second request (let's assume a GET) is then
immediately made to the same server again, the connection will be re-used
fine of course, and the second request will be sent off but when the
response is to get read, the previous response-body is what curl will read
and havoc is what happens.
More details on this is found in this libcurl mailing list thread:
http://curl.haxx.se/mail/lib-2002-08/0000.html
------------------------------------------------------------------------------
Q: My program blows up when I run lots of curl_easy_perform() calls on a
single thread
Q: My program dies when a single thread re-enters the win32 select() call
via curl_easy_perform()
Q: --- add your own flavour here ---
Single Threaded Re-Entracy
--------------------------
There is a glitch / trick to using cURL on Win32 related to re-entrancy.
This experience was gained on verion 7.9.4 using Windows NT SP3 in a banking
environment (just in case you wanted to know).
If you have already called curl_easy_perform(), and *somehow* you cause your
single thread of execution to make another call to curl_easy_perform() - the
windows socket() call used to create a new socket for the second connection
can return with 10044 / 10043 error codes.
The WSA errors we experienced are:
WSAEPROTONOSUPPORT
(10043)
Protocol not supported.
The requested protocol has not been configured into the system, or no
implementation for it exists. For example, a socket call requests a
SOCK_DGRAM socket, but specifies a stream protocol.
WSAESOCKTNOSUPPORT
(10044)
Socket type not supported.
The support for the specified socket type does not exist in this address
family. For example, the optional type SOCK_RAW might be selected in a
socket call, and the implementation does not support SOCK_RAW sockets at
all.
We have experienced this by creating a timer that ticks every 20ms, and on
the tick making a curl_easy_perform() call. The call usually completed in
about 300ms. And we expected (before this test) that the timer would NOT be
fired during a call to curl_easy_perform(), howvever, while the first
curl_easy_perform() is running a tick *is* fired by the windows API somehow,
and we then call curl_easy_perform() again - thus single threaded
re-entrancy is achieved.
Notes:
* We made sure that a new CURL structure was being used for each
curl_easy_perform() request, and that the curl_global_init() had been called
beforehand.
* I'm happy to answer any questions about this problem to try to track it
down.
* Once the socket() call started failing, there is no hope - it never works
again.
* Slowing the timer down to give each request enough time to complete solves
this problem completely.
If anyone has the source code to the WinNT implementation of socket() and
can figure out WHY this can occur, more tracing can be performed.
John Clayton <John.Clayton at barclayscapital.com>

View File

@@ -3,7 +3,7 @@ LATEST VERSION
You always find news about what's going on as well as the latest versions
from the curl web pages, located at:
http://curl.haxx.nu
http://curl.haxx.se
SIMPLE USAGE
@@ -15,22 +15,26 @@ SIMPLE USAGE
curl ftp://ftp.funet.fi/README
Get a gopher document from funet's gopher server:
curl gopher://gopher.funet.fi
Get a web page from a server using port 8000:
curl http://www.weirdserver.com:8000/
Get a list of the root directory of an FTP site:
curl ftp://ftp.fts.frontec.se/
curl ftp://cool.haxx.se/
Get a gopher document from funet's gopher server:
curl gopher://gopher.funet.fi
Get the definition of curl from a dictionary:
curl dict://dict.org/m:curl
Fetch two documents at once:
curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/
DOWNLOAD TO A FILE
Get a web page and store in a local file:
@@ -43,6 +47,10 @@ DOWNLOAD TO A FILE
curl -O http://www.netscape.com/index.html
Fetch two files and store them with their remote names:
curl -O www.haxx.se/index.html -O curl.haxx.se/download.html
USING PASSWORDS
FTP
@@ -124,7 +132,7 @@ UPLOADING
Upload all data on stdin to a specified ftp site:
curl -t ftp://ftp.upload.com/myfile
curl -T - ftp://ftp.upload.com/myfile
Upload data from a specified file, login with user and password:
@@ -139,15 +147,17 @@ UPLOADING
curl -T localfile -a ftp://ftp.upload.com/remotefile
NOTE: Curl does not support ftp upload through a proxy! The reason for this
is simply that proxies are seldomly configured to allow this and that no
author has supplied code that makes it possible!
Curl also supports ftp upload through a proxy, but only if the proxy is
configured to allow that kind of tunneling. If it does, you can run curl in
a fashion similar to:
curl --proxytunnel -x proxy:port -T localfile ftp.upload.com
HTTP
Upload all data on stdin to a specified http site:
curl -t http://www.upload.com/myfile
curl -T - http://www.upload.com/myfile
Note that the http server must've been configured to accept PUT before this
can be done successfully.
@@ -156,13 +166,21 @@ UPLOADING
VERBOSE / DEBUG
If curl fails where it isn't supposed to, if the servers don't let you
in, if you can't understand the responses: use the -v flag to get VERBOSE
fetching. Curl will output lots of info and all data it sends and
receives in order to let the user see all client-server interaction.
If curl fails where it isn't supposed to, if the servers don't let you in,
if you can't understand the responses: use the -v flag to get verbose
fetching. Curl will output lots of info and what it sends and receives in
order to let the user see all client-server interaction (but it won't show
you the actual data).
curl -v ftp://ftp.upload.com/
To get even more details and information on what curl does, try using the
--trace or --trace-ascii options with a given file name to log to, like
this:
curl --trace trace.txt www.haxx.se
DETAILED INFORMATION
Different protocols provide different ways of getting detailed information
@@ -176,9 +194,9 @@ DETAILED INFORMATION
-D/--dump-header option when getting files from both FTP and HTTP, and it
will then store the headers in the specified file.
Store the HTTP headers in a separate file:
Store the HTTP headers in a separate file (headers.txt in the example):
curl --dump-header headers.txt curl.haxx.nu
curl --dump-header headers.txt curl.haxx.se
Note that headers stored in a separate file can be very useful at a later
time if you want curl to use cookies sent by the server. More about that in
@@ -194,38 +212,73 @@ POST (HTTP)
curl -d "name=Rafael%20Sagula&phone=3320780" \
http://www.where.com/guest.cgi
How to post a form with curl, lesson #1:
Dig out all the <input> tags in the form that you want to fill in. (There's
a perl program called formfind.pl on the curl site that helps with this).
If there's a "normal" post, you use -d to post. -d takes a full "post
string", which is in the format
<variable1>=<data1>&<variable2>=<data2>&...
The 'variable' names are the names set with "name=" in the <input> tags, and
the data is the contents you want to fill in for the inputs. The data *must*
be properly URL encoded. That means you replace space with + and that you
write weird letters with %XX where XX is the hexadecimal representation of
the letter's ASCII code.
Example:
(page located at http://www.formpost.com/getthis/
<form action="post.cgi" method="post">
<input name=user size=10>
<input name=pass type=password size=10>
<input name=id type=hidden value="blablabla">
<input name=ding value="submit">
</form>
We want to enter user 'foobar' with password '12345'.
To post to this, you enter a curl command line like:
curl -d "user=foobar&pass=12345&id=blablabla&dig=submit" (continues)
http://www.formpost.com/getthis/post.cgi
While -d uses the application/x-www-form-urlencoded mime-type, generally
understood by CGI's and similar, curl also supports the more capable
multipart/form-data type. This latter type supports things like file upload.
-F accepts parameters like -F "name=contents". If you want the contents to
be read from a file, use <@filename> as contents. When specifying a file,
you can also specify which content type the file is, by appending
';type=<mime type>' to the file name. You can also post contents of several
files in one field. So that the field name 'coolfiles' can be sent three
files with different content types in a manner similar to:
you can also specify the file content type by appending ';type=<mime type>'
to the file name. You can also post the contents of several files in one
field. For example, the field name 'coolfiles' is used to send three files,
with different content types using the following syntax:
curl -F "coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html" \
http://www.post.com/postit.cgi
If content-type is not specified, curl will try to guess from the extension
(it only knows a few), or use the previously specified type (from an earlier
file if several files are specified in a list) or finally using the default
type 'text/plain'.
If the content-type is not specified, curl will try to guess from the file
extension (it only knows a few), or use the previously specified type (from
an earlier file if several files are specified in a list) or else it will
using the default type 'text/plain'.
Emulate a fill-in form with -F. Let's say you fill in three fields in a
form. One field is a file name which to post, one field is your name and one
field is a file description. We want to post the file we have written named
"cooltext.txt". To let curl do the posting of this data instead of your
favourite browser, you have to check out the HTML of the form page to get to
know the names of the input fields. In our example, the input field names are
'file', 'yourname' and 'filedescription'.
favourite browser, you have to read the HTML source of the form page and
find the names of the input fields. In our example, the input field names
are 'file', 'yourname' and 'filedescription'.
curl -F "file=@cooltext.txt" -F "yourname=Daniel" \
-F "filedescription=Cool text file with cool text inside" \
http://www.post.com/postit.cgi
So, to send two files in one post you can do it in two ways:
To send two files in one post you can do it in two ways:
1. Send multiple files in a single "field" with a single field name:
@@ -235,16 +288,18 @@ POST (HTTP)
curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif"
REFERER
REFERRER
A HTTP request has the option to include information about which address
that referred to actual page, and curl allows the user to specify that
referrer to get specified on the command line. It is especially useful to
that referred to actual page. Curl allows you to specify the
referrer to be used on the command line. It is especially useful to
fool or trick stupid servers or CGI scripts that rely on that information
being available or contain certain data.
curl -e www.coolsite.com http://www.showme.com/
NOTE: The referer field is defined in the HTTP spec to be a full URL.
USER AGENT
A HTTP request has the option to include information about the browser
@@ -303,16 +358,31 @@ COOKIES
curl -b headers www.example.com
While saving headers to a file is a working way to store cookies, it is
however error-prone and not the prefered way to do this. Instead, make curl
save the incoming cookies using the well-known netscape cookie format like
this:
curl -c cookies.txt www.example.com
Note that by specifying -b you enable the "cookie awareness" and with -L
you can make curl follow a location: (which often is used in combination
with cookies). So that if a site sends cookies and a location, you can
use a non-existing file to trig the cookie awareness like:
use a non-existing file to trigger the cookie awareness like:
curl -L -b empty-file www.example.com
curl -L -b empty.txt www.example.com
The file to read cookies from must be formatted using plain HTTP headers OR
as netscape's cookie file. Curl will determine what kind it is based on the
file contents.
file contents. In the above command, curl will parse the header and store
the cookies received from www.example.com. curl will send to the server the
stored cookies which match the request as it follows the location. The
file "empty.txt" may be a non-existant file.
Alas, to both read and write cookies from a netscape cookie file, you can
set both -b and -c to use the same file:
curl -b cookies.txt -c cookies.txt www.example.com
PROGRESS METER
@@ -345,35 +415,66 @@ PROGRESS METER
SPEED LIMIT
Curl offers the user to set conditions regarding transfer speed that must
be met to let the transfer keep going. By using the switch -y and -Y you
can make curl abort transfers if the transfer speed doesn't exceed your
given lowest limit for a specified time.
Curl allows the user to set the transfer speed conditions that must be met
to let the transfer keep going. By using the switch -y and -Y you
can make curl abort transfers if the transfer speed is below the specified
lowest limit for a specified time.
To let curl abandon downloading this page if its slower than 3000 bytes per
To have curl abort the download if the speed is slower than 3000 bytes per
second for 1 minute, run:
curl -y 3000 -Y 60 www.far-away-site.com
curl -Y 3000 -y 60 www.far-away-site.com
This can very well be used in combination with the overall time limit, so
that the above operatioin must be completed in whole within 30 minutes:
curl -m 1800 -y 3000 -Y 60 www.far-away-site.com
curl -m 1800 -Y 3000 -y 60 www.far-away-site.com
Forcing curl not to transfer data faster than a given rate is also possible,
which might be useful if you're using a limited bandwidth connection and you
don't want your transfer to use all of it (sometimes referred to as
"bandwith throttle").
Make curl transfer data no faster than 10 kilobytes per second:
curl --limit-rate 10K www.far-away-site.com
or
curl --limit-rate 10240 www.far-away-site.com
Or prevent curl from uploading data faster than 1 megabyte per second:
curl -T upload --limit-rate 1M ftp://uploadshereplease.com
When using the --limit-rate option, the transfer rate is regulated on a
per-second basis, which will cause the total transfer speed to become lower
than the given number. Sometimes of course substantially lower, if your
transfer stalls during periods.
CONFIG FILE
Curl automatically tries to read the .curlrc file (or _curlrc file on win32
systems) from the user's home dir on startup. The config file should be
made up with normal command line switches. 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.
systems) from the user's home dir on startup.
The config file could be made up with normal command line switches, but you
can also specify the long options without the dashes to make it more
readable. You can separate the options and the parameter with spaces, or
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
parameter within double quotes ("). Within those quotes, you specify a
quote as \".
NOTE: You must specify options and their arguments on the same line.
Example, set default time out and proxy in a config file:
# We want a 30 minute timeout:
-m 1800
# ... and we use a proxy for all accesses:
-x proxy.our.domain.com:8080
proxy = proxy.our.domain.com:8080
White spaces ARE significant at the end of lines, but all white spaces
leading up to the first characters of each line are ignored.
@@ -387,14 +488,14 @@ CONFIG FILE
without URL by making a config file similar to:
# default url to get
http://help.with.curl.com/curlhelp.html
url = "http://help.with.curl.com/curlhelp.html"
You can specify another config file to be read by using the -K/--config
flag. If you set config file name to "-" it'll read the config from stdin,
which can be handy if you want to hide options from being visible in process
tables etc:
echo "-u user:passwd" | curl -K - http://that.secret.site.com
echo "user = user:passwd" | curl -K - http://that.secret.site.com
EXTRA HEADERS
@@ -407,9 +508,13 @@ EXTRA HEADERS
curl -H "X-you-and-me: yes" www.love.com
This can also be useful in case you want curl to send a different text in
a header than it normally does. The -H header you specify then replaces the
header curl would normally send.
This can also be useful in case you want curl to send a different text in a
header than it normally does. The -H header you specify then replaces the
header curl would normally send. If you replace an internal header with an
empty one, you prevent that header from being sent. To prevent the Host:
header from being used:
curl -H "Host:" www.server.com
FTP and PATH NAMES
@@ -445,13 +550,14 @@ FTP and firewalls
connect to the client on the given (as parameters to the PORT command) IP
number and port.
The -P flag to curl allows for different options. Your machine may have
The -P flag to curl supports a few different options. Your machine may have
several IP-addresses and/or network interfaces and curl allows you to select
which of them to use. Default address can also be used:
curl -P - ftp.download.com
Download with PORT but use the IP address of our 'le0' interface:
Download with PORT but use the IP address of our 'le0' interface (this does
not work on windows):
curl -P le0 ftp.download.com
@@ -459,6 +565,16 @@ FTP and firewalls
curl -P 192.168.0.10 ftp.download.com
NETWORK INTERFACE
Get a web page from a server using a specified port for the interface:
curl --interface eth0:1 http://www.netscape.com/
or
curl --interface 192.168.1.10 http://www.netscape.com/
HTTPS
Secure HTTP requires SSL libraries to be installed and used when curl is
@@ -473,7 +589,7 @@ HTTPS
from sites that require valid certificates. The only drawback is that the
certificate needs to be in PEM-format. PEM is a standard and open format to
store certificates with, but it is not used by the most commonly used
browsers (Netscape and MSEI both use the so called PKCS#12 format). If you
browsers (Netscape and MSIE both use the so called PKCS#12 format). If you
want curl to use the certificates you use with your (favourite) browser, you
may need to download/compile a converter that can convert your browser's
formatted certificates to PEM formatted ones. This kind of converter is
@@ -492,13 +608,33 @@ HTTPS
Many older SSL-servers have problems with SSLv3 or TLS, that newer versions
of OpenSSL etc is using, therefore it is sometimes useful to specify what
SSL-version curl should use. Use -3 or -2 to specify that exact SSL version
to use:
SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL
version to use (for SSLv3, SSLv2 or TLSv1 respectively):
curl -2 https://secure.site.com/
Otherwise, curl will first attempt to use v3 and then v2.
To use OpenSSL to convert your favourite browser's certificate into a PEM
formatted one that curl can use, do something like this (assuming netscape,
but IE is likely to work similarly):
You start with hitting the 'security' menu button in netscape.
Select 'certificates->yours' and then pick a certificate in the list
Press the 'export' button
enter your PIN code for the certs
select a proper place to save it
Run the 'openssl' application to convert the certificate. If you cd to the
openssl installation, you can do it like:
# ./apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile]
RESUMING FILE TRANSFERS
To continue a file transfer where it was previously aborted, curl supports
@@ -506,20 +642,20 @@ RESUMING FILE TRANSFERS
Continue downloading a document:
curl -c -o file ftp://ftp.server.com/path/file
curl -C - -o file ftp://ftp.server.com/path/file
Continue uploading a document(*1):
curl -c -T file ftp://ftp.server.com/path/file
curl -C - -T file ftp://ftp.server.com/path/file
Continue downloading a document from a web server(*2):
curl -c -o file http://www.server.com/
curl -C - -o file http://www.server.com/
(*1) = This requires that the ftp server supports the non-standard command
SIZE. If it doesn't, curl will say so.
(*2) = This requires that the wb server supports at least HTTP/1.1. If it
(*2) = This requires that the web server supports at least HTTP/1.1. If it
doesn't, curl will say so.
TIME CONDITIONS
@@ -573,8 +709,14 @@ LDAP
and offer ldap:// support.
LDAP is a complex thing and writing an LDAP query is not an easy task. I do
advice you to dig up the syntax description for that elsewhere, RFC 1959 if
no other place is better.
advice you to dig up the syntax description for that elsewhere. Two places
that might suit you are:
Netscape's "Netscape Directory SDK 3.0 for C Programmer's Guide Chapter 10:
Working with LDAP URLs":
http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm
RFC 2255, "The LDAP URL Format" http://www.rfc-editor.org/rfc/rfc2255.txt
To show you an example, this is now I can get all people from my local LDAP
server that has a certain sub-domain in their email address:
@@ -588,7 +730,7 @@ ENVIRONMENT VARIABLES
Curl reads and understands the following environment variables:
HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
http_proxy, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
They should be set for protocol-specific proxies. General proxy should be
set with
@@ -615,13 +757,13 @@ NETRC
passwords, so therefor most unix programs won't read this file unless it is
only readable by yourself (curl doesn't care though).
Curl supports .netrc files if told so (using the -n/--netrc option). This is
not restricted to only ftp, but curl can use it for all protocols where
authentication is used.
Curl supports .netrc files if told so (using the -n/--netrc and
--netrc-optional options). This is not restricted to only ftp,
but curl can use it for all protocols where authentication is used.
A very simple .netrc file could look something like:
machine curl.haxx.nu login iamdaniel password mysecret
machine curl.haxx.se login iamdaniel password mysecret
CUSTOM OUTPUT
@@ -634,16 +776,104 @@ CUSTOM OUTPUT
curl -w 'We downloaded %{size_download} bytes\n' www.download.com
MAILING LIST
KERBEROS4 FTP TRANSFER
We have an open mailing list to discuss curl, its development and things
relevant to this.
Curl supports kerberos4 for FTP transfers. You need the kerberos package
installed and used at curl build time for it to be used.
To subscribe, mail curl-request@contactor.se with "subscribe <your email
address>" in the body.
First, get the krb-ticket the normal way, like with the kauth tool. Then use
curl in way similar to:
To post to the list, mail curl@contactor.se.
curl --krb4 private ftp://krb4site.com -u username:fakepwd
To unsubcribe, mail curl-request@contactor.se with "unsubscribe <your
subscribed email address>" in the body.
There's no use for a password on the -u switch, but a blank one will make
curl ask for one and you already entered the real password to kauth.
TELNET
The curl telnet support is basic and very easy to use. Curl passes all data
passed to it on stdin to the remote server. Connect to a remote telnet
server using a command line similar to:
curl telnet://remote.server.com
And enter the data to pass to the server on stdin. The result will be sent
to stdout or to the file you specify with -o.
You might want the -N/--no-buffer option to switch off the buffered output
for slow connections or similar.
Pass options to the telnet protocol negotiation, by using the -t option. To
tell the server we use a vt100 terminal, try something like:
curl -tTTYPE=vt100 telnet://remote.server.com
Other interesting options for it -t include:
- XDISPLOC=<X display> Sets the X display location.
- NEW_ENV=<var,val> Sets an environment variable.
NOTE: the telnet protocol does not specify any way to login with a specified
user and password so curl can't do that automatically. To do that, you need
to track when the login prompt is received and send the username and
password accordingly.
PERSISTANT CONNECTIONS
Specifying multiple files on a single command line will make curl transfer
all of them, one after the other in the specified order.
libcurl will attempt to use persistant connections for the transfers so that
the second transfer to the same host can use the same connection that was
already initiated and was left open in the previous transfer. This greatly
decreases connection time for all but the first transfer and it makes a far
better use of the network.
Note that curl cannot use persistant connections for transfers that are used
in subsequence curl invokes. Try to stuff as many URLs as possible on the
same command line if they are using the same host, as that'll make the
transfers faster. If you use a http proxy for file transfers, practicly
all transfers will be persistant.
Persistant connections were introduced in curl 7.7.
MAILING LISTS
For your convenience, we have several open mailing lists to discuss curl,
its development and things relevant to this. Get all info at
http://curl.haxx.se/mail/. The lists available are:
curl-users
Users of the command line tool. How to use it, what doesn't work, new
features, related tools, questions, news, installations, compilations,
running, porting etc.
curl-library
Developers using or developing libcurl. Bugs, extensions, improvements.
curl-announce
Low-traffic. Only announcements of new public versions.
curl-and-PHP
Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP
with a curl angle.
curl-commits
Receives notifications on all CVS commits done to the curl source module.
This can become quite a large amount of mails during intense development,
be aware. This is for us who like email...
curl-www-commits
Receives notifications on all CVS commits done to the curl www module
(basicly the web site). This can become quite a large amount of mails
during intense changing, be aware. This is for us who like email...
Please direct curl questions, feature requests and trouble reports to one of
these mailing lists instead of mailing any individual.

48
docs/Makefile.am Normal file
View File

@@ -0,0 +1,48 @@
#
# $Id$
#
AUTOMAKE_OPTIONS = foreign no-dependencies
man_MANS = \
curl.1 \
curl-config.1
HTMLPAGES = \
curl.html \
curl-config.html \
index.html
PDFPAGES = \
curl.pdf \
curl-config.pdf
SUBDIRS = examples libcurl
EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS \
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS \
VERSIONS KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) \
HISTORY INSTALL libcurl-the-guide $(PDFPAGES)
MAN2HTML= gnroff -man $< | man2html >$@
SUFFIXES = .1 .3 .html .pdf
html: $(HTMLPAGES)
cd libcurl; make html
.3.html:
$(MAN2HTML)
.1.html:
$(MAN2HTML)
MAN2PDF = groff -Tps -man curl.1 $< >$@
pdf:
for file in $(man_MANS); do \
foo=`echo $$file | sed -e 's/\.[0-9]$$//g'`; \
groff -Tps -man $$file >$$foo.ps; \
ps2pdf $$foo.ps $$foo.pdf; \
done
cd libcurl; make pdf

22
docs/README.win32 Normal file
View File

@@ -0,0 +1,22 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
README.win32
Read the README file first.
Curl has been compiled, built and run on all sorts of Windows and win32
systems. While not being the main develop target, a fair share of curl users
are win32-based.
The unix-style man pages are tricky to read on windows, so therefore are all
those pages also converted to HTML and those are also included in the
release archives.
The main curl.1 man page is also "built-in" in the command line tool. Use a
command line similar to this in order to extract a separate text file:
curl -M >manual.txt

124
docs/RESOURCES Normal file
View File

@@ -0,0 +1,124 @@
_ _ ____ _
Project ___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
This document lists documents that specify standards used by curl, software
that extends curl, web pages with similar utilities and information pages that
describe some of the tools that we use to build/compile/develop curl.
Standards
---------
RFC 959 - Defines how FTP works
RFC 1635 - How to Use Anonymous FTP
RFC 1738 - Uniform Resource Locators
RFC 1777 - defines the LDAP protocol
RFC 1808 - Relative Uniform Resource Locators
RFC 1867 - Form-based File Upload in HTML
RFC 1950 - ZLIB Compressed Data Format Specification
RFC 1951 - DEFLATE Compressed Data Format Specification
RFC 1952 - gzip compression format
RFC 1959 - LDAP URL syntax
RFC 2045-2049 - Everything you need to know about MIME! (needed for form
based upload)
RFC 2068 - HTTP 1.1 (obsoleted by RFC 2616)
RFC 2109 - HTTP State Management Mechanism (cookie stuff)
- Also, read Netscape's specification at
http://curl.haxx.se/rfc/cookie_spec.html
RFC 2183 - The Content-Disposition Header Field
RFC 2229 - A Dictionary Server Protocol
RFC 2255 - Newer LDAP URL syntax document.
RFC 2231 - MIME Parameter Value and Encoded Word Extensions:
Character Sets, Languages, and Continuations
RFC 2388 - "Returning Values from Forms: multipart/form-data"
Use this as an addition to the RFC1867
RFC 2396 - "Uniform Resource Identifiers: Generic Syntax and Semantics" This
one obsoletes RFC 1738, but since RFC 1738 is often mentioned
I've left it in this list.
RFC 2428 - FTP Extensions for IPv6 and NATs
RFC 2577 - FTP Security Considerations
RFC 2616 - HTTP 1.1, the latest
RFC 2617 - HTTP Authentication
RFC 2718 - Guidelines for new URL Schemes
RFC 2732 - Format for Literal IPv6 Addresses in URL's
RFC 2818 - HTTP Over TLS (TLS is the successor to SSL)
RFC 2964 - Use of HTTP State Management
RFC 2965 - HTTP State Management Mechanism. Cookies. Obsoletes RFC2109
Compilers
---------
MingW32 - http://www.mingw.org/
gcc - http://www.gnu.org/software/gcc/gcc.html
Software
--------
OpenSSL - http://www.openssl.org/
OpenLDAP - http://www.openldap.org/
zlib - http://www.cdrom.com/pub/infozip/zlib/
Similar Tools
-------------
wget - http://sunsite.dk/wget/
snarf - http://www.xach.com/snarf/
lynx - http://lynx.browser.org/ (well at least when -dump is used)
swebget - http://www.uni-hildesheim.de/~smol0075/swebget/
Kermit - http://www.columbia.edu/kermit/ftpclient
Pavuk - http://www.idata.sk/~ondrej/pavuk/
httpr - http://zwolak.dhs.org/httpr/
puf - http://www.inf.tu-dresden.de/~ob6/sw/puf.html
Related Software
----------------
ftpparse - http://cr.yp.to/ftpparse.html parses FTP LIST responses
autoconf - http://www.gnu.org/software/autoconf/autoconf.html
automake - http://www.gnu.org/software/automake/automake.html
bison - http://www.gnu.org/software/bison/bison.html
gzip - http://www.gnu.org/software/gzip/gzip.html
tar - http://www.gnu.org/software/tar/tar.html
libtool - http://www.gnu.org/software/libtool/libtool.html

92
docs/THANKS Normal file
View File

@@ -0,0 +1,92 @@
This project has been alive for several years. Countless people have provided
feedback that have improved curl. Here follows a (incomplete) list of people
that have contributed with non-trivial parts:
- Daniel Stenberg <daniel@haxx.se>
- Rafael Sagula <sagula@inf.ufrgs.br>
- Sampo Kellomaki <sampo@iki.fi>
- Linas Vepstas <linas@linas.org>
- Bjorn Reese <breese@mail1.stofanet.dk>
- Johan Anderson <johan@homemail.com>
- Kjell Ericson <Kjell.Ericson@haxx.se>
- Troy Engel <tengel@sonic.net>
- Ryan Nelson <ryan@inch.com>
- Bj<42>rn Stenberg <bjorn@haxx.se>
- Angus Mackay <amackay@gus.ml.org>
- Eric Young <eay@cryptsoft.com>
- Simon Dick <simond@totally.irrelevant.org>
- Oren Tirosh <oren@monty.hishome.net>
- Steven G. Johnson <stevenj@alum.mit.edu>
- Gilbert Ramirez Jr. <gram@verdict.uthscsa.edu>
- Andr<64>s Garc<72>a <ornalux@redestb.es>
- Douglas E. Wegscheid <wegscd@whirlpool.com>
- Mark Butler <butlerm@xmission.com>
- Eric Thelin <eric@generation-i.com>
- Marc Boucher <marc@mbsi.ca>
- Greg Onufer <Greg.Onufer@Eng.Sun.COM>
- Doug Kaufman <dkaufman@rahul.net>
- David Eriksson <david@2good.com>
- Ralph Beckmann <rabe@uni-paderborn.de>
- T. Yamada <tai@imasy.or.jp>
- Lars J. Aas <larsa@sim.no>
- J<>rn Hartroth <Joern.Hartroth@computer.org>
- Matthew Clarke <clamat@van.maves.ca>
- Linus Nielsen Feltzing <linus@haxx.se>
- Felix von Leitner <felix@convergence.de>
- Dan Zitter <dzitter@zitter.net>
- Jongki Suwandi <Jongki.Suwandi@eng.sun.com>
- Chris Maltby <chris@aurema.com>
- Ron Zapp <rzapper@yahoo.com>
- Paul Marquis <pmarquis@iname.com>
- Ellis Pritchard <ellis@citria.com>
- Damien Adant <dams@usa.net>
- Chris <cbayliss@csc.come>
- Marco G. Salvagno <mgs@whiz.cjb.net>
- Paul Marquis <pmarquis@iname.com>
- David LeBlanc <dleblanc@qnx.com>
- Rich Gray at Plus Technologies
- Luong Dinh Dung <u8luong@lhsystems.hu>
- Torsten Foertsch <torsten.foertsch@gmx.net>
- Kristian K<>hntopp <kris@koehntopp.de>
- Fred Noz <FNoz@siac.com>
- Caolan McNamara <caolan@csn.ul.ie>
- Albert Chin-A-Young <china@thewrittenword.com>
- Stephen Kick <skick@epicrealm.com>
- Martin Hedenfalk <mhe@stacken.kth.se>
- Richard Prescott <rip at step.polymtl.ca>
- Jason S. Priebe <priebe@wral-tv.com>
- T. Bharath <TBharath@responsenetworks.com>
- Alexander Kourakos <awk@users.sourceforge.net>
- James Griffiths <griffiths_james@yahoo.com>
- Loic Dachary <loic@senga.org>
- Robert Weaver <robert.weaver@sabre.com>
- Ingo Ralf Blum <ingoralfblum@ingoralfblum.com>
- Jun-ichiro itojun Hagino <itojun@iijlab.net>
- Frederic Lepied <flepied@mandrakesoft.com>
- Georg Horn <horn@koblenz-net.de>
- Cris Bailiff <c.bailiff@awayweb.com>
- Sterling Hughes <sterling@designmultimedia.com>
- S. Moonesamy
- Ingo Wilken <iw@WWW.Ecce-Terram.DE>
- Pawel A. Gajda <mis@k2.net.pl>
- Patrick Bihan-Faou
- Nico Baggus <Nico.Baggus@mail.ing.nl>
- Sergio Ballestrero
- Andrew Francis <locust@familyhealth.com.au>
- Tomasz Lacki <Tomasz.Lacki@primark.pl>
- Georg Huettenegger <georg@ist.org>
- John Lask <johnlask@hotmail.com>
- Eric Lavigne <erlavigne@wanadoo.fr>
- Marcus Webster <marcus.webster@phocis.com>
- G<>tz Babin-Ebell <babin<69>ebell@trustcenter.de>
- Andreas Damm <andreas-sourceforge@radab.org>
- Jacky Lam <sylam@emsoftltd.com>
- James Gallagher <jgallagher@gso.uri.edu>
- Kjetil Jacobsen <kjetilja@cs.uit.no>
- Markus F.X.J. Oberhumer <markus@oberhumer.com>
- Miklos Nemeth <mnemeth@kfkisystems.com>
- Kevin Roth <kproth@users.sourceforge.net>
- Ralph Mitchell <rmitchell@eds.com>
- Dan Fandrich <dan@coneharvesters.com>
- Jean-Philippe Barrette-LaPierre <jpb@rrette.com>
- Richard Bramante <RBramante@on.com>

228
docs/TODO Normal file
View File

@@ -0,0 +1,228 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
TODO
Things to do in project cURL. Please tell us what you think, contribute and
send us patches that improve things! Also check the http://curl.haxx.se/dev
web section for various technical development notes.
LIBCURL
* Introduce an interface to libcurl that allows applications to easier get to
know what cookies that are received. Pushing interface that calls a
callback on each received cookie? Querying interface that asks about
existing cookies? We probably need both. Enable applications to modify
existing cookies as well.
* Make content encoding/decoding internally be made using a filter system.
* Introduce another callback interface for upload/download that makes one
less copy of data and thus a faster operation.
[http://curl.haxx.se/dev/no_copy_callbacks.txt]
* Add asynchronous name resolving (http://libdenise.sf.net/). This should be
made to work on most of the supported platforms, or otherwise it isn't
really interesting.
* Data sharing. Tell which easy handles within a multi handle that should
share cookies, connection cache, dns cache, ssl session cache. Full
suggestion found here: http://curl.haxx.se/dev/sharing.txt
* Mutexes. By adding mutex callback support, the 'data sharing' mentioned
above can be made between several easy handles running in different threads
too. The actual mutex implementations will be left for the application to
implement, libcurl will merely call 'getmutex' and 'leavemutex' callbacks.
Part of the sharing suggestion at: http://curl.haxx.se/dev/sharing.txt
* Set the SO_KEEPALIVE socket option to make libcurl notice and disconnect
very long time idle connections.
* Go through the code and verify that libcurl deals with big files >2GB and
>4GB all over. Bug reports (and source reviews) indicate that it doesn't
currently work properly.
* CURLOPT_MAXFILESIZE. Prevent downloads that are larger than the specified
size. CURLE_FILESIZE_EXCEEDED would then be returned. Gautam Mani
requested. That is, the download should not even begin but be aborted
immediately.
* Allow the http_proxy (and other) environment variables to contain user and
password as well in the style: http://proxyuser:proxypasswd@proxy:port
Berend Reitsma suggested.
LIBCURL - multi interface
* Make sure we don't ever loop because of non-blocking sockets return
EWOULDBLOCK or similar. This FTP command sending, the SSL connection etc.
* Make transfers treated more carefully. We need a way to tell libcurl we
have data to write, as the current system expects us to upload data each
time the socket is writable and there is no way to say that we want to
upload data soon just not right now, without that aborting the upload. The
opposite situation should be possible as well, that we tell libcurl we're
ready to accept read data. Today libcurl feeds the data as soon as it is
available for reading, no matter what.
DOCUMENTATION
* More and better
FTP
* Make CURLOPT_FTPPORT support an additional port number on the IP/if/name,
like "blabla:[port]" or possibly even "blabla:[portfirst]-[portsecond]".
* FTP ASCII upload does not follow RFC959 section 3.1.1.1: "The sender
converts the data from an internal character representation to the standard
8-bit NVT-ASCII representation (see the Telnet specification). The
receiver will convert the data from the standard form to his own internal
form."
* Since USERPWD always override the user and password specified in URLs, we
might need another way to specify user+password for anonymous ftp logins.
* An option to only download remote FTP files if they're newer than the local
one is a good idea, and it would fit right into the same syntax as the
already working http dito works (-z). It of course requires that 'MDTM'
works, and it isn't a standard FTP command.
* Add FTPS support with SSL for the data connection too. This should be made
according to the specs written in draft-murray-auth-ftp-ssl-08.txt,
"Securing FTP with TLS"
* --disable-epsv exists, but for active connections we have no --disable-eprt
(or even --disable-lprt).
HTTP
* If the "body" of the POST is < MSS it really aught to be sent along with
the headers. More generally, if the last chunk of the POST body is < MSS,
it should be sent with the previous chunk (which may be the POST headers).
So long as any one send is larger than MSS (or there is only one send when
< MSS :), the Nagle Algorithm will not be a problem on any stack where
Nagle is implemented correctly. (pointed out by Rick Jones)
* Authentication: NTLM. Support for that MS crap called NTLM
authentication. MS proxies and servers sometime require that. Since that
protocol is a proprietary one, it involves reverse engineering and network
sniffing. This should however be a library-based functionality. There are a
few different efforts "out there" to make open source HTTP clients support
this and it should be possible to take advantage of other people's hard
work. http://modntlm.sourceforge.net/ is one. There's a web page at
http://www.innovation.ch/java/ntlm.html that contains detailed reverse-
engineered info.
* RFC2617 compliance, "Digest Access Authentication" A valid test page seem
to exist at: http://hopf.math.nwu.edu/testpage/digest/ And some friendly
person's server source code is available at
http://hopf.math.nwu.edu/digestauth/index.html Then there's the Apache
mod_digest source code too of course. It seems as if Netscape doesn't
support this, and not many servers do. Although this is a lot better
authentication method than the more common "Basic". Basic sends the
password in cleartext over the network, this "Digest" method uses a
challange-response protocol which increases security quite a lot.
* Pipelining. Sending multiple requests before the previous one(s) are done.
This could possibly be implemented using the multi interface to queue
requests and the response data.
TELNET
* Make TELNET work on windows98!
* Reading input (to send to the remote server) on stdin is a crappy solution
for library purposes. We need to invent a good way for the application to
be able to provide the data to send.
* Move the telnet support's network select() loop go away and merge the code
into the main transfer loop. Until this is done, the multi interface won't
work for telnet.
SSL
* If you really want to improve the SSL situation, you should probably have a
look at SSL cafile loading as well - quick traces look to me like these are
done on every request as well, when they should only be necessary once per
ssl context (or once per handle). Even better would be to support the SSL
CAdir option - instead of loading all of the root CA certs for every
request, this option allows you to only read the CA chain that is actually
required (into the cache)...
* Add an interface to libcurl that enables "session IDs" to get
exported/imported. Cris Bailiff said: "OpenSSL has functions which can
serialise the current SSL state to a buffer of your choice, and
recover/reset the state from such a buffer at a later date - this is used
by mod_ssl for apache to implement and SSL session ID cache". This whole
idea might become moot if we enable the 'data sharing' as mentioned in the
LIBCURL label above.
* OpenSSL supports a callback for customised verification of the peer
certificate, but this doesn't seem to be exposed in the libcurl APIs. Could
it be? There's so much that could be done if it were! (brought by Chris
Clark)
* Make curl's SSL layer option capable of using other free SSL libraries.
Such as the Mozilla Security Services
(http://www.mozilla.org/projects/security/pki/nss/) and GNUTLS
(http://gnutls.hellug.gr/)
LDAP
* Look over the implementation. The looping will have to "go away" from the
lib/ldap.c source file and get moved to the main network code so that the
multi interface and friends will work for LDAP as well.
CLIENT
* Add an option that prevents cURL from overwiting existing local files. When
used, and there already is an existing file with the target file name
(either -O or -o), a number should be appended (and increased if already
existing). So that index.html becomes first index.html.1 and then
index.html.2 etc. Jeff Pohlmeyer suggested.
* "curl ftp://site.com/*.txt"
* Several URLs can be specified to get downloaded. We should be able to use
the same syntax to specify several files to get uploaded (using the same
persistant connection), using -T.
* When the multi interface has been implemented and proved to work, the
client could be told to use maximum N simultaneous transfers and then just
make sure that happens. It should of course not make more than one
connection to the same remote host.
* Extending the capabilities of the multipart formposting. How about leaving
the ';type=foo' syntax as it is and adding an extra tag (headers) which
works like this: curl -F "coolfiles=@fil1.txt;headers=@fil1.hdr" where
fil1.hdr contains extra headers like
Content-Type: text/plain; charset=KOI8-R"
Content-Transfer-Encoding: base64
X-User-Comment: Please don't use browser specific HTML code
which should overwrite the program reasonable defaults (plain/text,
8bit...) (Idea brough to us by kromJx)
TEST SUITE
* If perl wasn't found by the configure script, don't attempt to run the
tests but explain something nice why it doesn't.
* Extend the test suite to include more protocols. The telnet could just do
ftp or http operations (for which we have test servers).
* Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
fork()s and it should become even more portable.
* Introduce a test suite that tests libcurl better and more explicitly.
NEXT MAJOR RELEASE
* curl_easy_cleanup() returns void, but curl_multi_cleanup() returns a
CURLMcode. These should be changed to be the same.
* curl_formparse() should be removed

378
docs/TheArtOfHttpScripting Normal file
View File

@@ -0,0 +1,378 @@
Online: http://curl.haxx.se/docs/httpscripting.shtml
Author: Daniel Stenberg <daniel@haxx.se>
Date: October 31, 2001
Version: 0.5
The Art Of Scripting HTTP Requests Using Curl
=============================================
This document will assume that you're familiar with HTML and general
networking.
The possibility to write scripts is essential to make a good computer
system. Unix' capability to be extended by shell scripts and various tools to
run various automated commands and scripts is one reason why it has succeeded
so well.
The increasing amount of applications moving to the web has made "HTTP
Scripting" more frequently requested and wanted. To be able to automatically
extract information from the web, to fake users, to post or upload data to
web servers are all important tasks today.
Curl is a command line tool for doing all sorts of URL manipulations and
transfers, but this particular document will focus on how to use it when
doing HTTP requests for fun and profit. I'll assume that you know how to
invoke 'curl --help' or 'curl --manual' to get basic information about it.
Curl is not written to do everything for you. It makes the requests, it gets
the data, it sends data and it retrieves the information. You probably need
to glue everything together using some kind of script language or repeated
manual invokes.
1. The HTTP Protocol
HTTP is the protocol used to fetch data from web servers. It is a very simple
protocol that is built upon TCP/IP. The protocol also allows information to
get sent to the server from the client using a few different methods, as will
be shown here.
HTTP is plain ASCII text lines being sent by the client to a server to
request a particular action, and then the server replies a few text lines
before the actual requested content is sent to the client.
Using curl's option -v will display what kind of commands curl sends to the
server, as well as a few other informational texts. -v is the single most
useful option when it comes to debug or even understand the curl<->server
interaction.
2. URL
The Uniform Resource Locator format is how you specify the address of a
particular resource on the Internet. You know these, you've seen URLs like
http://curl.haxx.se or https://yourbank.com a million times.
3. GET a page
The simplest and most common request/operation made using HTTP is to get a
URL. The URL could itself refer to a web page, an image or a file. The client
issues a GET request to the server and receives the document it asked for.
If you issue the command line
curl http://curl.haxx.se
you get a web page returned in your terminal window. The entire HTML document
that that URL holds.
All HTTP replies contain a set of headers that are normally hidden, use
curl's -i option to display them as well as the rest of the document. You can
also ask the remote server for ONLY the headers by using the -I option.
4. Forms
Forms are the general way a web site can present a HTML page with fields for
the user to enter data in, and then press some kind of 'OK' or 'submit'
button to get that data sent to the server. The server then typically uses
the posted data to decide how to act. Like using the entered words to search
in a database, or to add the info in a bug track system, display the entered
address on a map or using the info as a login-prompt verifying that the user
is allowed to see what it is about to see.
Of course there has to be some kind of program in the server end to receive
the data you send. You cannot just invent something out of the air.
4.1 GET
A GET-form uses the method GET, as specified in HTML like:
<form method="GET" action="junk.cgi">
<input type=text name="birthyear">
<input type=submit name=press value="OK">
</form>
In your favorite browser, this form will appear with a text box to fill in
and a press-button labeled "OK". If you fill in '1905' and press the OK
button, your browser will then create a new URL to get for you. The URL will
get "junk.cgi?birthyear=1905&press=OK" appended to the path part of the
previous URL.
If the original form was seen on the page "www.hotmail.com/when/birth.html",
the second page you'll get will become
"www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK".
Most search engines work this way.
To make curl do the GET form post for you, just enter the expected created
URL:
curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"
4.2 POST
The GET method makes all input field names get displayed in the URL field of
your browser. That's generally a good thing when you want to be able to
bookmark that page with your given data, but it is an obvious disadvantage
if you entered secret information in one of the fields or if there are a
large amount of fields creating a very long and unreadable URL.
The HTTP protocol then offers the POST method. This way the client sends the
data separated from the URL and thus you won't see any of it in the URL
address field.
The form would look very similar to the previous one:
<form method="POST" action="junk.cgi">
<input type=text name="birthyear">
<input type=submit name=press value="OK">
</form>
And to use curl to post this form with the same data filled in as before, we
could do it like:
curl -d "birthyear=1905&press=OK" www.hotmail.com/when/junk.cgi
This kind of POST will use the Content-Type
application/x-www-form-urlencoded and is the most widely used POST kind.
4.3 FILE UPLOAD POST
Back in late 1995 they defined a new way to post data over HTTP. It was
documented in the RFC 1867, why this method sometimes is referred to as
a RFC1867-posting.
This method is mainly designed to better support file uploads. A form that
allows a user to upload a file could be written like this in HTML:
<form method="POST" enctype='multipart/form-data' action="upload.cgi">
<input type=file name=upload>
<input type=submit name=press value="OK">
</form>
This clearly shows that the Content-Type about to be sent is
multipart/form-data.
To post to a form like this with curl, you enter a command line like:
curl -F upload=@localfilename -F press=OK [URL]
4.4 HIDDEN FIELDS
A very common way for HTML based application to pass state information
between pages is to add hidden fields to the forms. Hidden fields are
already filled in, they aren't displayed to the user and they get passed
along just as all the other fields.
A similar example form with one visible field, one hidden field and one
submit button could look like:
<form method="POST" action="foobar.cgi">
<input type=text name="birthyear">
<input type=hidden name="person" value="daniel">
<input type=submit name="press" value="OK">
</form>
To post this with curl, you won't have to think about if the fields are
hidden or not. To curl they're all the same:
curl -d "birthyear=1905&press=OK&person=daniel" [URL]
4.5 FIGURE OUT WHAT A POST LOOKS LIKE
When you're about fill in a form and send to a server by using curl instead
of a browser, you're of course very interested in sending a POST exactly the
way your browser does.
An easy way to get to see this, is to save the HTML page with the form on
your local disk, modify the 'method' to a GET, and press the submit button
(you could also change the action URL if you want to).
You will then clearly see the data get appended to the URL, separated with a
'?'-letter as GET forms are supposed to.
5. PUT
The perhaps best way to upload data to a HTTP server is to use PUT. Then
again, this of course requires that someone put a program or script on the
server end that knows how to receive a HTTP PUT stream.
Put a file to a HTTP server with curl:
curl -T uploadfile www.uploadhttp.com/receive.cgi
6. AUTHENTICATION
Authentication is the ability to tell the server your username and password
so that it can verify that you're allowed to do the request you're doing. The
basic authentication used in HTTP is *plain* *text* based, which means it
sends username and password only slightly obfuscated, but still fully
readable by anyone that sniffs on the network between you and the remote
server.
To tell curl to use a user and password for authentication:
curl -u name:password www.secrets.com
Sometimes your HTTP access is only available through the use of a HTTP
proxy. This seems to be especially common at various companies. A HTTP proxy
may require its own user and password to allow the client to get through to
the Internet. To specify those with curl, run something like:
curl -U proxyuser:proxypassword curl.haxx.se
If you use any one these user+password options but leave out the password
part, curl will prompt for the password interactively.
Do note that when a program is run, its parameters are possible to see when
listing the running processes of the system. Thus, other users may be able to
watch your passwords if you pass them as plain command line options. There
are ways to circumvent this.
7. REFERER
A HTTP request may include a 'referer' field, which can be used to tell from
which URL the client got to this particular resource. Some programs/scripts
check the referer field of requests to verify that this wasn't arriving from
an external site or an unknown page. While this is a stupid way to check
something so easily forged, many scripts still do it. Using curl, you can put
anything you want in the referer-field and thus more easily be able to fool
the server into serving your request.
Use curl to set the referer field with:
curl -e http://curl.haxx.se daniel.haxx.se
8. USER AGENT
Very similar to the referer field, all HTTP requests may set the User-Agent
field. It names what user agent (client) that is being used. Many
applications use this information to decide how to display pages. Silly web
programmers try to make different pages for users of different browsers to
make them look the best possible for their particular browsers. They usually
also do different kinds of javascript, vbscript etc.
At times, you will see that getting a page with curl will not return the same
page that you see when getting the page with your browser. Then you know it
is time to set the User Agent field to fool the server into thinking you're
one of those browsers.
To make curl look like Internet Explorer on a Windows 2000 box:
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL]
Or why not look like you're using Netscape 4.73 on a Linux (PIII) box:
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]
9. REDIRECTS
When a resource is requested from a server, the reply from the server may
include a hint about where the browser should go next to find this page, or a
new page keeping newly generated output. The header that tells the browser
to redirect is Location:.
Curl does not follow Location: headers by default, but will simply display
such pages in the same manner it display all HTTP replies. It does however
feature an option that will make it attempt to follow the Location: pointers.
To tell curl to follow a Location:
curl -L www.sitethatredirects.com
If you use curl to POST to a site that immediately redirects you to another
page, you can safely use -L and -d/-F together. Curl will only use POST in
the first request, and then revert to GET in the following operations.
10. COOKIES
The way the web browsers do "client side state control" is by using
cookies. Cookies are just names with associated contents. The cookies are
sent to the client by the server. The server tells the client for what path
and host name it wants the cookie sent back, and it also sends an expiration
date and a few more properties.
When a client communicates with a server with a name and path as previously
specified in a received cookie, the client sends back the cookies and their
contents to the server, unless of course they are expired.
Many applications and servers use this method to connect a series of requests
into a single logical session. To be able to use curl in such occasions, we
must be able to record and send back cookies the way the web application
expects them. The same way browsers deal with them.
The simplest way to send a few cookies to the server when getting a page with
curl is to add them on the command line like:
curl -b "name=Daniel" www.cookiesite.com
Cookies are sent as common HTTP headers. This is practical as it allows curl
to record cookies simply by recording headers. Record cookies with curl by
using the -D option like:
curl -D headers_and_cookies www.cookiesite.com
Curl has a full blown cookie parsing engine built-in that comes to use if you
want to reconnect to a server and use cookies that were stored from a
previous connection (or handicrafted manually to fool the server into
believing you had a previous connection). To use previously stored cookies,
you run curl like:
curl -b stored_cookies_in_file www.cookiesite.com
Curl's "cookie engine" gets enabled when you use the -b option. If you only
want curl to understand received cookies, use -b with a file that doesn't
exist. Example, if you want to let curl understand cookies from a page and
follow a location (and thus possibly send back cookies it received), you can
invoke it like:
curl -b nada -L www.cookiesite.com
Curl has the ability to read and write cookie files that use the same file
format that Netscape and Mozilla do. It is a convenient way to share cookies
between browsers and automatic scripts. The -b switch automatically detects
if a given file is such a cookie file and parses it, and by using the
-c/--cookie-jar option you'll make curl write a new cookie file at the end of
an operation:
curl -b cookies.txt -c newcookies.txt www.cookiesite.com
11. HTTPS
There are a few ways to do secure HTTP transfers. The by far most common
protocol for doing this is what is generally known as HTTPS, HTTP over
SSL. SSL encrypts all the data that is sent and received over the network and
thus makes it harder for attackers to spy on sensitive information.
SSL (or TLS as the latest version of the standard is called) offers a
truckload of advanced features to allow all those encryptions and key
infrastructure mechanisms encrypted HTTP requires.
Curl supports encrypted fetches thanks to the freely available OpenSSL
libraries. To get a page from a HTTPS server, simply run curl like:
curl https://that.secure.server.com
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 PIN-code, why
you need to enter the unlock-code before the certificate can be used by
curl. The PIN-code 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
12. REFERENCES
RFC 2616 is a must to read if you want in-depth understanding of the HTTP
protocol.
RFC 2396 explains the URL syntax.
RFC 2109 defines how cookies are supposed to work.
RFC 1867 defines the HTTP post upload format.
http://www.openssl.org is the home of the OpenSSL project
http://curl.haxx.se is the home of the cURL project

64
docs/VERSIONS Normal file
View File

@@ -0,0 +1,64 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
Version Numbers and Releases
Curl is not only curl. Curl is also libcurl. They're actually individually
versioned, but they mostly follow each other rather closely.
The version numbering is always built up using the same system:
X.Y[.Z][-preN]
Where
X is main version number
Y is release number
Z is patch number
N is pre-release number
One of these numbers will get bumped in each new release. The numbers to the
right of a bumped number will be reset to zero. If Z is zero, it is not
included in the version number. The pre release number is only included in
pre releases (they're never used in public, official, releases).
The main version number will get bumped when *really* big, world colliding
changes are made. The release number is bumped when big changes are
performed. The patch number is bumped when the changes are mere bugfixes and
only minor feature changes. The pre-release is a counter, to identify which
pre-release a certain release is.
When reaching the end of a pre-release period, the version without the
pre-release part will be released as a public release.
It means that after release 1.2.3, we can release 2.0 if something really big
has been made, 1.3 if not that big changes were made or 1.2.4 if mostly bugs
were fixed. Before 1.2.4 is released, we might release a 1.2.4-pre1 release
for the brave people to try before the actual release.
Bumping, as in increasing the number with 1, is unconditionally only
affecting one of the numbers (except the ones to the right of it, that may be
set to zero). 1 becomes 2, 3 becomes 4, 9 becomes 10, 88 becomes 89 and 99
becomes 100. So, after 1.2.9 comes 1.2.10. After 3.99.3, 3.100 might come.
All original curl source release archives are named according to the libcurl
version (not according to the curl client version that, as said before, might
differ).
As a service to any application that might want to support new libcurl
features while still being able to build with older versions, all releases
have the libcurl version stored in the curl/curl.h file using a static
numbering scheme that can be used for comparison. The version number is
defined as:
#define LIBCURL_VERSION_NUM 0xXXYYZZ
Where XX, YY and ZZ are the main version, release and patch numbers in
hexadecimal. All three numbers are always represented using two digits. 1.2
would appear as "0x010200" while version 9.11.7 appears as "0x090b07".
This 6-digit hexadecimal number does not show pre-release number, and it is
always a greater number in a more recent release. It makes comparisons with
greater than and less than work.

64
docs/curl-config.1 Normal file
View File

@@ -0,0 +1,64 @@
.\" You can view this file with:
.\" nroff -man curl-config.1
.\" Written by Daniel Stenberg
.\"
.TH curl-config 1 "8 Oct 2002" "Curl 7.10" "curl-config manual"
.SH NAME
curl-config \- Get information about a libcurl installation
.SH SYNOPSIS
.B curl-config [options]
.SH DESCRIPTION
.B curl-config
displays information about a previous curl and libcurl installation.
.SH OPTIONS
.IP "--ca"
Displays the built-in path to the CA cert bundle this libcurl uses.
.IP "--cc"
Displays the compiler used to build libcurl.
.IP "--cflags"
Set of compiler options (CFLAGS) to use when compiling files that use
libcurl. Currently that is only thw include path to the curl include files.
.IP "--feature"
Lists what particular main features the installed libcurl was built with. At
the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume
any particular order. The keywords will be separated by newlines. There may be
none, one or several keywords in the list.
.IP "--help"
Displays the available options.
.IP "--libs"
Shows the complete set of libs and other linker options you will need in order
to link your application with libcurl.
.IP "--prefix"
This is the prefix used when libcurl was installed. Libcurl is then installed
in $prefix/lib and its header files are installed in $prefix/include and so
on. The prefix is set with "configure --prefix".
.IP "--version"
Outputs version information about the installed libcurl.
.IP "--vernum"
Outputs version information about the installed libcurl, in numerical mode.
This outputs the version number, in hexadecimal, with 8 bits for each part;
major, minor, patch. So that libcurl 7.7.4 would appear as 070704 and libcurl
12.13.14 would appear as 0c0d0e...
.SH "EXAMPLES"
What linker options do I need when I link with libcurl?
$ curl-config --libs
What compiler options do I need when I compile using libcurl functions?
$ curl-config --cflags
How do I know if libcurl was built with SSL support?
$ curl-config --feature | grep SSL
What's the installed libcurl version?
$ curl-config --version
How do I build a single file with a one-line command?
$ `curl-config --cc --cflags --libs` -o example example.c
.SH "SEE ALSO"
.BR curl (1)

959
docs/curl.1 Normal file
View File

@@ -0,0 +1,959 @@
.\" You can view this file with:
.\" nroff -man curl.1
.\" Written by Daniel Stenberg
.\"
.TH curl 1 "14 Feb 2003" "Curl 7.10.3" "Curl Manual"
.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options]
.I [URL...]
.SH DESCRIPTION
.B curl
is a client to get documents/files from or send documents to a server, using
any of the supported protocols (HTTP, HTTPS, FTP, GOPHER, DICT, TELNET, LDAP
or FILE). The command is designed to work without user interaction or any kind
of interactivity.
curl offers a busload of useful tricks like proxy support, user
authentication, ftp upload, HTTP post, SSL (https:) connections, cookies, file
transfer resume and more.
.SH URL
The URL syntax is protocol dependent. You'll find a detailed description in
RFC 2396.
You can specify multiple URLs or parts of URLs by writing part sets within
braces as in:
http://site.{one,two,three}.com
or you can get sequences of alphanumeric series by using [] as in:
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numericals.com/file[001-100].txt (with leading zeros)
ftp://ftp.letters.com/file[a-z].txt
It is possible to specify up to 9 sets or series for a URL, but no nesting is
supported at the moment:
http://www.any.org/archive[1996-1999]/volume[1-4]part{a,b,c,index}.html
You can specify any amount of URLs on the command line. They will be fetched
in a sequential manner in the specified order.
Curl will attempt to re-use connections for multiple file transfers, so that
getting many files from the same server will not do multiple connects /
handshakes. This improves speed. Of course this is only done on files
specified on a single command line and cannot be used between separate curl
invokes.
.SH OPTIONS
.IP "-a/--append"
(FTP)
When used in a ftp 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.
.IP "-A/--user-agent <agent string>"
(HTTP)
Specify the User-Agent string to send to the HTTP server. Some badly done CGIs
fail if its not set to "Mozilla/4.0". To encode blanks in the string,
surround the string with single quote marks. This can also be set with the
-H/--header flag of course.
If this option is set more than once, the last one will be the one that's
used.
.IP "-b/--cookie <name=data>"
(HTTP)
Pass the data to the HTTP server as a cookie. It is supposedly the
data previously received from the server in a "Set-Cookie:" line.
The data should be in the format "NAME1=VALUE1; NAME2=VALUE2".
If no '=' letter is used in the line, it is treated as a filename to use to
read previously stored cookie lines from, which should be used in this session
if they match. Using this method also activates the "cookie parser" which will
make curl record incoming cookies too, which may be handy if you're using this
in combination with the -L/--location option. The file format of the file to
read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie
file format.
.B NOTE
that the file specified with -b/--cookie is only used as input. No cookies
will be stored in the file. To store cookies, save the HTTP headers to a file
using -D/--dump-header!
If this option is set more than once, the last one will be the one that's
used.
.IP "-B/--use-ascii"
Use ASCII transfer when getting an FTP file or LDAP info. 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 "--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:
.I http://www.openssl.org/docs/apps/ciphers.html (Option added in curl 7.9)
If this option is used several times, the last one will override the others.
.IP "--compressed"
(HTTP) Request a compressed response using the deflate or gzip
algorithms and return the uncompressed document. If this option is used
and 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
of no more use. See also the \fI--max-time\fP option.
If this option is used several times, the last one will be used.
.IP "-c/--cookie-jar <file name>"
Specify to which file you want curl to write all cookies after a completed
operation. Curl writes all cookies previously read from a specified file as
well as all cookies received from remote server(s). If no cookies are known,
no file will be written. The file will be written using the Netscape cookie
file format. If you set the file name to a single dash, "-", the cookies will
be written to stdout. (Option added in curl 7.9)
.B NOTE
If the cookie jar can't be created or written to, the whole curl operation
won't fail or even report an error clearly. Using -v will get a warning
displayed, but that is the only visible feedback you get about this possibly
lethal situation.
If this option is used several times, the last specfied file name will be
used.
.IP "-C/--continue-at <offset>"
Continue/Resume a previous file transfer at the given offset. The given offset
is the exact number of bytes that will be skipped counted from the beginning
of the source file before it is transfered to the destination. If used with
uploads, the ftp server command SIZE will not be used by curl.
Use "-C -" to tell curl to automatically find out where/how to resume the
transfer. It then uses the given output/input files to figure that out.
If this option is used several times, the last one will be used.
.IP "--create-dirs"
When used in conjunction with the -o option, curl will create the necessary
local directory hierarchy as needed.
.IP "--crlf"
(FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).
If this option is used twice, the second will again disable crlf converting.
.IP "-d/--data <data>"
(HTTP) Sends the specified data in a POST request to the HTTP server, in a way
that can emulate as if a user has filled in a HTML form and pressed the submit
button. Note that the data is sent exactly as specified with no extra
processing (with all newlines cut off). The data is expected to be
"url-encoded". This will cause curl to pass the data to the server using the
content-type application/x-www-form-urlencoded. Compare to -F. If more than
one -d/--data option is used on the same command line, the data pieces
specified will be merged together with a separating &-letter. Thus, using '-d
name=daniel -d skill=lousy' would generate a post chunk that looks like
\&'name=daniel&skill=lousy'.
If you start the data with the letter @, the rest should be a file name to
read the data from, or - if you want curl to read the data from stdin. The
contents of the file must already be url-encoded. Multiple files can also be
specified. Posting data from a file named 'foobar' would thus be done with
"--data @foobar".
To post data purely binary, you should instead use the --data-binary option.
-d/--data is the same as --data-ascii.
If this option is used several times, the ones following the first will
append data.
.IP "--data-ascii <data>"
(HTTP) This is an alias for the -d/--data option.
If this option is used several times, the ones following the first will
append data.
.IP "--data-binary <data>"
(HTTP) This posts data in a similar manner as --data-ascii does, although when
using this option the entire context of the posted data is kept as-is. If you
want to post a binary file without the strip-newlines feature of the
--data-ascii option, this is for you.
If this option is used several times, the ones following the first will
append data.
.IP "--disable-epsv"
(FTP) Tell curl to disable the use of the EPSV command when doing passive FTP
downloads. 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.
.IP "-D/--dump-header <file>"
Write the protocol headers to the specified file.
This option is handy to use when you want to store the cookies that a HTTP
site sends to you. The cookies could then be read in a second curl invoke by
using the -b/--cookie option!
When used on FTP, the ftp server response lines are considered being "headers"
and thus are saved there.
If this option is used several times, the last one will be used.
.IP "-e/--referer <URL>"
(HTTP) Sends the "Referer Page" information to the HTTP server. This can also
be set with the -H/--header flag of course. When used with
.I -L/--location
you can append ";auto" to the referer URL to make curl automatically set the
previous URL when it follows a Location: header. The ";auto" string can be
used alone, even if you don't set an initial referer.
If this option is used several times, the last one will be used.
.IP "--environment"
(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>"
(HTTPS) 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
.I "--random-file"
option.
.IP "-E/--cert <certificate[:password]>"
(HTTPS)
Tells curl to use the specified certificate file when getting a file
with HTTPS. The certificate must be in PEM format.
If the optional password isn't specified, it will be queried for on
the terminal. Note that this certificate is the private key and the private
certificate concatenated!
If this option is used several times, the last one will be used.
.IP "--cacert <CA certificate>"
(HTTPS) Tells curl to use the specified certificate file to verify the
peer. The file may contain multiple CA certificates. The certificate(s) must
be in PEM format.
curl recognizes the environment variable named 'CURL_CA_BUNDLE' if that is
set, and uses the given path as a path to a CA cert bundle. This option
overrides that variable.
The windows version of curl will automatically look for a CA certs file named
\'curl-ca-bundle.crt\', either in the same directory as curl.exe, or in the
Current Working Directory, or in any folder along your PATH.
If this option is used several times, the last one will be used.
.IP "--capath <CA certificate directory>"
(HTTPS) Tells curl to use the specified certificate directory to verify the
peer. The certificates must be in PEM format, and the directory must have been
processed using the c_rehash utility supplied with openssl. Using --capath can
allow curl to make https connections much more efficiently than using --cacert
if the --cacert file contains many CA certificates.
If this option is used several times, the last one will be used.
.IP "-f/--fail"
(HTTP) Fail silently (no output at all) on server errors. This is mostly done
like this to better enable scripts etc to better deal with failed attempts. In
normal cases when a HTTP server fails to deliver a document, it returns a HTML
document stating so (which often also describes why and more). This flag will
prevent curl from outputting that and fail silently instead.
If this option is used twice, the second will again disable silent failure.
.IP "-F/--form <name=content>"
(HTTP) This lets curl emulate a filled in form in which a user has pressed the
submit button. This causes curl to POST data using the content-type
multipart/form-data according to RFC1867. This enables uploading of binary
files etc. To force the 'content' part to be be a file, prefix the file name
with an @ sign. To just get the content part from a file, prefix the file name
with the letter <. The difference between @ and < is then that @ makes a file
get attached in the post as a file upload, while the < makes a text field and
just get the contents for that text field from a file.
Example, to send your password file to the server, where
\&'password' is the name of the form-field to which /etc/passwd will be the
input:
\fBcurl\fP -F password=@/etc/passwd www.mypasswords.com
To read the file's content from stdin insted of a file, use - where the file
name should've been. This goes for both @ and < constructs.
You can also tell curl what Content-Type to use for the file upload part, by
using 'type=', in a manner similar to:
\fBcurl\fP -F "web=@index.html;type=text/html" url.com
See further examples and details in the MANUAL.
This option can be used multiple times.
.IP "-g/--globoff"
This option switches off the "URL globbing parser". When you set this option,
you can specify URLs that contain the letters {}[] without having them being
interpreted by curl itself. Note that these letters are not normal legal URL
contents but they should be encoded according to the URI standard.
.IP "-G/--get"
When used, this option will make all data specified with -d/--data or
--data-binary to be used in a HTTP GET request instead of the POST request
that otherwise would be used. The data will be appended to the URL with a '?'
separator. (Option added in curl 7.9)
If used in combination with -I, the POST data will instead be appended to the
URL with a HEAD request.
If used multiple times, nothing special happens.
.IP "-h/--help"
Usage help.
.IP "-H/--header <header>"
(HTTP) Extra header to use when getting a web page. You may specify any number
of extra headers. Note that if you should add a custom header that has the
same name as one of the internal ones curl would use, your externally set
header will be used instead of the internal one. This allows you to make even
trickier stuff than curl would normally do. You should not replace internally
set headers without knowing perfectly well what you're doing. Replacing an
internal header with one without content on the right side of the colon will
prevent that header from appearing.
This option can be used multiple times to add/replace/remove multiple headers.
.IP "-i/--include"
(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:
.B "curl --interface eth0:1 http://www.netscape.com/"
If this option is used several times, the last one will be used.
.IP "-I/--head"
(HTTP/FTP)
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 file, curl displays the file size 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 basicly have the same effect
as if a new session is started. Typical browsers always discard session
cookies when they're closed down. (Added in 7.9.7)
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. Starting with curl 7.10, all SSL connections will be attempted
to be made secure by using the CA certificate bundle installed by
default. This makes all connections considered "insecure" to fail unless
-k/--insecure is used.
This option is ignored if --cacert or --capath is used!
If this option is used twice, the second time will again disable it.
.IP "--krb4 <level>"
(FTP) Enable kerberos4 authentication and use. The level must be entered and
should be one of 'clear', 'safe', 'confidential' or 'private'. Should you use
a level that is not one of these, 'private' will instead be used.
If this option is used several times, the last one will be used.
.IP "-K/--config <config file>"
Specify which config file to read curl arguments from. The config file is a
text file in which command line arguments can be written which then will be
used as if they were written on the actual command line. Options and their
parameters must be specified on the same config file line. If the parameter is
to contain white spaces, the parameter must be inclosed within quotes. If the
first column of a config line is a '#' character, the rest of the line will be
treated as a comment.
Specify the filename as '-' to make curl read the file from stdin.
Note that to be able to specify a URL in the config file, you need to specify
it using the --url option, and not by simply writing the URL on its own
line. So, it could look similar to this:
url = "http://curl.haxx.se/docs/"
This option can be used multiple times.
.IP "--limit-rate <speed>"
Specify the maximum transfer rate you want curl to use. This feature is useful
if you have a limited pipe and you'd like your transfer not use your entire
bandwidth.
The given speed is measured in bytes/second, unless a suffix is
appended. Appending 'k' or 'K' will count the number as kilobytes, 'm' or M'
makes it megabytes while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and
1G.
This option was introduced in curl 7.10.
If this option is used several times, the last one will be used.
.IP "-l/--list-only"
(FTP)
When listing an FTP directory, this switch forces a name-only view.
Especially useful if you want to machine-parse the contents of an FTP
directory since the normal directory view doesn't use a standard look
or format.
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 "-L/--location"
(HTTP/HTTPS) If the server reports that the requested page has a different
location (indicated with the header line Location:) this flag will let curl
attempt to reattempt the get on the new place. If used together with -i or -I,
headers from all requested pages will be shown. If this flag is used when
making a HTTP POST, curl will automatically switch to GET after the initial
POST has been done.
If this option is used twice, the second will again disable location following.
.IP "-m/--max-time <seconds>"
Maximum time in seconds that you allow the whole operation to take. This is
useful for preventing your batch jobs from hanging for hours due to slow
networks or links going down. This doesn't work fully in win32 systems. See
also the \fI--connect-timeout\fP option.
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
.I .netrc
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)
for details on the file format. Curl will not complain if that file
hasn't the right permissions (it should not be world nor group
readable). The environment variable "HOME" is used to find the home
directory.
A quick and very simple example of how to setup a
.I .netrc
to allow curl 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 "-N/--no-buffer"
Disables the buffering of the output stream. In normal work situations, curl
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.
.IP "-o/--output <file>"
Write output to <file> instead of stdout. If you are using {} or [] to fetch
multiple documents, you can use '#' followed by a number in the <file>
specifier. That variable will be replaced with the current string for the URL
being fetched. Like in:
curl http://{one,two}.site.com -o "file_#1.txt"
or use several variables like:
curl http://{site,host}.host[1-5].com -o "#1_#2"
You may use this option as many times as you have number of URLs.
See also the --create-dirs option to create the local directories dynamically.
.IP "-O/--remote-name"
Write output to a local file named like the remote file we get. (Only
the file part of the remote file is used, the path is cut off.)
You may use this option as many times as you have number of URLs.
.IP "-p/--proxytunnel"
When an HTTP proxy is used, 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 "-P/--ftpport <address>"
(FTP)
Reverses the initiator/listener roles when connecting with ftp. This
switch makes Curl use the PORT command instead of PASV. In
practice, PORT tells the server to connect to the client's specified
address and port, while PASV asks the server for an ip address and
port to connect to. <address> should be one of:
.RS
.TP 12
.B interface
i.e "eth0" to specify which interface's IP address you want to use (Unix only)
.TP
.B "IP address"
i.e "192.168.10.1" to specify exact IP number
.TP
.B "host name"
i.e "my.host.domain" to specify machine
.TP
.B "-"
(any single-letter string) to make it pick the machine's default
.RE
If this option is used several times, the last one will be used.
.IP "-q"
If used as the first parameter on the command line, the
.I $HOME/.curlrc
file will not be read and used as a config file.
.IP "-Q/--quote <comand>"
(FTP) Send an arbitrary command to the remote FTP server, by using the QUOTE
command of the server. Not all servers support this command, and the set of
QUOTE commands are server specific! Quote commands are sent BEFORE the
transfer is taking place. To make commands take place after a successful
transfer, prefix them with a dash '-'. You may specify any amount of commands
to be run before and after the transfer. If the server returns failure for one
of the commands, the entire operation will be aborted.
This option can be used multiple times.
.IP "--random-file <file>"
(HTTPS) 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.
See also the
.I "--edg-file"
option.
.IP "-r/--range <range>"
(HTTP/FTP)
Retrieve a byte range (i.e a partial document) from a HTTP/1.1 or FTP
server. Ranges can be specified in a number of ways.
.RS
.TP 10
.B 0-499
specifies the first 500 bytes
.TP
.B 500-999
specifies the second 500 bytes
.TP
.B -500
specifies the last 500 bytes
.TP
.B 9500
specifies the bytes from offset 9500 and forward
.TP
.B 0-0,-1
specifies the first and last byte only(*)(H)
.TP
.B 500-700,600-799
specifies 300 bytes from offset 500(H)
.TP
.B 100-199,500-599
specifies two separate 100 bytes ranges(*)(H)
.RE
(*) = NOTE that this will cause the server to reply with a multipart
response!
You should also be aware that many HTTP/1.1 servers do not have this feature
enabled, so that when you attempt to get a range, you'll instead get the whole
document.
FTP range downloads only support the simple syntax 'start-stop' (optionally
with one of the numbers omitted). It depends on the non-RFC command SIZE.
If this option is used several times, the last one will be used.
.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 "-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 mute.
.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 "--stderr <file>"
Redirect all writes to stderr to the specified file instead. If the file name
is a plain '-', it is instead written to stdout. This option has no point when
you're using a shell with decent redirecting capabilities.
If this option is used several times, the last one will be used.
.IP "-t/--telnet-option <OPT=val>"
Pass options to the telnet protocol. Supported options are:
TTYPE=<term> Sets the terminal type.
XDISPLOC=<X display> Sets the X display location.
NEW_ENV=<var,val> Sets an environment variable.
.IP "-T/--upload-file <file>"
This transfers the specified local file to the remote URL. If there is no file
part in the specified URL, Curl will append the local file name. NOTE that you
must use a trailing / on the last directory to really prove to Curl that there
is no file name or curl will think that your last directory name is the remote
file name to use. That will most likely cause the upload operation to fail. If
this is used on a http(s) server, the PUT command will be used.
Use the file name "-" (a single dash) to use stdin instead of a given file.
If this option is used several times, the last one will be used.
.IP "--trace <file>"
Enables a full trace dump of all incoming and outgoing data, including
descriptive information, to the given output file. Use "-" as filename to have
the output sent to stdout.
If this option is used several times, the last one will be used. (Added in
curl 7.9.7)
.IP "--trace-ascii <file>"
Enables a full trace dump of all incoming and outgoing data, including
descriptive information, to the given output file. Use "-" as filename to have
the output sent to stdout.
This is very similar to --trace, but leaves out the hex part and only shows
the ASCII part of the dump. It makes smaller output that might be easier to
read for untrained humans.
If this option is used several times, the last one will be used. (Added in
curl 7.9.7)
.IP "-u/--user <user:password>"
Specify user and password to use when fetching. Read the MANUAL for detailed
examples of how to use this. If no password is specified, curl will ask for it
interactively.
If this option is used several times, the last one will be used.
.IP "-U/--proxy-user <user:password>"
Specify user and password to use for Proxy authentication. If no
password is specified, curl will ask for it interactively.
If this option is used several times, the last one will be used.
.IP "--url <URL>"
Specify a URL to fetch. This option is mostly handy when you want to specify
URL(s) in a config file.
This option may be used any number of times. To control where this URL is written, use the
.I -o
or the
.I -O
options.
.IP "-v/--verbose"
Makes the fetching more verbose/talkative. Mostly usable for debugging. Lines
starting with '>' means data sent by curl, '<' means data received by curl
that is hidden in normal cases and lines starting with '*' means additional
info provided by curl.
Note that if you want to see HTTP headers in the output, \fI-i/--include\fP
might be option you're looking for.
If you think this option still doesn't give you enough details, consider using
\fI--trace\fP or \fI--trace-ascii\fP instead.
If this option is used twice, the second will again disable verbose.
.IP "-V/--version"
Displays the full version of curl, libcurl and other 3rd party libraries
linked with the executable.
.IP "-w/--write-out <format>"
Defines what to display after a completed and successful operation. The format
is a string that may contain plain text mixed with any number of variables. The
string can be specified as "string", to get read from a particular file you
specify it "@filename" and to tell curl to read the format from stdin you
write "@-".
The variables present in the output format will be substituted by the value or
text that curl thinks fit, as described below. All variables are specified
like %{variable_name} and to output a normal % you just write them like
%%. You can output a newline by using \\n, a carriage return with \\r and a tab
space with \\t.
.B NOTE:
The %-letter is a special letter in the win32-environment, where all
occurrences of % must be doubled when using this option.
Available variables are at this point:
.RS
.TP 15
.B url_effective
The URL that was fetched last. This is mostly meaningful if you've told curl
to follow location: headers.
.TP
.B http_code
The numerical code that was found in the last retrieved HTTP(S) page.
.TP
.B time_total
The total time, in seconds, that the full operation lasted. The time will be
displayed with millisecond resolution.
.TP
.B time_namelookup
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.
.TP
.B time_pretransfer
The time, in seconds, 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.
.TP
.B time_starttransfer
The time, in seconds, it took from the start until the first byte is just about
to be transfered. This includes time_pretransfer and also the time the
server needs to calculate the result.
.TP
.B size_download
The total amount of bytes that were downloaded.
.TP
.B size_upload
The total amount of bytes that were uploaded.
.TP
.B size_header
The total amount of bytes of the downloaded headers.
.TP
.B size_request
The total amount of bytes that were sent in the HTTP request.
.TP
.B speed_download
The average download speed that curl measured for the complete download.
.TP
.B speed_upload
The average upload speed that curl measured for the complete upload.
.TP
.B content_type
The Content-Type of the requested document, if there was any. (Added in 7.9.5)
.RE
If this option is used several times, the last one will be used.
.IP "-x/--proxy <proxyhost[:port]>"
Use specified HTTP proxy. If the port number is not specified, it is assumed
at port 1080.
This option overrides existing environment variables that sets proxy to
use. If there's an environment variable setting a proxy, you can set proxy to
"" to override it.
\fBNote\fP that all operations that are performed over a HTTP proxy will
transparantly be converted to HTTP. It means that certain protocol specific
operations might not be available. This is not the case if you can tunnel
through the proxy, as done with the \fI-p/--proxytunnel\fP option.
If this option is used several times, the last one will be used.
.IP "-X/--request <command>"
(HTTP)
Specifies a custom request to use when communicating with the HTTP server.
The specified request will be used instead of the standard GET. Read the
HTTP 1.1 specification for details and explanations.
(FTP)
Specifies a custom FTP command to use instead of LIST when doing file lists
with ftp.
If this option is used several times, the last one will be used.
.IP "-y/--speed-time <time>"
If a download is slower than speed-limit bytes per second during a speed-time
period, the download gets aborted. If speed-time is used, the default
speed-limit will be 1 unless set with -y.
This option controls transfers and thus will not affect slow connects etc. If
this is a concern for you, try the \fI--connect-timeout\fP option.
If this option is used several times, the last one will be used.
.IP "-Y/--speed-limit <speed>"
If a download is slower than this given speed, in bytes per second, for
speed-time seconds it gets aborted. speed-time is set with -Y and is 30 if
not set.
If this option is used several times, the last one will be used.
.IP "-z/--time-cond <date expression>"
(HTTP)
Request to get a file that has been modified later than the given time and
date, or one that has been modified before that time. The date expression can
be all sorts of date strings or if it doesn't match any internal ones, it
tries to get the time from a given file name instead! See the
.BR "GNU date(1)"
or
.BR "curl_getdate(3)"
man pages for date expression details.
Start the date expression with a dash (-) to make it request for a document
that is older than the given date/time, default is a document that is newer
than the specified date/time.
If this option is used several times, the last one will be used.
.IP "-Z/--max-redirs <num>"
Set maximum number of redirection-followings allowed. If -L/--location is
used, this option can be used to prevent curl from following redirections "in
absurdum".
If this option is used several times, the last one will be used.
.IP "-3/--sslv3"
(HTTPS)
Forces curl to use SSL version 3 when negotiating with a remote SSL server.
.IP "-2/--sslv2"
(HTTPS)
Forces curl to use SSL version 2 when negotiating with a remote SSL server.
.IP "-0/--http1.0"
(HTTP) Forces curl to issue its requests using HTTP 1.0 instead of using its
internally preferred: HTTP 1.1.
.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
Default config file.
.SH ENVIRONMENT
.IP "http_proxy [protocol://]<host>[:port]"
Sets proxy server to use for HTTP.
.IP "HTTPS_PROXY [protocol://]<host>[:port]"
Sets proxy server to use for HTTPS.
.IP "FTP_PROXY [protocol://]<host>[:port]"
Sets proxy server to use for FTP.
.IP "GOPHER_PROXY [protocol://]<host>[:port]"
Sets proxy server to use for GOPHER.
.IP "ALL_PROXY [protocol://]<host>[:port]"
Sets proxy server to use if no protocol-specific proxy is set.
.IP "NO_PROXY <comma-separated list of hosts>"
list of host names that shouldn't go through any proxy. If set to a asterisk
'*' only, it matches all hosts.
.SH EXIT CODES
There exists a bunch of different error codes and their corresponding error
messages that may appear during bad conditions. At the time of this writing,
the exit codes are:
.IP 1
Unsupported protocol. This build of curl has no support for this protocol.
.IP 2
Failed to initialize.
.IP 3
URL malformat. The syntax was not correct.
.IP 4
URL user malformatted. The user-part of the URL syntax was not correct.
.IP 5
Couldn't resolve proxy. The given proxy host could not be resolved.
.IP 6
Couldn't resolve host. The given remote host was not resolved.
.IP 7
Failed to connect to host.
.IP 8
FTP weird server reply. The server sent data curl couldn't parse.
.IP 9
FTP access denied. The server denied login.
.IP 10
FTP user/password incorrect. Either one or both were not accepted by the
server.
.IP 11
FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request.
.IP 12
FTP weird USER reply. Curl couldn't parse the reply sent to the USER request.
.IP 13
FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request.
.IP 14
FTP weird 227 format. Curl couldn't parse the 227-line the server sent.
.IP 15
FTP can't get host. Couldn't resolve the host IP we got in the 227-line.
.IP 16
FTP can't reconnect. Couldn't connect to the host we got in the 227-line.
.IP 17
FTP couldn't set binary. Couldn't change transfer method to binary.
.IP 18
Partial file. Only a part of the file was transfered.
.IP 19
FTP couldn't download/access the given file, the RETR (or similar) command
failed.
.IP 20
FTP write error. The transfer was reported bad by the server.
.IP 21
FTP quote error. A quote command returned error from the server.
.IP 22
HTTP page not retrieved. The requested url was not found or returned another
error with the HTTP error code being 400 or above. This return code only
appears if --fail is used.
.IP 23
Write error. Curl couldn't write data to a local filesystem or similar.
.IP 24
Malformat user. User name badly specified.
.IP 25
FTP couldn't STOR file. The server denied the STOR operation.
.IP 26
Read error. Various reading problems.
.IP 27
Out of memory. A memory allocation request failed.
.IP 28
Operation timeout. The specified time-out period was reached according to the
conditions.
.IP 29
FTP couldn't set ASCII. The server returned an unknown reply.
.IP 30
FTP PORT failed. The PORT command failed.
.IP 31
FTP couldn't use REST. The REST command failed.
.IP 32
FTP couldn't use SIZE. The SIZE command failed. The command is an extension
to the original FTP spec RFC 959.
.IP 33
HTTP range error. The range "command" didn't work.
.IP 34
HTTP post error. Internal post-request generation error.
.IP 35
SSL connect error. The SSL handshaking failed.
.IP 36
FTP bad download resume. Couldn't continue an earlier aborted download.
.IP 37
FILE couldn't read file. Failed to open the file. Permissions?
.IP 38
LDAP cannot bind. LDAP bind operation failed.
.IP 39
LDAP search failed.
.IP 40
Library not found. The LDAP library was not found.
.IP 41
Function not found. A required LDAP function was not found.
.IP 42
Aborted by callback. An application told curl to abort the operation.
.IP 43
Internal error. A function was called with a bad parameter.
.IP 44
Internal error. A function was called in a bad order.
.IP 45
Interface error. A specified outgoing interface could not be used.
.IP 46
Bad password entered. An error was signaled when the password was entered.
.IP 47
Too many redirects. When following redirects, curl hit the maximum amount.
.IP 48
Unknown TELNET option specified.
.IP 49
Malformed telnet option.
.IP 51
The remote peer's SSL certificate wasn't ok
.IP 52
The server didn't reply anything, which here is considered an error.
.IP 53
SSL crypto engine not found
.IP 54
Cannot set SSL crypto engine as default
.IP 55
Failed sending network data
.IP 56
Failure in receiving network data
.IP 57
Share is in use (internal error)
.IP 58
Problem with the local certificate
.IP 59
Couldn't use specified SSL cipher
.IP 60
Problem with the CA cert (path? permission?)
.IP 61
Unrecognized transfer encoding
.IP XX
There will appear more error codes here in future releases. The existing ones
are meant to never change.
.SH BUGS
If you do find bugs, mail them to curl-bug@haxx.se.
.SH AUTHORS / CONTRIBUTORS
Daniel Stenberg is the main author, but the whole list of contributors is
found in the separate THANKS file.
.SH WWW
http://curl.haxx.se
.SH FTP
ftp://ftp.sunet.se/pub/www/utilities/curl/
.SH "SEE ALSO"
.BR ftp (1),
.BR wget (1),
.BR snarf (1)

2
docs/examples/.cvsignore Normal file
View File

@@ -0,0 +1,2 @@
Makefile
Makefile.in

15
docs/examples/Makefile.am Normal file
View File

@@ -0,0 +1,15 @@
#
# $Id$
#
AUTOMAKE_OPTIONS = foreign no-dependencies
EXTRA_DIST = README curlgtk.c sepheaders.c simple.c postit2.c \
persistant.c ftpget.c Makefile.example \
multithread.c getinmemory.c ftpupload.c httpput.c \
simplessl.c ftpgetresp.c http-post.c post-callback.c \
multi-app.c multi-double.c multi-single.c multi-post.c \
fopen.c simplepost.c
all:
@echo "done"

View File

@@ -0,0 +1,42 @@
#############################################################################
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# $Id$
#
# What to call the final executable
TARGET = example
# Which object files that the executable consists of
OBJS= ftpget.o
# What compiler to use
CC = gcc
# Compiler flags, -g for debug, -c to make an object file
CFLAGS = -c -g
# This should point to a directory that holds libcurl, if it isn't
# in the system's standard lib dir
# We also set a -L to include the directory where we have the openssl
# libraries
LDFLAGS = -L/home/dast/lib -L/usr/local/ssl/lib
# We need -lcurl for the curl stuff
# We need -lsocket and -lnsl when on Solaris
# We need -lssl and -lcrypto when using libcurl with SSL support
# We need -ldl for dlopen() if that is in libdl
# We need -lpthread for the pthread example
LIBS = -lcurl -lsocket -lnsl -lssl -lcrypto -dl
# Link the target with all objects and libraries
$(TARGET) : $(OBJS)
$(CC) -o $(TARGET) $(OBJS) $(LDFLAGS) $(LIBS)
# Compile the source files into object files
ftpget.o : ftpget.c
$(CC) $(CFLAGS) $<

25
docs/examples/README Normal file
View File

@@ -0,0 +1,25 @@
EXAMPLES
This directory is for libcurl programming examples. They are meant to show
some simple steps on how you can build your own application to take full
advantage of libcurl.
If you end up with other small but still useful example sources, please mail
them for submission in future packages and on the web site.
The Makefile.example is an example makefile that could be used to build these
examples. Just edit the file according to your system and requirements first.
Most examples should build fine using a command line like this:
$ `curl-config --cc --cflags --libs` -o example example.c
Some compilers don't like having the arguments in this order but instead
want you do reorganize them like:
$ `curl-config --cc` -o example example.c `curl-config --cflags --libs`
*PLEASE* do not use the curl.haxx.se site as a test target for your libcurl
applications/experiments. Even if the examples in this directory use that site
as an example URL at some places, it doesn't mean that the URLs work or that
we expect you to actually torture our web site with your tests! Thanks.

100
docs/examples/curlgtk.c Normal file
View File

@@ -0,0 +1,100 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
/* Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft */
/* an attempt to use the curl library in concert with a gtk-threaded application */
#include <stdio.h>
#include <gtk/gtk.h>
#include <curl/curl.h>
#include <curl/types.h> /* new for v7 */
#include <curl/easy.h> /* new for v7 */
#include <pthread.h>
GtkWidget *Bar;
size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
{
return fread(ptr, size, nmemb, stream);
}
int my_progress_func(GtkWidget *Bar,
double t, /* dltotal */
double d, /* dlnow */
double ultotal,
double ulnow)
{
/* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/
gdk_threads_enter();
gtk_progress_set_value(GTK_PROGRESS(Bar), d*100.0/t);
gdk_threads_leave();
return 0;
}
void *curl_thread(void *ptr)
{
CURL *curl;
CURLcode res;
FILE *outfile;
gchar *url = ptr;
curl = curl_easy_init();
if(curl)
{
outfile = fopen("/tmp/test.curl", "w");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_FILE, outfile);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, my_read_func);
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);
curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, Bar);
res = curl_easy_perform(curl);
fclose(outfile);
/* always cleanup */
curl_easy_cleanup(curl);
}
return NULL;
}
int main(int argc, char **argv)
{
GtkWidget *Window, *Frame, *Frame2;
GtkAdjustment *adj;
pthread_t curl_tid;
/* Init thread */
g_thread_init(NULL);
gtk_init(&argc, &argv);
Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
Frame = gtk_frame_new(NULL);
gtk_frame_set_shadow_type(GTK_FRAME(Frame), GTK_SHADOW_OUT);
gtk_container_add(GTK_CONTAINER(Window), Frame);
Frame2 = gtk_frame_new(NULL);
gtk_frame_set_shadow_type(GTK_FRAME(Frame2), GTK_SHADOW_IN);
gtk_container_add(GTK_CONTAINER(Frame), Frame2);
gtk_container_set_border_width(GTK_CONTAINER(Frame2), 5);
adj = (GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
Bar = gtk_progress_bar_new_with_adjustment(adj);
gtk_container_add(GTK_CONTAINER(Frame2), Bar);
gtk_widget_show_all(Window);
pthread_create(&curl_tid, NULL, curl_thread, argv[1]);
gdk_threads_enter();
gtk_main();
gdk_threads_leave();
return 0;
}

235
docs/examples/fopen.c Normal file
View File

@@ -0,0 +1,235 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* This example source code introduces an fopen()/fread()/fclose() emulation
* for URL reads. Using an approach similar to this, you could replace your
* program's fopen() with this url_fopen() and fread() with url_fread() and
* it should be possible to read remote streams instead of (only) local files.
*
* See the main() function at the bottom that shows a tiny app in action.
*
* This source code is a proof of concept. It will need further attention to
* become production-use useful and solid.
*
* This example requires libcurl 7.9.7 or later.
*/
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <stdlib.h>
#include <curl/curl.h>
#if (LIBCURL_VERSION_NUM < 0x070907)
#error "too old libcurl version, get the latest!"
#endif
struct data {
int type;
union {
CURL *curl;
FILE *file;
} handle;
/* This is the documented biggest possible buffer chunk we can get from
libcurl in one single callback! */
char buffer[CURL_MAX_WRITE_SIZE];
char *readptr; /* read from here */
int bytes; /* bytes available from read pointer */
CURLMcode m; /* stored from a previous url_fread() */
};
typedef struct data URL_FILE;
/* we use a global one for convenience */
CURLM *multi_handle;
static
size_t write_callback(char *buffer,
size_t size,
size_t nitems,
void *userp)
{
URL_FILE *url = (URL_FILE *)userp;
size *= nitems;
memcpy(url->readptr, buffer, size);
url->readptr += size;
url->bytes += size;
fprintf(stderr, "callback %d size bytes\n", size);
return size;
}
URL_FILE *url_fopen(char *url, char *operation)
{
/* this code could check for URLs or types in the 'url' and
basicly use the real fopen() for standard files */
URL_FILE *file;
int still_running;
(void)operation;
file = (URL_FILE *)malloc(sizeof(URL_FILE));
if(!file)
return NULL;
memset(file, 0, sizeof(URL_FILE));
file->type = 1; /* marked as URL, use 0 for plain file */
file->handle.curl = curl_easy_init();
curl_easy_setopt(file->handle.curl, CURLOPT_URL, url);
curl_easy_setopt(file->handle.curl, CURLOPT_FILE, file);
curl_easy_setopt(file->handle.curl, CURLOPT_VERBOSE, FALSE);
curl_easy_setopt(file->handle.curl, CURLOPT_WRITEFUNCTION, write_callback);
if(!multi_handle)
multi_handle = curl_multi_init();
curl_multi_add_handle(multi_handle, file->handle.curl);
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
/* if still_running would be 0 now, we should return NULL */
return file;
}
void url_fclose(URL_FILE *file)
{
/* make sure the easy handle is not in the multi handle anymore */
curl_multi_remove_handle(multi_handle, file->handle.curl);
/* cleanup */
curl_easy_cleanup(file->handle.curl);
}
size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
{
fd_set fdread;
fd_set fdwrite;
fd_set fdexcep;
int maxfd;
struct timeval timeout;
int rc;
int still_running = 0;
if(!file->bytes) { /* no data available at this point */
file->readptr = file->buffer; /* reset read pointer */
if(CURLM_CALL_MULTI_PERFORM == file->m) {
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running)) {
if(file->bytes) {
printf("(fread) WOAH! THis happened!\n");
break;
}
}
if(!still_running) {
printf("DONE RUNNING AROUND!\n");
return 0;
}
}
do {
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_ZERO(&fdexcep);
/* set a suitable timeout to fail on */
timeout.tv_sec = 500; /* 5 minutes */
timeout.tv_usec = 0;
/* get file descriptors from the transfers */
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
switch(rc) {
case -1:
/* select error */
break;
case 0:
break;
default:
/* timeout or readable/writable sockets */
printf("select() returned %d!\n", rc);
do {
file->m = curl_multi_perform(multi_handle, &still_running);
if(file->bytes)
/* we have received data, return that now */
break;
} while(CURLM_CALL_MULTI_PERFORM == file->m);
if(!still_running)
printf("DONE RUNNING AROUND!\n");
break;
}
} while(still_running && (file->bytes <= 0));
}
else
printf("(fread) Skip network read\n");
if(file->bytes) {
/* data already available, return that */
int want = size * nmemb;
if(file->bytes < want)
want = file->bytes;
memcpy(ptr, file->readptr, want);
file->readptr += want;
file->bytes -= want;
printf("(fread) return %d bytes\n", want);
return want;
}
return 0; /* no data available to return */
}
int main(int argc, char *argv[])
{
URL_FILE *handle;
int nread;
char buffer[256];
(void)argc;
(void)argv;
handle = url_fopen("http://curl.haxx.se/", "r");
if(!handle) {
printf("couldn't url_fopen()\n");
}
do {
nread = url_fread(buffer, sizeof(buffer), 1, handle);
printf("We got: %d bytes\n", nread);
} while(nread);
url_fclose(handle);
return 0;
}

83
docs/examples/ftpget.c Normal file
View File

@@ -0,0 +1,83 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
/*
* This is an example showing how to get a single file from an FTP server.
* It delays the actual destination file creation until the first write
* callback so that it won't create an empty file in case the remote file
* doesn't exist or something else fails.
*/
struct FtpFile {
char *filename;
FILE *stream;
};
int my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
{
struct FtpFile *out=(struct FtpFile *)stream;
if(out && !out->stream) {
/* open file for writing */
out->stream=fopen(out->filename, "wb");
if(!out->stream)
return -1; /* failure, can't open file to write */
}
return fwrite(buffer, size, nmemb, out->stream);
}
int main(void)
{
CURL *curl;
CURLcode res;
struct FtpFile ftpfile={
"curl.tar.gz", /* name to store the file as if succesful */
NULL
};
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
/* Get curl 7.9.2 from sunet.se's FTP site: */
curl_easy_setopt(curl, CURLOPT_URL,
"ftp://ftp.sunet.se/pub/www/utilities/curl/curl-7.9.2.tar.gz");
/* Define our callback to get called when there's data to be written */
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
/* Set a pointer to our struct to pass to the callback */
curl_easy_setopt(curl, CURLOPT_FILE, &ftpfile);
/* Switch on full protocol/debug output */
curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
if(CURLE_OK != res) {
/* we failed */
fprintf(stderr, "curl told us %d\n", res);
}
}
if(ftpfile.stream)
fclose(ftpfile.stream); /* close the local file */
curl_global_cleanup();
return 0;
}

View File

@@ -0,0 +1,61 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
/*
* Similar to ftpget.c but this also stores the received response-lines
* in a separate file using our own callback!
*
* This functionality was introduced in libcurl 7.9.3.
*/
size_t
write_response(void *ptr, size_t size, size_t nmemb, void *data)
{
FILE *writehere = (FILE *)data;
return fwrite(ptr, size, nmemb, writehere);
}
int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
FILE *ftpfile;
FILE *respfile;
/* local file name to store the file as */
ftpfile = fopen("ftp-list", "wb"); /* b is binary, needed on win32 */
/* local file name to store the FTP server's response lines in */
respfile = fopen("ftp-responses", "wb"); /* b is binary, needed on win32 */
curl = curl_easy_init();
if(curl) {
/* Get a file listing from sunet */
curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.sunet.se/");
curl_easy_setopt(curl, CURLOPT_FILE, ftpfile);
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
curl_easy_setopt(curl, CURLOPT_WRITEHEADER, respfile);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
fclose(ftpfile); /* close the local file */
fclose(respfile); /* close the response file */
return 0;
}

91
docs/examples/ftpupload.c Normal file
View File

@@ -0,0 +1,91 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <curl/curl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
/*
* This example shows an FTP upload, with a rename of the file just after
* a successful upload.
*
* Example based on source code provided by Erick Nuwendam. Thanks!
*/
#define LOCAL_FILE "/tmp/uploadthis.txt"
#define UPLOAD_FILE_AS "while-uploading.txt"
#define REMOTE_URL "ftp://localhost/" UPLOAD_FILE_AS
#define RENAME_FILE_TO "renamed-and-fine.txt"
int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
FILE *ftpfile;
FILE * hd_src ;
int hd ;
struct stat file_info;
struct curl_slist *headerlist=NULL;
char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
char buf_2 [] = "RNTO " RENAME_FILE_TO;
/* get the file size of the local file */
hd = open(LOCAL_FILE, O_RDONLY) ;
fstat(hd, &file_info);
close(hd) ;
/* get a FILE * of the same file, could also be made with
fdopen() from the previous descriptor, but hey this is just
an example! */
hd_src = fopen(LOCAL_FILE, "rb");
/* In windows, this will init the winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
curl = curl_easy_init();
if(curl) {
/* build a list of commands to pass to libcurl */
headerlist = curl_slist_append(headerlist, buf_1);
headerlist = curl_slist_append(headerlist, buf_2);
/* enable uploading */
curl_easy_setopt(curl, CURLOPT_UPLOAD, TRUE) ;
/* specify target */
curl_easy_setopt(curl,CURLOPT_URL, REMOTE_URL);
/* pass in that last of FTP commands to run after the transfer */
curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
/* now specify which file to upload */
curl_easy_setopt(curl, CURLOPT_INFILE, hd_src);
/* and give the size of the upload (optional) */
curl_easy_setopt(curl, CURLOPT_INFILESIZE, file_info.st_size);
/* Now run off and do what you've been told! */
res = curl_easy_perform(curl);
/* clean up the FTP commands list */
curl_slist_free_all (headerlist);
/* always cleanup */
curl_easy_cleanup(curl);
}
fclose(hd_src); /* close the local file */
curl_global_cleanup();
return 0;
}

View File

@@ -0,0 +1,84 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* Example source code to show how the callback function can be used to
* download data into a chunk of memory instead of storing it in a file.
*
* This exact source code has not been verified to work.
*/
/* to make this work under windows, use the win32-functions from the
win32socket.c file as well */
#include <stdio.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
struct MemoryStruct {
char *memory;
size_t size;
};
size_t
WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
register int realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)data;
mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
if (mem->memory) {
memcpy(&(mem->memory[mem->size]), ptr, realsize);
mem->size += realsize;
mem->memory[mem->size] = 0;
}
return realsize;
}
int main(int argc, char **argv)
{
CURL *curl_handle;
struct MemoryStruct chunk;
chunk.memory=NULL; /* we expect realloc(NULL, size) to work */
chunk.size = 0; /* no data at this point */
/* init the curl session */
curl_handle = curl_easy_init();
/* specify URL to get */
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://cool.haxx.se/");
/* send all data to this function */
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
/* we pass our 'chunk' struct to the callback function */
curl_easy_setopt(curl_handle, CURLOPT_FILE, (void *)&chunk);
/* get it! */
curl_easy_perform(curl_handle);
/* cleanup curl stuff */
curl_easy_cleanup(curl_handle);
/*
* Now, our chunk.memory points to a memory block that is chunk.size
* bytes big and contains the remote file.
*
* Do something nice with it!
*
* You should be aware of the fact that at this point we might have an
* allocated data block, and nothing has yet deallocated that data. So when
* you're done with it, you should free() it as a nice application.
*/
return 0;
}

35
docs/examples/http-post.c Normal file
View File

@@ -0,0 +1,35 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
/* First set the URL that is about to receive our POST. This URL can
just as well be a https:// URL if that is what should receive the
data. */
curl_easy_setopt(curl, CURLOPT_URL, "http://postit.example.com/moo.cgi");
/* Now specify the POST data */
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

100
docs/examples/httpput.c Normal file
View File

@@ -0,0 +1,100 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <curl/curl.h>
/*
* This example shows a HTTP PUT operation. PUTs a file given as a command
* line argument to the URL also given on the command line.
*
* This example also uses its own read callback.
*/
size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
size_t retcode;
/* in real-world cases, this would probably get this data differently
as this fread() stuff is exactly what the library already would do
by default internally */
retcode = fread(ptr, size, nmemb, stream);
fprintf(stderr, "*** We read %d bytes from file\n", retcode);
return retcode;
}
int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
FILE *ftpfile;
FILE * hd_src ;
int hd ;
struct stat file_info;
char *file;
char *url;
if(argc < 3)
return 1;
file= argv[1];
url = argv[2];
/* get the file size of the local file */
hd = open(file, O_RDONLY) ;
fstat(hd, &file_info);
close(hd) ;
/* get a FILE * of the same file, could also be made with
fdopen() from the previous descriptor, but hey this is just
an example! */
hd_src = fopen(file, "rb");
/* In windows, this will init the winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
curl = curl_easy_init();
if(curl) {
/* we want to use our own read function */
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
/* enable uploading */
curl_easy_setopt(curl, CURLOPT_UPLOAD, TRUE) ;
/* HTTP PUT please */
curl_easy_setopt(curl, CURLOPT_PUT, TRUE);
/* specify target */
curl_easy_setopt(curl,CURLOPT_URL, url);
/* now specify which file to upload */
curl_easy_setopt(curl, CURLOPT_INFILE, hd_src);
/* and give the size of the upload (optional) */
curl_easy_setopt(curl, CURLOPT_INFILESIZE, file_info.st_size);
/* Now run off and do what you've been told! */
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
fclose(hd_src); /* close the local file */
curl_global_cleanup();
return 0;
}

99
docs/examples/multi-app.c Normal file
View File

@@ -0,0 +1,99 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* This is an example application source code using the multi interface.
*/
#include <stdio.h>
#include <string.h>
/* somewhat unix-specific */
#include <sys/time.h>
#include <unistd.h>
/* curl stuff */
#include <curl/curl.h>
/*
* Download a HTTP file and upload an FTP file simultaneously.
*/
int main(int argc, char **argv)
{
CURL *http_handle;
CURL *ftp_handle;
CURLM *multi_handle;
int still_running; /* keep number of running handles */
http_handle = curl_easy_init();
ftp_handle = curl_easy_init();
/* set the options (I left out a few, you'll get the point anyway) */
curl_easy_setopt(http_handle, CURLOPT_URL, "http://website.com");
curl_easy_setopt(ftp_handle, CURLOPT_URL, "ftp://ftpsite.com");
curl_easy_setopt(ftp_handle, CURLOPT_UPLOAD, TRUE);
/* init a multi stack */
multi_handle = curl_multi_init();
/* add the individual transfers */
curl_multi_add_handle(multi_handle, http_handle);
curl_multi_add_handle(multi_handle, ftp_handle);
/* we start some action by calling perform right away */
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
while(still_running) {
struct timeval timeout;
int rc; /* select() return code */
fd_set fdread;
fd_set fdwrite;
fd_set fdexcep;
int maxfd;
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_ZERO(&fdexcep);
/* set a suitable timeout to play around with */
timeout.tv_sec = 1;
timeout.tv_usec = 0;
/* get file descriptors from the transfers */
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
switch(rc) {
case -1:
/* select error */
break;
case 0:
/* timeout, do something else */
break;
default:
/* one or more of curl's file descriptors say there's data to read
or write */
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
break;
}
}
curl_multi_cleanup(multi_handle);
curl_easy_cleanup(http_handle);
curl_easy_cleanup(ftp_handle);
return 0;
}

View File

@@ -0,0 +1,95 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* This is a very simple example using the multi interface.
*/
#include <stdio.h>
#include <string.h>
/* somewhat unix-specific */
#include <sys/time.h>
#include <unistd.h>
/* curl stuff */
#include <curl/curl.h>
/*
* Simply download two HTTP files!
*/
int main(int argc, char **argv)
{
CURL *http_handle;
CURL *http_handle2;
CURLM *multi_handle;
int still_running; /* keep number of running handles */
http_handle = curl_easy_init();
http_handle2 = curl_easy_init();
/* set options */
curl_easy_setopt(http_handle, CURLOPT_URL, "http://www.haxx.se/");
/* set options */
curl_easy_setopt(http_handle2, CURLOPT_URL, "http://localhost/");
/* init a multi stack */
multi_handle = curl_multi_init();
/* add the individual transfers */
curl_multi_add_handle(multi_handle, http_handle);
curl_multi_add_handle(multi_handle, http_handle2);
/* we start some action by calling perform right away */
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
while(still_running) {
struct timeval timeout;
int rc; /* select() return code */
fd_set fdread;
fd_set fdwrite;
fd_set fdexcep;
int maxfd;
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_ZERO(&fdexcep);
/* set a suitable timeout to play around with */
timeout.tv_sec = 1;
timeout.tv_usec = 0;
/* get file descriptors from the transfers */
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
switch(rc) {
case -1:
/* select error */
break;
case 0:
default:
/* timeout or readable/writable sockets */
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
break;
}
}
curl_multi_cleanup(multi_handle);
curl_easy_cleanup(http_handle);
curl_easy_cleanup(http_handle2);
return 0;
}

126
docs/examples/multi-post.c Normal file
View File

@@ -0,0 +1,126 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* This is an example application source code using the multi interface
* to do a multipart formpost without "blocking".
*/
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <curl/curl.h>
int main(int argc, char *argv[])
{
CURL *curl;
CURLcode res;
CURLM *multi_handle;
int still_running;
struct HttpPost *formpost=NULL;
struct HttpPost *lastptr=NULL;
struct curl_slist *headerlist=NULL;
char buf[] = "Expect:";
/* Fill in the file upload field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "sendfile",
CURLFORM_FILE, "postit2.c",
CURLFORM_END);
/* Fill in the filename field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "filename",
CURLFORM_COPYCONTENTS, "postit2.c",
CURLFORM_END);
/* Fill in the submit field too, even if this is rarely needed */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "submit",
CURLFORM_COPYCONTENTS, "send",
CURLFORM_END);
curl = curl_easy_init();
multi_handle = curl_multi_init();
/* initalize custom header list (stating that Expect: 100-continue is not
wanted */
headerlist = curl_slist_append(headerlist, buf);
if(curl && multi_handle) {
int perform=0;
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL,
"http://www.fillinyoururl.com/upload.cgi");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
curl_multi_add_handle(multi_handle, curl);
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
while(still_running) {
struct timeval timeout;
int rc; /* select() return code */
fd_set fdread;
fd_set fdwrite;
fd_set fdexcep;
int maxfd;
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_ZERO(&fdexcep);
/* set a suitable timeout to play around with */
timeout.tv_sec = 1;
timeout.tv_usec = 0;
/* get file descriptors from the transfers */
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
switch(rc) {
case -1:
/* select error */
break;
case 0:
printf("timeout!\n");
default:
/* timeout or readable/writable sockets */
printf("perform!\n");
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
printf("running: %d!\n", still_running);
break;
}
}
curl_multi_cleanup(multi_handle);
/* always cleanup */
curl_easy_cleanup(curl);
/* then cleanup the formpost chain */
curl_formfree(formpost);
/* free slist */
curl_slist_free_all (headerlist);
}
return 0;
}

View File

@@ -0,0 +1,88 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* This is a very simple example using the multi interface.
*/
#include <stdio.h>
#include <string.h>
/* somewhat unix-specific */
#include <sys/time.h>
#include <unistd.h>
/* curl stuff */
#include <curl/curl.h>
/*
* Simply download a HTTP file.
*/
int main(int argc, char **argv)
{
CURL *http_handle;
CURLM *multi_handle;
int still_running; /* keep number of running handles */
http_handle = curl_easy_init();
/* set the options (I left out a few, you'll get the point anyway) */
curl_easy_setopt(http_handle, CURLOPT_URL, "http://www.haxx.se/");
/* init a multi stack */
multi_handle = curl_multi_init();
/* add the individual transfers */
curl_multi_add_handle(multi_handle, http_handle);
/* we start some action by calling perform right away */
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
while(still_running) {
struct timeval timeout;
int rc; /* select() return code */
fd_set fdread;
fd_set fdwrite;
fd_set fdexcep;
int maxfd;
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_ZERO(&fdexcep);
/* set a suitable timeout to play around with */
timeout.tv_sec = 1;
timeout.tv_usec = 0;
/* get file descriptors from the transfers */
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
switch(rc) {
case -1:
/* select error */
break;
case 0:
default:
/* timeout or readable/writable sockets */
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
break;
}
}
curl_multi_cleanup(multi_handle);
curl_easy_cleanup(http_handle);
return 0;
}

View File

@@ -0,0 +1,70 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
/* A multi-threaded example that uses pthreads extensively to fetch
* X remote files at once */
#include <stdio.h>
#include <pthread.h>
#include <curl/curl.h>
/* silly list of test-URLs */
char *urls[]= {
"http://curl.haxx.se/",
"ftp://cool.haxx.se/",
"http://www.contactor.se/",
"www.haxx.se"
};
void *pull_one_url(void *url)
{
CURL *curl;
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
return NULL;
}
/*
int pthread_create(pthread_t *new_thread_ID,
const pthread_attr_t *attr,
void * (*start_func)(void *), void *arg);
*/
int main(int argc, char **argv)
{
pthread_t tid[4];
int i;
int error;
for(i=0; i< 4; i++) {
error = pthread_create(&tid[i],
NULL, /* default attributes please */
pull_one_url,
urls[i]);
if(0 != error)
fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
else
fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]);
}
/* now wait for all threads to terminate */
for(i=0; i< 4; i++) {
error = pthread_join(tid[i], NULL);
fprintf(stderr, "Thread %d terminated\n", i);
}
return 0;
}

View File

@@ -0,0 +1,53 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <unistd.h>
#include <curl/curl.h>
/* to make this work under windows, use the win32-functions from the
docs/examples/win32socket.c file as well */
/* This example REQUIRES libcurl 7.7 or later */
#if (LIBCURL_VERSION_NUM < 0x070700)
#error Too old libcurl version, upgrade or stay away.
#endif
int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
#ifdef MALLOCDEBUG
/* this sends all memory debug messages to a specified logfile */
curl_memdebug("memdump");
#endif
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
/* get the first document */
curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/");
res = curl_easy_perform(curl);
/* get another document from the same server using the same
connection */
curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/docs/");
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

View File

@@ -0,0 +1,89 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* An example source code that issues a HTTP POST and we provide the actual
* data through a read callback.
*
* Please be aware of the fact that the size of the posted data MUST be
* specified before the transfer is being made (with CURLOPT_POSTFIELDSIZE).
* This requirement will change when libcurl starts supporting chunked-encoded
* sends.
*
* This example requires libcurl 7.9.6 or later.
*/
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#if LIBCURL_VERSION_NUM < 0x070906
#error this example source requires libcurl 7.9.6 or newer
#endif
char data[]="this is what we post to the silly web server";
struct WriteThis {
char *readptr;
int sizeleft;
};
size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
{
struct WriteThis *pooh = (struct WriteThis *)userp;
if(size*nmemb < 1)
return 0;
if(pooh->sizeleft) {
*(char *)ptr = pooh->readptr[0]; /* copy one single byte */
pooh->readptr++; /* advance pointer */
pooh->sizeleft--; /* less data left */
return 1; /* we return 1 byte at a time! */
}
return -1; /* no more data left to deliver */
}
int main(void)
{
CURL *curl;
CURLcode res;
struct WriteThis pooh;
pooh.readptr = data;
pooh.sizeleft = strlen(data);
curl = curl_easy_init();
if(curl) {
/* First set the URL that is about to receive our POST. */
curl_easy_setopt(curl, CURLOPT_URL,
"http://receivingsite.com.pooh/index.cgi");
/* Now specify we want to POST data */
curl_easy_setopt(curl, CURLOPT_POST, TRUE);
/* Set the expected POST size */
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, pooh.sizeleft);
/* we want to use our own read function */
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
/* pointer to pass to our read function */
curl_easy_setopt(curl, CURLOPT_INFILE, &pooh);
/* get verbose debug output please */
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

92
docs/examples/postit2.c Normal file
View File

@@ -0,0 +1,92 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* Example code that uploads a file name 'foo' to a remote script that accepts
* "HTML form based" (as described in RFC1738) uploads using HTTP POST.
*
* The imaginary form we'll fill in looks like:
*
* <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
* Enter file: <input type="file" name="sendfile" size="40">
* Enter file name: <input type="text" name="filename" size="30">
* <input type="submit" value="send" name="submit">
* </form>
*
* This exact source code has not been verified to work.
*/
/* to make this work under windows, use the win32-functions from the
win32socket.c file as well */
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#if LIBCURL_VERSION_NUM < 0x070900
#error "curl_formadd() is not introduced until libcurl 7.9 and later"
#endif
int main(int argc, char *argv[])
{
CURL *curl;
CURLcode res;
struct HttpPost *formpost=NULL;
struct HttpPost *lastptr=NULL;
struct curl_slist *headerlist=NULL;
char buf[] = "Expect:";
/* Fill in the file upload field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "sendfile",
CURLFORM_FILE, "postit2.c",
CURLFORM_END);
/* Fill in the filename field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "filename",
CURLFORM_COPYCONTENTS, "postit2.c",
CURLFORM_END);
/* Fill in the submit field too, even if this is rarely needed */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "submit",
CURLFORM_COPYCONTENTS, "send",
CURLFORM_END);
curl = curl_easy_init();
/* initalize custom header list (stating that Expect: 100-continue is not
wanted */
headerlist = curl_slist_append(headerlist, buf);
if(curl) {
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/examplepost.cgi");
if ( (argc == 2) && (!strcmp(argv[1], "noexpectheader")) )
/* only disable 100-continue header if explicitly requested */
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
/* then cleanup the formpost chain */
curl_formfree(formpost);
/* free slist */
curl_slist_free_all (headerlist);
}
return 0;
}

View File

@@ -0,0 +1,80 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
/* to make this work under windows, use the win32-functions from the
win32socket.c file as well */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
int written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
}
int main(int argc, char **argv)
{
CURL *curl_handle;
char *headerfilename = "head.out";
FILE *headerfile;
char *bodyfilename = "body.out";
FILE *bodyfile;
/* init the curl session */
curl_handle = curl_easy_init();
/* set URL to get */
curl_easy_setopt(curl_handle, CURLOPT_URL, "http://curl.haxx.se");
/* no progress meter please */
curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1);
/* shut up completely */
curl_easy_setopt(curl_handle, CURLOPT_MUTE, 1);
/* send all data to this function */
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
/* open the files */
headerfile = fopen(headerfilename,"w");
if (headerfile == NULL) {
curl_easy_cleanup(curl_handle);
return -1;
}
bodyfile = fopen(bodyfilename,"w");
if (bodyfile == NULL) {
curl_easy_cleanup(curl_handle);
return -1;
}
/* we want the headers to this file handle */
curl_easy_setopt(curl_handle, CURLOPT_WRITEHEADER ,headerfile);
/*
* Notice here that if you want the actual data sent anywhere else but
* stdout, you should consider using the CURLOPT_WRITEDATA option. */
/* get it! */
curl_easy_perform(curl_handle);
/* close the header file */
fclose(headerfile);
/* cleanup curl stuff */
curl_easy_cleanup(curl_handle);
return 0;
}

28
docs/examples/simple.c Normal file
View File

@@ -0,0 +1,28 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

View File

@@ -0,0 +1,36 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
char *postthis="moo mooo moo moo";
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://posthere.com");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postthis);
/* if we don't provide POSTFIELDSIZE, libcurl will strlen() by
itself */
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(postthis));
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

118
docs/examples/simplessl.c Normal file
View File

@@ -0,0 +1,118 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
/* some requirements for this to work:
1. set pCertFile to the file with the client certificate
2. if the key is passphrase protected, set pPassphrase to the
passphrase you use
3. if you are using a crypto engine:
3.1. set a #define USE_ENGINE
3.2. set pEngine to the name of the crypto engine you use
3.3. set pKeyName to the key identifier you want to use
4. if you don't use a crypto engine:
4.1. set pKeyName to the file name of your client key
4.2. if the format of the key file is DER, set pKeyType to "DER"
!! verify of the server certificate is not implemented here !!
**** This example only works with libcurl 7.9.3 and later! ****
*/
int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
FILE *headerfile;
const char *pCertFile = "testcert.pem";
const char *pCACertFile="cacert.pem"
const char *pKeyName;
const char *pKeyType;
const char *pEngine;
#if USE_ENGINE
pKeyName = "rsa_test";
pKeyType = "ENG";
pEngine = "chil"; /* for nChiper HSM... */
#else
pKeyName = "testkey.pem";
pKeyType = "PEM";
pEngine = NULL;
#endif
const char *pPassphrase = NULL;
headerfile = fopen("dumpit", "w");
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
/* what call to write: */
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
curl_easy_setopt(curl, CURLOPT_WRITEHEADER, headerfile);
while(1) /* do some ugly short cut... */
{
if (pEngine) /* use crypto engine */
{
if (curl_easy_setopt(curl, CURLOPT_SSLENGINE,pEngine) != CURLE_OK)
{ /* load the crypto engine */
fprintf(stderr,"can't set crypto engine\n");
break;
}
if (curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT,1) != CURLE_OK)
{ /* set the crypto engine as default */
/* only needed for the first time you load
a engine in a curl object... */
fprintf(stderr,"can't set crypto engine as default\n");
break;
}
}
/* cert is stored PEM coded in file... */
/* since PEM is default, we needn't set it for PEM */
curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
/* set the cert for client authentication */
curl_easy_setopt(curl,CURLOPT_SSLCERT,pCertFile);
/* sorry, for engine we must set the passphrase
(if the key has one...) */
if (pPassphrase)
curl_easy_setopt(curl,CURLOPT_SSLKEYPASSWD,pPassphrase);
/* if we use a key stored in a crypto engine,
we must set the key type to "ENG" */
curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,pKeyType);
/* set the private key (file or ID in engine) */
curl_easy_setopt(curl,CURLOPT_SSLKEY,pKeyName);
/* set the file with the certs vaildating the server */
curl_easy_setopt(curl,CURLOPT_CAINFO,pCACertFile);
/* disconnect if we can't validate server's cert */
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,1);
res = curl_easy_perform(curl);
break; /* we are done... */
}
/* always cleanup */
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}

21
docs/index.html Normal file
View File

@@ -0,0 +1,21 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Index to Curl documentation</TITLE>
</HEAD>
<BODY>
<H1 ALIGN="CENTER">Index to Curl documentation</H1>
<H2>Programs</H2>
<a href="curl-config.html">curl-config</A>
<br><a href="curl.html">curl</A>
<h2>Tutorial</h2>
<a href="TheArtOfHttpScripting">The Art Of Scripting HTTP Requests Using Curl</a> (plain text)
<h2>libcurl</h2>
See the <a href="libcurl/index.html">libcurl section</a>
</BODY>
</HTML>

1102
docs/libcurl-the-guide Normal file

File diff suppressed because it is too large Load Diff

5
docs/libcurl/.cvsignore Normal file
View File

@@ -0,0 +1,5 @@
Makefile
Makefile.in
*html
*ps
*pdf

132
docs/libcurl/Makefile.am Normal file
View File

@@ -0,0 +1,132 @@
#
# $Id$
#
AUTOMAKE_OPTIONS = foreign no-dependencies
man_MANS = \
curl_easy_cleanup.3 \
curl_easy_getinfo.3 \
curl_easy_init.3 \
curl_easy_perform.3 \
curl_easy_setopt.3 \
curl_easy_duphandle.3 \
curl_formparse.3 \
curl_formadd.3 \
curl_formfree.3 \
curl_getdate.3 \
curl_getenv.3 \
curl_slist_append.3 \
curl_slist_free_all.3 \
curl_version.3 \
curl_version_info.3 \
curl_escape.3 \
curl_unescape.3 \
curl_free.3 \
curl_strequal.3 \
curl_strnequal.3 \
curl_mprintf.3 \
curl_global_init.3 \
curl_global_cleanup.3 \
libcurl.3 \
curl_multi_add_handle.3 \
curl_multi_cleanup.3 \
curl_multi_fdset.3 \
curl_multi_info_read.3 \
curl_multi_init.3 \
curl_multi_perform.3 \
curl_multi_remove_handle.3 \
libcurl-multi.3 \
libcurl-errors.3
HTMLPAGES = \
curl_easy_cleanup.html \
curl_easy_getinfo.html \
curl_easy_init.html \
curl_easy_perform.html \
curl_easy_setopt.html \
curl_easy_duphandle.html \
curl_formadd.html \
curl_formparse.html \
curl_formfree.html \
curl_getdate.html \
curl_getenv.html \
curl_slist_append.html \
curl_slist_free_all.html \
curl_version.html \
curl_version_info.html \
curl_escape.html \
curl_unescape.html \
curl_free.html \
curl_strequal.html \
curl_strnequal.html \
curl_mprintf.html \
curl_global_init.html \
curl_global_cleanup.html \
libcurl.html \
curl_multi_add_handle.html \
curl_multi_cleanup.html \
curl_multi_fdset.html \
curl_multi_info_read.html \
curl_multi_init.html \
curl_multi_perform.html \
curl_multi_remove_handle.html \
libcurl-multi.html \
libcurl-errors.html \
index.html
PDFPAGES = \
curl_easy_cleanup.pdf \
curl_easy_getinfo.pdf \
curl_easy_init.pdf \
curl_easy_perform.pdf \
curl_easy_setopt.pdf \
curl_easy_duphandle.pdf \
curl_formadd.pdf \
curl_formparse.pdf \
curl_formfree.pdf \
curl_getdate.pdf \
curl_getenv.pdf \
curl_slist_append.pdf \
curl_slist_free_all.pdf \
curl_version.pdf \
curl_version_info.pdf \
curl_escape.pdf \
curl_unescape.pdf \
curl_free.pdf \
curl_strequal.pdf \
curl_strnequal.pdf \
curl_mprintf.pdf \
curl_global_init.pdf \
curl_global_cleanup.pdf \
libcurl.pdf \
curl_multi_add_handle.pdf \
curl_multi_cleanup.pdf \
curl_multi_fdset.pdf \
curl_multi_info_read.pdf \
curl_multi_init.pdf \
curl_multi_perform.pdf \
curl_multi_remove_handle.pdf \
libcurl-multi.pdf \
libcurl-errors.pdf
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) $(PDFPAGES)
MAN2HTML= gnroff -man $< | man2html >$@
SUFFIXES = .1 .3 .html
html: $(HTMLPAGES)
.3.html:
$(MAN2HTML)
.1.html:
$(MAN2HTML)
pdf:
for file in $(man_MANS); do \
foo=`echo $$file | sed -e 's/\.[0-9]$$//g'`; \
groff -Tps -man $$file >$$foo.ps; \
ps2pdf $$foo.ps $$foo.pdf; \
done

View File

@@ -0,0 +1,28 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_cleanup 3 "13 Nov 2002" "libcurl 7.7" "libcurl Manual"
.SH NAME
curl_easy_cleanup - End a libcurl easy session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_easy_cleanup(CURL *" handle ");"
.ad
.SH DESCRIPTION
This function must be the last function to call for an easy session. It is the
opposite of the \fIcurl_easy_init\fP function and must be called with the same
\fIhandle\fP as input that the curl_easy_init call returned.
This will effectively close all connections this handle has used and possibly
has kept open until now. Don't call this function if you intend to transfer
more files.
When you've called this, you can safely remove all the strings you've
previously told libcurl to use, as it won't use them anymore now.
.SH RETURN VALUE
None
.SH "SEE ALSO"
.BR curl_easy_init "(3), "

View File

@@ -0,0 +1,37 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_duphandle 3 "18 September 2001" "libcurl 7.9" "libcurl Manual"
.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURL *curl_easy_duphandle(CURL *"handle ");"
.ad
.SH DESCRIPTION
This function will return a new curl handle, a duplicate, using all the
options previously set in the input curl \fIhandle\fP. Both handles can
subsequently be used independently and they must both be freed with
\fIcurl_easy_cleanup()\fP.
All strings that the input handle has been told to point to (as opposed to
copy) with previous calls to \fIcurl_easy_setopt\fP using char * inputs, will
be pointed to by the new handle as well. You must therefore make sure to keep
the data around until both handles have been cleaned up.
The new handle will \fBnot\fP inherit any state information, no connections,
no SSL sessions and no cookies.
\fBNote\fP that even in multi-threaded programs, this function must be called
in a synchronous way, the input handle may not be in use when cloned.
This function was added in libcurl 7.9.
.SH RETURN VALUE
If this function returns NULL, something went wrong and no valid handle was
returned.
.SH "SEE ALSO"
.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_global_init "(3)
.SH BUGS
Surely there are some, you tell me!

View File

@@ -0,0 +1,131 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_init 3 "25 Apr 2002" "libcurl 7.9.7" "libcurl Manual"
.SH NAME
curl_easy_getinfo - Extract information from a curl session (added in 7.4)
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"
.ad
.SH DESCRIPTION
Request internal information from the curl session with this function. The
third argument
.B MUST
be a pointer to a long, a pointer to a char * or a pointer to a double (as
this documentation describes further down). The data pointed-to will be
filled in accordingly and can be relied upon only if the function returns
CURLE_OK. This function is intended to get used *AFTER* a performed transfer,
all results from this function are undefined until the transfer is completed.
.SH AVAILABLE INFORMATION
These are informations that can be extracted:
.TP 0.8i
.B CURLINFO_EFFECTIVE_URL
Pass a pointer to a 'char *' to receive the last used effective URL.
.TP
.B CURLINFO_HTTP_CODE
Pass a pointer to a long to receive the last received HTTP code.
.TP
.B CURLINFO_FILETIME
Pass a pointer to a long to receive the remote time of the retrieved
document. If you get -1, it can be because of many reasons (unknown, the
server hides it or the server doesn't support the command that tells document
time etc) and the time of the document is unknown. Note that you must tell the
server to collect this information before the transfer is made, by using the
CURLOPT_FILETIME option to \fIcurl_easy_setopt(3)\fP. (Added in 7.5)
.TP
.B CURLINFO_TOTAL_TIME
Pass a pointer to a double to receive the total transaction time in seconds
for the previous transfer. This time does not include the connect time, so if
you want the complete operation time, you should add the
CURLINFO_CONNECT_TIME.
.TP
.B CURLINFO_NAMELOOKUP_TIME
Pass a pointer to a double to receive the time, in seconds, it took from the
start until the name resolving was completed.
.TP
.B 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.
.TP
.B 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
pre-transfer commands and negotiations that are specific to the particular
protocol(s) involved.
.TP
.B CURLINFO_STARTTRANSFER_TIME
Pass a pointer to a double to receive the time, in seconds, it took from the
start until the first byte is just about to be transfered. This includes
CURLINFO_PRETRANSFER_TIME and also the time the server needs to calculate
the result.
.TP
.B CURLINFO_REDIRECT_TIME
Pass a pointer to a double to receive the total time, in seconds, it took for
all redirection steps include name lookup, connect, pretransfer and transfer
before final transaction was started. CURLINFO_REDIRECT_TIME contains the
complete execution time for multiple redirections. (Added in 7.9.7)
.TP
.B CURLINFO_REDIRECT_COUNT
Pass a pointer to a long to receive the total number of redirections that were
actually followed. (Added in 7.9.7)
.TP
.B CURLINFO_SIZE_UPLOAD
Pass a pointer to a double to receive the total amount of bytes that were
uploaded.
.TP
.B CURLINFO_SIZE_DOWNLOAD
Pass a pointer to a double to receive the total amount of bytes that were
downloaded. The amount is only for the latest transfer and will be reset again
for each new transfer.
.TP
.B CURLINFO_SPEED_DOWNLOAD
Pass a pointer to a double to receive the average download speed that curl
measured for the complete download.
.TP
.B CURLINFO_SPEED_UPLOAD
Pass a pointer to a double to receive the average upload speed that curl
measured for the complete upload.
.TP
.B CURLINFO_HEADER_SIZE
Pass a pointer to a long to receive the total size of all the headers
received.
.TP
.B CURLINFO_REQUEST_SIZE
Pass a pointer to a long to receive the total size of the issued
requests. This is so far only for HTTP requests. Note that this may be more
than one request if FOLLOWLOCATION is true.
.TP
.B CURLINFO_SSL_VERIFYRESULT
Pass a pointer to a long to receive the result of the certification
verification that was requested (using the CURLOPT_SSL_VERIFYPEER option to
curl_easy_setopt). (Added in 7.4.2)
.TP
.B CURLINFO_CONTENT_LENGTH_DOWNLOAD
Pass a pointer to a double to receive the content-length of the download. This
is the value read from the Content-Length: field. (Added in 7.6.1)
.TP
.B CURLINFO_CONTENT_LENGTH_UPLOAD
Pass a pointer to a double to receive the specified size of the upload.
(Added in 7.6.1)
.TP
.B CURLINFO_CONTENT_TYPE
Pass a pointer to a 'char *' to receive the content-type of the downloaded
object. This is the value read from the Content-Type: field. If you get NULL,
it means that the server didn't send a valid Content-Type header or that the
protocol used doesn't support this. (Added in 7.9.4)
.TP
.B CURLINFO_PRIVATE
Pass a pointer to a 'char *' to receive the pointer to the private data
associated with the curl handle (set with the CURLOPT_PRIVATE option to curl_easy_setopt).
(Added in 7.10.3)
.PP
.SH RETURN VALUE
If the operation was successful, CURLE_OK is returned. Otherwise an
appropriate error code will be returned.
.SH "SEE ALSO"
.BR curl_easy_setopt "(3)"
.SH BUGS
Surely there are some, you tell me!

View File

@@ -0,0 +1,25 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_init 3 "4 March 2002" "libcurl 7.8.1" "libcurl Manual"
.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURL *curl_easy_init( );"
.ad
.SH DESCRIPTION
This function must be the first function to call, and it returns a CURL easy
handle that you must use as input to other easy-functions. curl_easy_init
intializes curl and this call MUST have a corresponding call to
\fIcurl_easy_cleanup\fP when the operation is complete.
.SH RETURN VALUE
If this function returns NULL, something went wrong and you cannot use the
other curl functions.
.SH "SEE ALSO"
.BR curl_easy_cleanup "(3), " curl_global_init "(3)
.SH BUGS
Surely there are some, you tell me!

View File

@@ -0,0 +1,46 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_perform 3 "5 Mar 2001" "libcurl 7.7" "libcurl Manual"
.SH NAME
curl_easy_perform - Perform a file transfer
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_easy_perform(CURL *" handle ");
.ad
.SH DESCRIPTION
This function is called after the init and all the curl_easy_setopt() calls
are made, and will perform the transfer as described in the options.
It must be called with the same
.I handle
as input as the curl_easy_init call returned.
libcurl version 7.7 or later (for older versions see below): You can do any
amount of calls to curl_easy_perform() while using the same handle. If you
intend to transfer more than one file, you are even encouraged to do
so. libcurl will then attempt to re-use the same connection for the following
transfers, thus making the operations faster, less CPU intense and using less
network resources. Just note that you will have to use
.I curl_easy_setopt
between the invokes to set options for the following curl_easy_perform.
You must never call this function simultaneously from two places using the
same handle. Let the function return first before invoking it another time. If
you want parallel transfers, you must use several curl handles.
Before libcurl version 7.7: You are only allowed to call this function once
using the same handle. If you want to do repeated calls, you must call
curl_easy_cleanup and curl_easy_init again first.
.SH RETURN VALUE
0 means everything was ok, non-zero means an error occurred as
.I <curl/curl.h>
defines. If the CURLOPT_ERRORBUFFER was set with
.I curl_easy_setopt
there will be a readable error message in the error buffer when non-zero is
returned.
.SH "SEE ALSO"
.BR curl_easy_init "(3), " curl_easy_setopt "(3), "
.SH BUGS
Surely there are some, you tell me!

View File

@@ -0,0 +1,853 @@
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_setopt 3 "3 Dec 2002" "libcurl 7.10.3" "libcurl Manual"
.SH NAME
curl_easy_setopt - set options for a curl easy handle
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
.ad
.SH DESCRIPTION
curl_easy_setopt() is used to tell libcurl how to behave. By using the
appropriate options to \fIcurl_easy_setopt\fP, you can change libcurl's
behavior. All options are set with the \fIoption\fP followed by a
\fIparameter\fP. That parameter can be a long, a function pointer or an object
pointer, all depending on what the specific option expects. Read this manual
carefully as bad input values may cause libcurl to behave badly! You can only
set one option in each function call. A typical application uses many
curl_easy_setopt() calls in the setup phase.
\fBNOTE:\fP strings passed to libcurl as 'char *' arguments, will not be
copied by the library. Instead you should keep them available until libcurl no
longer needs them. Failing to do so will cause very odd behavior or even
crashes. libcurl will need them until you call curl_easy_cleanup() or you set
the same option again to use a different pointer.
\fBNOTE2:\fP options set with this function call are valid for the forthcoming
data transfers that are performed when you invoke \fIcurl_easy_perform\fP.
The options are not in any way reset between transfers, so if you want
subsequent transfers with different options, you must change them between the
transfers.
The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
\fIcurl_easy_duphandle(3)\fP call.
.SH BEHAVIOR OPTIONS
.TP 0.4i
.B CURLOPT_VERBOSE
Set the parameter to non-zero to get the library to display a lot of verbose
information about its operations. Very useful for libcurl and/or protocol
debugging and understanding.
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.
.TP
.B CURLOPT_HEADER
A non-zero parameter 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).
.TP
.B CURLOPT_NOPROGRESS
A non-zero parameter tells the library to shut of the built-in progress meter
completely.
\fBNOTE:\fP future versions of libcurl is likely to not have any built-in
progress meter at all.
.TP
.B CURLOPT_NOSIGNAL
Pass a long. If it is non-zero, 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.
(Added in 7.10)
.PP
.SH CALLBACK OPTIONS
.TP 0.4i
.B CURLOPT_WRITEFUNCTION
Function pointer that should match the following prototype: \fBsize_t
function( void *ptr, size_t size, size_t nmemb, void *stream);\fP This
function gets called by libcurl as soon as there is data reveiced that needs
to be saved. The size of the data pointed to by \fIptr\fP is \fIsize\fP
multiplied with \fInmemb\fP, it will not be zero terminated. Return the number
of bytes actually taken care of. If that amount differs from the amount passed
to your function, it'll signal an error to the library and it will abort the
transfer and return \fICURLE_WRITE_ERROR\fP.
Set the \fIstream\fP argument with the \fBCURLOPT_FILE\fP option.
\fBNOTE:\fP you will be passed as much data as possible in all invokes, but
you cannot possibly make any assumptions. It may be one byte, it may be
thousands. The maximum amount of data that can be passed to the write callback
is defined in the curl.h header file: CURL_MAX_WRITE_SIZE.
.TP
.B CURLOPT_WRITEDATA
Data pointer to pass to the file write function. Note that if you specify the
\fICURLOPT_WRITEFUNCTION\fP, this is the pointer you'll get as input. If you
don't use a callback, you must pass a 'FILE *' as libcurl will pass this to
fwrite() when writing data.
\fBNOTE:\fP If you're using libcurl as a win32 DLL, you MUST use the
\fICURLOPT_WRITEFUNCTION\fP if you set this option or you will experience
crashes.
This option is also known with the older name \fBCURLOPT_FILE\fP, the name
CURLOPT_WRITEDATA was introduced in 7.9.7.
.TP
.B CURLOPT_READFUNCTION
Function pointer that should match the following prototype: \fBsize_t
function( void *ptr, size_t size, size_t nmemb, void *stream);\fP This
function gets called by libcurl as soon as it needs to read data in order to
send it to the peer. The data area pointed at by the pointer \fIptr\fP may be
filled with at most \fIsize\fP multiplied with \fInmemb\fP number of
bytes. Your function must return the actual number of bytes that you stored in
that memory area. Returning 0 will signal end-of-file to the library and cause
it to stop the current transfer.
.TP
.B CURLOPT_READDATA
Data pointer to pass to the file read function. Note that if you specify the
\fICURLOPT_READFUNCTION\fP, this is the pointer you'll get as input. If you
don't specify a read callback, this must be a valid FILE *.
\fBNOTE:\fP If you're using libcurl as a win32 DLL, you MUST use a
\fICURLOPT_READFUNCTION\fP if you set this option.
This option is also known with the older name \fBCURLOPT_INFILE\fP, the name
CURLOPT_READDATA was introduced in 7.9.7.
.TP
.B CURLOPT_PROGRESSFUNCTION
Function pointer that should match the \fIcurl_progress_callback\fP prototype
found in \fI<curl/curl.h>\fP. This function gets called by libcurl instead of
its internal equivalent with a frequent interval during data transfer.
Unknown/unused argument values will be set to zero (like if you only download
data, the upload size will remain 0). Returning a non-zero value from this
callback will cause libcurl to abort the transfer and return
\fICURLE_ABORTED_BY_CALLBACK\fP.
Also note that \fICURLOPT_NOPROGRESS\fP must be set to FALSE to make this
function actually get called.
.TP
.B CURLOPT_PROGRESSDATA
Pass a pointer that will be untouched by libcurl and passed as the first
argument in the progress callback set with \fICURLOPT_PROGRESSFUNCTION\fP.
.TP
.B CURLOPT_PASSWDFUNCTION
Pass a pointer to a \fIcurl_passwd_callback\fP function that will be called
instead of the internal one if libcurl requests a password. The function must
match this prototype: \fBint getpass(void *client, char *prompt, char* buffer,
int buflen );\fP. If set to NULL, it sets back the function to the internal
default one. If the function returns a non-zero value, it will abort the
operation and an error (CURLE_BAD_PASSWORD_ENTERED) will be returned.
\fIclient\fP is a generic pointer, see \fICURLOPT_PASSWDDATA\fP. \fIprompt\fP
is a zero-terminated string that is text that prefixes the input request.
\fIbuffer\fP is a pointer to data where the entered password should be stored
and \fIbuflen\fP is the maximum number of bytes that may be written in the
buffer. (Added in 7.4.2)
.TP
.B CURLOPT_PASSWDDATA
Pass a void * to whatever data you want. The passed pointer will be the first
argument sent to the specifed \fICURLOPT_PASSWDFUNCTION\fP function. (Added in
7.4.2)
.TP
.B CURLOPT_HEADERFUNCTION
Function pointer that should match the following prototype: \fIsize_t
function( void *ptr, size_t size, size_t nmemb, void *stream);\fP. This
function gets called by libcurl as soon as there is received header data that
needs to be written down. The headers are guaranteed to be written one-by-one
and only complete lines are written. Parsing headers should be easy enough
using this. The size of the data pointed to by \fIptr\fP is \fIsize\fP
multiplied with \fInmemb\fP. The pointer named \fIstream\fP will be the one
you passed to libcurl with the \fICURLOPT_WRITEHEADER\fP option. Return the
number of bytes actually written or return -1 to signal error to the library
(it will cause it to abort the transfer with a \fICURLE_WRITE_ERROR\fP return
code). (Added in 7.7.2)
.TP
.B CURLOPT_WRITEHEADER
Pass a pointer to be used to write the header part of the received data to. If
you don't use your own callback to take care of the writing, this must be a
valid FILE *. See also the \fICURLOPT_HEADERFUNCTION\fP option above on how to
set a custom get-all-headers callback.
.TP
.B CURLOPT_DEBUGFUNCTION
Function pointer that should match the following prototype: \fIint
curl_debug_callback (CURL *, curl_infotype, char *, size_t, void *);\fP
This function will receive debug information if CURLOPT_VERBOSE is
enabled. The curl_infotype argument specifies what kind of information it
is. This funtion must return 0.
NOTE: the data pointed to by the char * passed to this function WILL NOT be
zero terminated, but will be exactly of the size as told by the size_t
argument.
.TP
.B CURLOPT_DEBUGDATA
Pass a pointer to whatever you want passed in to your CURLOPT_DEBUGFUNCTION in
the last void * argument. This pointer is not used by libcurl, it is only
passed to the callback.
.PP
.SH ERROR OPTIONS
.TP 0.4i
.B CURLOPT_ERRORBUFFER
Pass a char * to a buffer that the libcurl may store human readable error
messages in. This may be more helpful than just the return code from the
library. The buffer must be at least CURL_ERROR_SIZE big.
Use \fICURLOPT_VERBOSE\fP and \fICURLOPT_DEBUGFUNCTION\fP to better
debug/trace why errors happen.
\fBNote:\fP if the library does not return an error, the buffer may not have
been touched. Do not rely on the contents in those cases.
.TP
.B CURLOPT_STDERR
Pass a FILE * as parameter. This is the stream to use instead of stderr
internally when reporting errors.
.TP
.B CURLOPT_FAILONERROR
A non-zero parameter tells the library to fail silently if the HTTP code
returned is equal to or larger than 300. The default action would be to return
the page normally, ignoring that code.
.PP
.SH NETWORK OPTIONS
.TP 0.4i
.B CURLOPT_URL
The actual URL to deal with. The parameter should be a char * to a zero
terminated string. The string must remain present until curl no longer needs
it, as it doesn't copy the string.
\fBNOTE:\fP this option is (the only one) required to be set before
\fIcurl_easy_perform(3)\fP is called.
.TP
.B CURLOPT_PROXY
Set HTTP proxy to use. The parameter should be a char * to a zero terminated
string holding the host name or dotted IP address. To specify port number in
this string, append :[port] to the end of the host name. The proxy string may
be prefixed with [protocol]:// since any such prefix will be ignored. The
proxy's port number may optionally be specified with the separate option
\fICURLOPT_PROXYPORT\fP.
\fBNOTE:\fP when you tell the library to use a HTTP proxy, libcurl will
transparently convert operations to HTTP even if you specify a FTP URL
etc. This may have an impact on what other features of the library you can
use, such as CURLOPT_QUOTE and similar FTP specifics that don't work unless
you tunnel through the HTTP proxy. Such tunneling is activated with
\fICURLOPT_HTTPPROXYTUNNEL\fP.
\fBNOTE2:\fP libcurl respects the environment variables \fBhttp_proxy\fP,
\fBftp_proxy\fP, \fBall_proxy\fP etc, if any of those is set.
.TP
.B CURLOPT_PROXYPORT
Pass a long with this option to set the proxy port to connect to unless it is
specified in the proxy string \fICURLOPT_PROXY\fP.
.TP
.B CURLOPT_PROXYTYPE
Pass a long with this option to set type of the proxy. Available options for
this are CURLPROXY_HTTP and CURLPROXY_SOCKS5, with the HTTP one being
default. (Added in 7.10)
.TP
.B CURLOPT_HTTPPROXYTUNNEL
Set the parameter to non-zero to get the library to tunnel all operations
through a given HTTP proxy. Note that 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. (Added in 7.3)
.TP
.B CURLOPT_INTERFACE
Pass a char * as parameter. This set the interface name to use as outgoing
network interface. The name can be an interface name, an IP address or a host
name. (Added in 7.3)
.TP
.B 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
caching, or set to -1 to make the cached entries remain forever. By default,
libcurl caches info for 60 seconds. (Added in 7.9.3)
.TP
.B CURLOPT_DNS_USE_GLOBAL_CACHE
Pass a long. If the value is non-zero, 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 varible. (Added in 7.9.3)
.TP
.B CURLOPT_BUFFERSIZE
Pass a long specifying your prefered size for the receive buffer in libcurl.
The main point of this would be that the write callback gets called more often
and with smaller chunks. This is just treated as a request, not an order. You
cannot be guaranteed to actually get the given size. (Added in 7.10)
.PP
.SH NAMES and PASSWORDS OPTIONS
.TP 0.4i
.B CURLOPT_NETRC
This parameter controls the preference of libcurl between using user names and
passwords from your \fI~/.netrc\fP file, relative to user names and passwords
in the URL supplied with \fICURLOPT_URL\fP.
\fBNote:\fP libcurl uses a user name (and supplied or prompted password)
supplied with \fICURLOPT_USERPWD\fP in preference to any of the options
controlled by this parameter.
Pass a long, set to one of the values described below.
.RS
.TP 5
.B 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.
Undefined values of the option will have this effect.
.TP
.B CURL_NETRC_IGNORED
The library will ignore the file and use only the information in the URL.
This is the default.
.TP
.B 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.
.RE
.TP
Only machine name, user name and password are taken into account
(init macros and similar things aren't supported).
\fBNote:\fP libcurl does not verify that the file has the correct properties
set (as the standard Unix ftp client does). It should only be readable by
user.
.TP
.B CURLOPT_USERPWD
Pass a char * as parameter, which should be [user name]:[password] to use for
the connection. If both the colon and password is left out, you will be
prompted for it while using a colon with no password will make libcurl use an
empty password. \fICURLOPT_PASSWDFUNCTION\fP can be used to set your own
prompt function.
When using HTTP and CURLOPT_FOLLOWLOCATION, libcurl might perform several
requests to possibly different hosts. libcurl will only send this user and
password information to hosts using the initial host name, so if libcurl
follows locations to other hosts it will not send the user and password to
those. This is enforced to prevent accidental information leakage.
.TP
.B CURLOPT_PROXYUSERPWD
Pass a char * as parameter, which should be [user name]:[password] to use for
the connection to the HTTP proxy. If the password is left out, you will be
prompted for it. \fICURLOPT_PASSWDFUNCTION\fP can be used to set your own
prompt function.
.PP
.SH HTTP OPTIONS
.TP 0.4i
.B 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.
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.
.TP
.B CURLOPT_FOLLOWLOCATION
A non-zero parameter tells the library to follow any Location: header that the
server sends as part of a HTTP header.
\fBNOTE:\fP this means that the library will re-send the same request on the
new location 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.
.TP
.B CURLOPT_UNRESTRICTED_AUTH
A non-zero parameter tells the library it can continue to send authentication
(user+password) when following locations, even when hostname changed. Note
that this is meaningful only when setting \fICURLOPT_FOLLOWLOCATION\fP.
.TP
.B CURLOPT_MAXREDIRS
Pass a long. The set number will be the redirection limit. If that many
redirections have been followed, the next redirect will cause an error
(\fICURLE_TOO_MANY_REDIRECTS\fP). This option only makes sense if the
\fICURLOPT_FOLLOWLOCATION\fP is used at the same time. (Added in 7.5)
.TP
.B CURLOPT_PUT
A non-zero parameter tells the library to use HTTP PUT to transfer data. The
data should be set with CURLOPT_READDATA and CURLOPT_INFILESIZE.
.TP
.B CURLOPT_POST
A non-zero parameter tells the library to do a regular HTTP post. This is a
normal application/x-www-form-urlencoded kind, which is the most commonly used
one by HTML forms. See the CURLOPT_POSTFIELDS option for how to specify the
data to post and CURLOPT_POSTFIELDSIZE in how to set the data size. Starting
with libcurl 7.8, this option is obsolete. Using the CURLOPT_POSTFIELDS option
will imply this option.
.TP
.B CURLOPT_POSTFIELDS
Pass a char * as parameter, which should be the full data to post in a HTTP
post operation. You need to make sure that the data is formatted the way you
want the server to receive it. libcurl will not convert or encode it for
you. Most web servers will assume this data to be url-encoded. Take note.
This POST is a normal application/x-www-form-urlencoded kind (and libcurl will
set that Content-Type by default when this option is used), which is the most
commonly used one by HTML forms. See also the CURLOPT_POST. Using
CURLOPT_POSTFIELDS implies CURLOPT_POST.
\fBNote:\fP to make multipart/formdata posts (aka rfc1867-posts), check out
the \fICURLOPT_HTTPPOST\fP option.
.TP
.B CURLOPT_POSTFIELDSIZE
If you want to post data to the server without letting libcurl do a strlen()
to measure the data size, this option must be used. When this option is used
you can post fully binary data, which otherwise is likely to fail. If this
size is set to zero, the library will use strlen() to get the size. (Added in
libcurl 7.2)
.TP
.B CURLOPT_HTTPPOST
Tells libcurl you want a multipart/formdata HTTP POST to be made and you
instruct what data to pass on to the server. Pass a pointer to a linked list
of HTTP post structs as parameter. The linked list should be a fully valid
list of 'struct HttpPost' structs properly filled in. The best and most
elegant way to do this, is to use \fIcurl_formadd(3)\fP as documented. The
data in this list must remain intact until you close this curl handle again
with \fIcurl_easy_cleanup(3)\fP.
.TP
.B CURLOPT_REFERER
Pass a pointer to a zero terminated string as parameter. It will be used to
set the Referer: header in the http request sent to the remote server. This
can be used to fool servers or scripts. You can also set any custom header
with \fICURLOPT_HTTPHEADER\fP.
.TP
.B CURLOPT_USERAGENT
Pass a pointer to a zero terminated string as parameter. It will be used to
set the User-Agent: header in the http request sent to the remote server. This
can be used to fool servers or scripts. You can also set any custom header
with \fICURLOPT_HTTPHEADER\fP.
.TP
.B CURLOPT_HTTPHEADER
Pass a pointer to a linked list of HTTP headers to pass to the server in your
HTTP request. The linked list should be a fully valid list of \fBstruct
curl_slist\fP structs properly filled in. Use \fIcurl_slist_append(3)\fP to
create the list and \fIcurl_slist_free_all(3)\fP to clean up an entire
list. If you add a header that is otherwise generated and used by libcurl
internally, your added one will be used instead. If you add a header with no
contents as in 'Accept:' (no data on the right side of the colon), the
internally used header will get disabled. Thus, using this option you can add
new headers, replace internal headers and remove internal headers. The
headers included in the linked list must not be CRLF-terminated, because
curl adds CRLF after each header item. Failure to comply with this will
result in strange bugs because the server will most likely ignore part
of the headers you specified.
\fBNOTE:\fPThe most commonly replaced headers have "shortcuts" in the options
CURLOPT_COOKIE, CURLOPT_USERAGENT and CURLOPT_REFERER.
.TP
.B CURLOPT_HTTP200ALIASES
Pass a pointer to a linked list of aliases to be treated as valid HTTP 200
responses. Some servers respond with a custom header response line. For
example, IceCast servers respond with "ICY 200 OK". By including this string
in your list of aliases, the response will be treated as a valid HTTP header
line such as "HTTP/1.0 200 OK". (Added in 7.10.3)
The linked list should be a fully valid list of struct curl_slist structs, and
be properly filled in. Use \fIcurl_slist_append(3)\fP to create the list and
\fIcurl_slist_free_all(3)\fP to clean up an entire list.
\fBNOTE:\fPThe alias itself is not parsed for any version strings. So if your
alias is "MYHTTP/9.9", Libcurl will not treat the server as responding with
HTTP version 9.9. Instead Libcurl will use the value set by option
\fICURLOPT_HTTP_VERSION\fP.
.TP
.B CURLOPT_COOKIE
Pass a pointer to a zero terminated string as parameter. It will be used to
set a cookie in the http request. The format of the string should be
NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie
should contain.
If you need to set mulitple cookies, you need to set them all using a single
option and thus you need to concat them all in one single string. Set multiple
cookies in one string like this: "name1=content1; name2=content2;" etc.
Using this option multiple times will only make the latest string override the
previously ones.
.TP
.B CURLOPT_COOKIEFILE
Pass a pointer to a zero terminated string as parameter. It should contain the
name of your file holding cookie data to read. The cookie data may be in
Netscape / Mozilla cookie data format or just regular HTTP-style headers
dumped to a file.
Given an empty or non-existing file, this option will enable cookies for this
curl handle, making it understand and parse received cookies and then use
matching cookies in future request.
.TP
.B CURLOPT_COOKIEJAR
Pass a file name as char *, zero terminated. This will make libcurl write all
internally known cookies to the specified file when \fIcurl_easy_cleanup(3)\fP
is called. If no cookies are known, no file will be created. Specify "-" to
instead have the cookies written to stdout. Using this option also enables
cookies for this session, so if you for example follow a location it will make
matching cookies get sent accordingly. (Added in 7.9)
.B NOTE
If the cookie jar file can't be created or written to (when the
curl_easy_cleanup() is called), libcurl will not and cannot report an error
for this. Using CURLOPT_VERBOSE or CURLOPT_DEBUGFUNCTION will get a warning to
display, but that is the only visible feedback you get about this possibly
lethal situation.
.TP
.B CURLOPT_TIMECONDITION
Pass a long as parameter. This defines how the CURLOPT_TIMEVALUE time value is
treated. You can set this parameter to TIMECOND_IFMODSINCE or
TIMECOND_IFUNMODSINCE. This is a HTTP-only feature. (TBD)
.TP
.B CURLOPT_TIMEVALUE
Pass a long as parameter. This should be the time in seconds since 1 jan 1970,
and the time will be used in a condition as specified with
CURLOPT_TIMECONDITION.
.TP
.B CURLOPT_HTTPGET
Pass a long. If the long is non-zero, this forces the HTTP request to get back
to GET. Only really usable if POST, PUT or a custom request have been used
previously using the same curl handle. (Added in 7.8.1)
.TP
.B 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
good reason.
.RS
.TP 5
.B CURL_HTTP_VERSION_NONE
We don't care about what version the library uses. libcurl will use whatever
it thinks fit.
.TP
.B CURL_HTTP_VERSION_1_0
Enforce HTTP 1.0 requests.
.TP
.B CURL_HTTP_VERSION_1_1
Enforce HTTP 1.1 requests.
.RE
.PP
.SH FTP OPTIONS
.TP 0.4i
.B CURLOPT_FTPPORT
Pass a pointer to a zero terminated string as parameter. It will be used to
get the IP address to use for the ftp PORT instruction. The PORT instruction
tells the remote server to connect to our specified IP address. The string may
be a plain IP address, a host name, an network interface name (under Unix) or
just a '-' letter to let the library use your systems default IP
address. Default FTP operations are passive, and thus won't use PORT.
You disable PORT again and go back to using the passive version by setting
this option to NULL.
.TP
.B CURLOPT_QUOTE
Pass a pointer to a linked list of FTP commands to pass to the server prior to
your ftp request. This will be done before any other FTP commands are issued
(even before the CWD command). The linked list should be a fully valid list of
'struct curl_slist' structs properly filled in. 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.
.TP
.B CURLOPT_POSTQUOTE
Pass a pointer to a linked list of FTP commands to pass to the server after
your ftp transfer request. 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.
.TP
.B CURLOPT_PREQUOTE
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.
.TP
.B CURLOPT_FTPLISTONLY
A non-zero parameter tells the library to just list the names of an ftp
directory, instead of doing a full directory listing that would include file
sizes, dates etc.
This causes an FTP NLST command to be sent. Beware that some FTP servers list
only files in their response to NLST; they might not include subdirectories
and symbolic links.
.TP
.B CURLOPT_FTPAPPEND
A non-zero parameter tells the library to append to the remote file instead of
overwrite it. This is only useful when uploading to a ftp site.
.TP
.B CURLOPT_FTP_USE_EPRT
Pass a long. If the value is non-zero, it tells curl to use the EPRT (and
LPRT) command when doing active FTP downloads (which is enabled by
CURLOPT_FTPPORT). 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 option, it
will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5)
.TP
.B CURLOPT_FTP_USE_EPSV
Pass a long. If the value is non-zero, 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.
.PP
.SH PROTOCOL OPTIONS
.TP 0.4i
.B CURLOPT_TRANSFERTEXT
A non-zero parameter tells the library to use ASCII mode for ftp transfers,
instead of the default binary transfer. For LDAP transfers it gets the data in
plain text instead of HTML and 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 or
similar.
.TP
.B CURLOPT_CRLF
Convert Unix newlines to CRLF newlines on transfers.
.TP
.B CURLOPT_RANGE
Pass a char * as parameter, which should contain the specified range you
want. It should be in the format "X-Y", where X or Y may be left out. HTTP
transfers also support several intervals, separated with commas as in
\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
server to send the response document in pieces (using standard MIME separation
techniques).
.TP
.B CURLOPT_RESUME_FROM
Pass a long as parameter. It contains the offset in number of bytes that you
want the transfer to start from.
.TP
.B CURLOPT_CUSTOMREQUEST
Pass a pointer to a zero terminated string as parameter. It will be user
instead of GET or HEAD when doing the HTTP request. This is useful for doing
DELETE or other more or less obscure HTTP requests. Don't do this at will,
make sure your server supports the command first.
.TP
.B 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
\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). (Added in
7.5)
.TP
.B CURLOPT_NOBODY
A non-zero parameter 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.
.TP
.B CURLOPT_INFILESIZE
When uploading a file to a remote site, this option should be used to tell
libcurl what the expected size of the infile is.
.TP
.B CURLOPT_UPLOAD
A non-zero parameter tells the library to prepare for an upload. The
CURLOPT_READDATA and CURLOPT_INFILESIZE are also interesting for uploads.
.PP
.SH CONNECTION OPTIONS
.TP 0.4i
.B CURLOPT_TIMEOUT
Pass a long as parameter containing the maximum time in seconds that you allow
the libcurl transfer operation to take. Normally, name lookups can take a
considerable time and limiting operations to less than a few minutes risk
aborting perfectly normal operations. This option will cause curl to use the
SIGALRM to enable time-outing system calls.
\fBNOTE:\fP this is not recommended to use in unix multi-threaded programs, as
it uses signals unless CURLOPT_NOSIGNAL (see above) is set.
.TP
.B CURLOPT_LOW_SPEED_LIMIT
Pass a long as parameter. It contains the transfer speed in bytes per second
that the transfer should be below during CURLOPT_LOW_SPEED_TIME seconds for
the library to consider it too slow and abort.
.TP
.B CURLOPT_LOW_SPEED_TIME
Pass a long as parameter. It contains the time in seconds that the transfer
should be below the CURLOPT_LOW_SPEED_LIMIT for the library to consider it too
slow and abort.
.TP
.B CURLOPT_MAXCONNECTS
Pass a long. The set number will be the persistent connection cache size. The
set amount will be the maximum amount of simultaneously open connections that
libcurl may cache. Default is 5, and there isn't much point in changing this
value unless you are perfectly aware of how this work and changes libcurl's
behaviour. This concerns connection using any of the protocols that support
persistent connections.
When reaching the maximum limit, curl uses the \fICURLOPT_CLOSEPOLICY\fP to
figure out which of the existing connections to close to prevent the number of
open connections to increase.
\fBNOTE:\fP if you already have performed transfers with this curl handle,
setting a smaller MAXCONNECTS than before may cause open connections to get
closed unnecessarily. (Added in 7.7)
.TP
.B CURLOPT_CLOSEPOLICY
Pass a long. This option sets what policy libcurl should use when the
connection cache is filled and one of the open connections has to be closed to
make room for a new connection. This must be one of the CURLCLOSEPOLICY_*
defines. Use \fICURLCLOSEPOLICY_LEAST_RECENTLY_USED\fP to make libcurl close
the connection that was least recently used, that connection is also least
likely to be capable of re-use. Use \fICURLCLOSEPOLICY_OLDEST\fP to make
libcurl close the oldest connection, the one that was created first among the
ones in the connection cache. The other close policies are not support
yet. (Added in 7.7)
.TP
.B 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). (Added in 7.7)
.TP
.B CURLOPT_FORBID_REUSE
Pass a long. Set to non-zero 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
does. Set to 0 to have libcurl keep the connection open for possibly later
re-use (default behavior). (Added in 7.7)
.TP
.B CURLOPT_CONNECTTIMEOUT
Pass a long. It should contain the maximum time in seconds that you allow the
connection to the server to take. This only limits the connection phase, once
it has connected, this option is of no more use. Set to zero to disable
connection timeout (it will then only timeout on the system's internal
timeouts). See also the \fICURLOPT_TIMEOUT\fP option.
\fBNOTE:\fP this is not recommended to use in unix multi-threaded programs, as
it uses signals unless CURLOPT_NOSIGNAL (see above) is set.
.PP
.SH SSL and SECURITY OPTIONS
.TP 0.4i
.B CURLOPT_SSLCERT
Pass a pointer to a zero terminated string as parameter. The string should be
the file name of your certificate. The default format is "PEM" and can be
changed with \fICURLOPT_SSLCERTTYPE\fP.
.TP
.B CURLOPT_SSLCERTTYPE
Pass a pointer to a zero terminated string as parameter. The string should be
the format of your certificate. Supported formats are "PEM" and "DER". (Added
in 7.9.3)
.TP
.B CURLOPT_SSLCERTPASSWD
Pass a pointer to a zero terminated string as parameter. It will be used as
the password required to use the CURLOPT_SSLCERT certificate. If the password
is not supplied, you will be prompted for it. \fICURLOPT_PASSWDFUNCTION\fP can
be used to set your own prompt function.
\fBNOTE:\fPThis option is replaced by \fICURLOPT_SSLKEYPASSWD\fP and only
cept for backward compatibility. You never needed a pass phrase to load
a certificate but you need one to load your private key.
.TP
.B CURLOPT_SSLKEY
Pass a pointer to a zero terminated string as parameter. The string should be
the file name of your private key. The default format is "PEM" and can be
changed with \fICURLOPT_SSLKEYTYPE\fP. (Added in 7.9.3)
.TP
.B CURLOPT_SSLKEYTYPE
Pass a pointer to a zero terminated string as parameter. The string should be
the format of your private key. Supported formats are "PEM", "DER" and "ENG".
(Added in 7.9.3)
\fBNOTE:\fPThe format "ENG" enables you to load the private key from a crypto
engine. in this case \fICURLOPT_SSLKEY\fP is used as an identifier passed to
the engine. You have to set the crypto engine with \fICURLOPT_SSL_ENGINE\fP.
.TP
.B CURLOPT_SSLKEYPASSWD
Pass a pointer to a zero terminated string as parameter. It will be used as
the password required to use the \fICURLOPT_SSLKEY\fP private key. If the
password is not supplied, you will be prompted for
it. \fICURLOPT_PASSWDFUNCTION\fP can be used to set your own prompt function.
(Added in 7.9.3)
.TP
.B CURLOPT_SSL_ENGINE
Pass a pointer to a zero terminated string as parameter. It will be used as
the identifier for the crypto engine you want to use for your private
key. (Added in 7.9.3)
\fBNOTE:\fPIf the crypto device cannot be loaded,
\fICURLE_SSL_ENGINE_NOTFOUND\fP is returned.
.TP
.B CURLOPT_SSL_ENGINEDEFAULT
Sets the actual crypto engine as the default for (asymetric) crypto
operations. (Added in 7.9.3)
\fBNOTE:\fPIf the crypto device cannot be set,
\fICURLE_SSL_ENGINE_SETFAILED\fP is returned.
.TP
.B CURLOPT_SSLVERSION
Pass a long as parameter. Set what version of SSL to attempt to use, 2 or
3. By default, the SSL library will try to solve this by itself although some
servers make this difficult why you at times may have to use this option.
.TP
.B CURLOPT_SSL_VERIFYPEER
Pass a long that is set to a zero value to stop curl from verifying the peer's
certificate (7.10 starting setting this option to TRUE by default). Alternate
certificates to verify against can be specified with the CURLOPT_CAINFO option
(Added in 7.4.2) or a certificate directory can be specified with the
CURLOPT_CAPATH option (Added in 7.9.8). As of 7.10, curl installs a default
bundle. CURLOPT_SSL_VERIFYHOST may also need to be set to 1 or 0 if
CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2).
.TP
.B CURLOPT_CAINFO
Pass a char * to a zero terminated string naming a file holding one or more
certificates to verify the peer with. This only makes sense when used in
combination with the CURLOPT_SSL_VERIFYPEER option. (Added in 7.4.2)
.TP
.B 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
prepared using the openssl c_rehash utility. This only makes sense when used
in combination with the CURLOPT_SSL_VERIFYPEER option. The CAPATH function
apparently does not work in Windows due to some limitation in openssl. (Added
in 7.9.8)
.TP
.B 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,
the more secure the SSL connection will become.
.TP
.B CURLOPT_EGDSOCKET
Pass a char * to the zero terminated path name to the Entropy Gathering Daemon
socket. It will be used to seed the random engine for SSL.
.TP
.B CURLOPT_SSL_VERIFYHOST
Pass a long. Set if we should verify the Common name from the peer certificate
in the SSL handshake, set 1 to check existence, 2 to ensure that it matches
the provided hostname. This is by default set to 2. (Added in 7.8.1, default
changed in 7.10)
.TP
.B CURLOPT_SSL_CIPHER_LIST
Pass a char *, pointing to a zero terminated string holding the list of
ciphers to use for the SSL connection. The list must be syntactly correct, it
consists of one or more cipher strings separated by colons. Commas or spaces
are also acceptable separators but colons are normally used, \!, \- and \+ can
be used as operators. Valid examples of cipher lists include 'RC4-SHA',
\'SHA1+DES\', 'TLSv1' and 'DEFAULT'. The default list is normally set when you
compile OpenSSL.
You'll find more details about cipher lists on this URL:
\fIhttp://www.openssl.org/docs/apps/ciphers.html\fP
.TP
.B CURLOPT_KRB4LEVEL
Pass a char * as parameter. Set the krb4 security level, this also enables
krb4 awareness. This is a string, 'clear', 'safe', 'confidential' or
\&'private'. If the string is set but doesn't match one of these, 'private'
will be used. Set the string to NULL to disable kerberos4. The kerberos
support only works for FTP. (Added in 7.3)
.PP
.SH OTHER OPTIONS
.TP 0.4i
.B CURLOPT_PRIVATE
Pass a char * as parameter, pointing to data that should be associated with
the curl handle. The pointer can be subsequently retrieved using the
CURLINFO_PRIVATE options to curl_easy_getinfo. (Added in 7.10.3)
.PP
.SH RETURN VALUE
CURLE_OK (zero) means that the option was set properly, non-zero means an
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors.3\fP
man page for the full list with descriptions.
.SH "SEE ALSO"
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), "
.SH BUGS
If you find any bugs, or just have questions, subscribe to one of the mailing
lists and post. We won't bite.

View File

@@ -0,0 +1,26 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_escape 3 "6 March 2002" "libcurl 7.9" "libcurl Manual"
.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_escape( char *" url ", int "length " );"
.ad
.SH DESCRIPTION
This function will convert the given input string to an URL encoded string and
return that as a new allocated string. All input characters that are not a-z,
A-Z or 0-9 will be converted to their "URL escaped" version (%NN where NN is a
two-digit hexadecimal number).
If the 'length' argument is set to 0, curl_escape() will use strlen() on the
input 'url' string to find out the size.
You must curl_free() the returned string when you're done with it.
.SH RETURN VALUE
A pointer to a zero terminated string or NULL if it failed.
.SH "SEE ALSO"
.I curl_unescape(), curl_free(), RFC 2396

212
docs/libcurl/curl_formadd.3 Normal file
View File

@@ -0,0 +1,212 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_formadd 3 "24 June 2002" "libcurl 7.9.8" "libcurl Manual"
.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLFORMcode curl_formadd(struct HttpPost ** " firstitem,
.BI "struct HttpPost ** " lastitem, " ...);"
.ad
.SH DESCRIPTION
curl_formadd() is used to append sections when building a multipart/formdata
HTTP POST (sometimes refered to as rfc1867-style posts). Append one section at
a time until you've added all the sections you want included and then you pass
the \fIfirstitem\fP pointer as parameter to \fBCURLOPT_HTTPPOST\fP.
\fIlastitem\fP is set after each call and on repeated invokes it should be
left as set to allow repeated invokes to find the end of the list faster.
After the \fIlastitem\fP pointer follow the real arguments.
The pointers \fI*firstitem\fP and \fI*lastitem\fP should both be pointing to
NULL in the first call to this function. All list-data will be allocated by
the function itself. You must call \fIcurl_formfree\fP after the form post has
been done to free the resources again.
First, there are some basics you need to understand about multipart/formdata
posts. Each part consists of at least a NAME and a CONTENTS part. If the part
is made for file upload, there are also a stored CONTENT-TYPE and a
FILENAME. Below here, we'll discuss on what options you use to set these
properties in the parts you want to add to your post.
.SH OPTIONS
.B CURLFORM_COPYNAME
followed by string is used to set the name of this part. libcurl copies the
given data, so your application doesn't need to keep it around after this
function call. If the name isn't zero terminated properly, or if you'd like it
to contain zero bytes, you need to set the length of the name with
\fBCURLFORM_NAMELENGTH\fP.
.B CURLFORM_PTRNAME
followed by a string is used for the name of this part. libcurl will use the
pointer and refer to the data in your application, you must make sure it
remains until curl no longer needs it. If the name isn't zero terminated
properly, or if you'd like it to contain zero bytes, you need to set the
length of the name with \fBCURLFORM_NAMELENGTH\fP.
.B CURLFORM_COPYCONTENTS
followed by a string is used for the contents of this part, the actual data to
send away. libcurl copies the given data, so your application doesn't need to
keep it around after this function call. If the data isn't zero terminated
properly, or if you'd like it to contain zero bytes, you need to set the
length of the name with \fBCURLFORM_CONTENTSLENGTH\fP.
.B CURLFORM_PTRCONTENTS
followed by a string is used for the contents of this part, the actual data to
send away. libcurl will use the pointer and refer to the data in your
application, you must make sure it remains until curl no longer needs it. If
the data isn't zero terminated properly, or if you'd like it to contain zero
bytes, you need to set the length of the name with
\fBCURLFORM_CONTENTSLENGTH\fP.
.B CURLFORM_FILECONTENT
followed by a file name, makes that file read and the contents will be used in
as data in this part.
.B CURLFORM_FILE
followed by a file name, makes this part a file upload part. It sets the file
name field to the actual file name used here, it gets the contents of the file
and passes as data and sets the content-type if the given file match one of
the new internally known file extension. For \fBCURLFORM_FILE\fP the user may
send one or more files in one part by providing multiple \fBCURLFORM_FILE\fP
arguments each followed by the filename (and each CURLFORM_FILE is allowed to
have a CURLFORM_CONTENTTYPE).
.B CURLFORM_CONTENTTYPE
followed by a pointer to a string with a content-type will make curl use this
given content-type for this file upload part, possibly instead of an
internally chosen one.
.B CURLFORM_FILENAME
followed by a pointer to a string to a name, will make libcurl use the given
name in the file upload part, intead of the actual file name given to
\fICURLFORM_FILE\fP.
.B BCURLFORM_BUFFER
followed by a string, tells libcurl that a buffer is to be used to upload data
instead of using a file. The given string is used as the value of the file
name field in the content header.
.B CURLFORM_BUFFERPTR
followed by a pointer to a data area, tells libcurl the address of the buffer
containing data to upload (as indicated with \fICURLFORM_BUFFER\fP). The
buffer containing this data must not be freed until after curl_easy_cleanup is
called.
.B CURLFORM_BUFFERLENGTH
followed by a long with the size of the \fICURLFORM_BUFFERPTR\fP data area,
tells libcurl the length of the buffer to upload.
.B CURLFORM_ARRAY
Another possibility to send options to curl_formadd() is the
\fBCURLFORM_ARRAY\fP option, that passes a struct curl_forms array pointer as
its value. Each curl_forms structure element has a CURLformoption and a char
pointer. The final element in the array must be a CURLFORM_END. All available
options can be used in an array, except the CURLFORM_ARRAY option itself! The
last argument in such an array must always be \fBCURLFORM_END\fP.
.B CURLFORM_CONTENTHEADER
specifies extra headers for the form POST section. This takes a curl_slist
prepared in the usual way using \fBcurl_slist_append\fP and appends the list
of headers to those libcurl automatically generates. The list must exist while
the POST occurs, if you free it before the post completes you may experience
problems.
When you've passed the HttpPost pointer to \fIcurl_easy_setopt\fP (using the
\fICURLOPT_HTTPPOST\fP option), you must not free the list until after you've
called \fIcurl_easy_cleanup\fP for the curl handle.
See example below.
.SH RETURN VALUE
0 means everything was ok, non-zero means an error occurred as
.I <curl/curl.h>
defines.
.SH EXAMPLE
.nf
struct HttpPost* post = NULL;
struct HttpPost* last = NULL;
char namebuffer[] = "name buffer";
long namelength = strlen(namebuffer);
char buffer[] = "test buffer";
char htmlbuffer[] = "<HTML>test buffer</HTML>";
long htmlbufferlength = strlen(htmlbuffer);
struct curl_forms forms[3];
char file1[] = "my-face.jpg";
char file2[] = "your-face.jpg";
/* add null character into htmlbuffer, to demonstrate that
transfers of buffers containing null characters actually work
*/
htmlbuffer[8] = '\\0';
/* Add simple name/content section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "name",
CURLFORM_COPYCONTENTS, "content", CURLFORM_END);
/* Add simple name/content/contenttype section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "htmlcode",
CURLFORM_COPYCONTENTS, "<HTML></HTML>",
CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
/* Add name/ptrcontent section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent",
CURLFORM_PTRCONTENTS, buffer, CURLFORM_END);
/* Add ptrname/ptrcontent section */
curl_formadd(&post, &last, CURLFORM_PTRNAME, namebuffer,
CURLFORM_PTRCONTENTS, buffer, CURLFORM_NAMELENGTH,
namelength, CURLFORM_END);
/* Add name/ptrcontent/contenttype section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole",
CURLFORM_PTRCONTENTS, htmlbuffer,
CURLFORM_CONTENTSLENGTH, htmlbufferlength,
CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
/* Add simple file section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
CURLFORM_FILE, "my-face.jpg", CURLFORM_END);
/* Add file/contenttype section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
CURLFORM_FILE, "my-face.jpg",
CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);
/* Add two file section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
CURLFORM_FILE, "my-face.jpg",
CURLFORM_FILE, "your-face.jpg", CURLFORM_END);
/* Add two file section using CURLFORM_ARRAY */
forms[0].option = CURLFORM_FILE;
forms[0].value = file1;
forms[1].option = CURLFORM_FILE;
forms[1].value = file2;
forms[2].option = CURLFORM_END;
/* Add a buffer to upload */
curl_formadd(&post, &last,
CURLFORM_COPYNAME, "name",
CURLFORM_BUFFER, "data",
CURLFORM_BUFFERPTR, record,
CURLFORM_BUFFERLENGTH, record_length,
CURLFORM_END);
/* no option needed for the end marker */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
CURLFORM_ARRAY, forms, CURLFORM_END);
/* Add the content of a file as a normal post text value */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "filecontent",
CURLFORM_FILECONTENT, ".bashrc", CURLFORM_END);
/* Set the form info */
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
.SH "SEE ALSO"
.BR curl_easy_setopt "(3), "
.BR curl_formparse "(3) [deprecated], "
.BR curl_formfree "(3)"
.SH BUGS
Surely there are some, you tell me!

View File

@@ -0,0 +1,27 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_formfree 3 "6 April 2001" "libcurl 7.7.1" "libcurl Manual"
.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_formfree(struct HttpPost *" form);
.ad
.SH DESCRIPTION
curl_formfree() is used to clean up data previously built/appended with
curl_formadd()/curl_formparse(). This must be called when the data has
been used, which typically means after the curl_easy_perform() has
been called.
.SH RETURN VALUE
None
.SH "SEE ALSO"
.BR curl_formparse "(3) [deprecated], "
.BR curl_formadd "(3) "
.SH BUGS
libcurl 7.7.1 and earlier versions does not allow a NULL pointer to be used as
argument.

View File

@@ -0,0 +1,18 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_formparse 3 "17 Dec 2001" "libcurl 7.9.2" "libcurl Manual"
.SH NAME
curl_formparse - add a section to a multipart/formdata HTTP POST:
deprecated (use curl_formadd instead)
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_formparse(char * " string, " struct HttpPost ** " firstitem,
.BI "struct HttpPost ** " lastitem ");"
.ad
.SH DESCRIPTION
This has been removed deliberately. The \fBcurl_formadd\fP has been introduced
to replace this function. Do not use this. Convert to the new function
now. curl_formparse() will be removed from a future version of libcurl.

17
docs/libcurl/curl_free.3 Normal file
View File

@@ -0,0 +1,17 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id:
.\"
.TH curl_free 3 "24 Sept 2002" "libcurl 7.10" "libcurl Manual"
.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void *curl_free( char *" ptr " );"
.ad
.SH DESCRIPTION
curl_free reclaims memory that has been obtained through a libcurl call.
Use curl_free() instead of free() to avoid anomalies that can result from differences in memory management between your application and libcurl.
.SH "SEE ALSO"
.I curl_unescape(), curl_free()

View File

@@ -0,0 +1,80 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_getdate 3 "5 March 2001" "libcurl 7.0" "libcurl Manual"
.SH NAME
curl_getdate - Convert an date in a ASCII string to number of seconds since
January 1, 1970
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "time_t curl_getdate(char *" datestring ", time_t *"now" );
.ad
.SH DESCRIPTION
This function returns the number of seconds since January 1st 1970, for the
date and time that the
.I datestring
parameter specifies. The
.I now
parameter is there and should hold the current time to allow the datestring to
specify relative dates/times. Read further in the date string parser section
below.
.SH PARSING DATES AND TIMES
A "date" is a string, possibly empty, containing many items separated by
whitespace. The whitespace may be omitted when no ambiguity arises. The
empty string means the beginning of today (i.e., midnight). Order of the
items is immaterial. A date string may contain many flavors of items:
.TP 0.8i
.B calendar date items
This can be specified in a number of different ways. Including 1970-09-17, 70-9-17, 70-09-17, 9/17/72, 24 September 1972, 24 Sept 72, 24 Sep 72, Sep 24, 1972, 24-sep-72, 24sep72.
The year can also be omitted, for example: 9/17 or "sep 17".
.TP
.B time of the day items
This string specifies the time on a given day. Syntax supported includes:
18:19:0, 18:19, 6:19pm, 18:19-0500 (for specifying the time zone as well).
.TP
.B time zone items
Specifies international time zone. There are a few acronyms supported, but in
general you should instead use the specific realtive time compared to
UTC. Supported formats include: -1200, MST, +0100.
.TP
.B day of the week items
Specifies a day of the week. If this is mentioned alone it means that day of
the week in the future.
Days of the week may be spelled out in full: `Sunday', `Monday', etc or they
may be abbreviated to their first three letters, optionally followed by a
period. The special abbreviations `Tues' for `Tuesday', `Wednes' for
`Wednesday' and `Thur' or `Thurs' for `Thursday' are also allowed.
A number may precede a day of the week item to move forward supplementary
weeks. It is best used in expression like `third monday'. In this context,
`last DAY' or `next DAY' is also acceptable; they move one week before or
after the day that DAY by itself would represent.
.TP
.B relative items
A relative item adjusts a date (or the current date if none) forward or
backward. Example syntax includes: "1 year", "1 year ago", "2 days", "4
weeks".
The string `tomorrow' is worth one day in the future (equivalent to `day'),
the string `yesterday' is worth one day in the past (equivalent to `day ago').
.TP
.B pure numbers
If the decimal number is of the form YYYYMMDD and no other calendar date item
appears before it in the date string, then YYYY is read as the year, MM as the
month number and DD as the day of the month, for the specified calendar date.
.PP
.SH RETURN VALUE
This function returns zero when it fails to parse the date string. Otherwise
it returns the number of seconds as described.
.SH AUTHORS
Originally written by Steven M. Bellovin <smb@research.att.com> while at the
University of North Carolina at Chapel Hill. Later tweaked by a couple of
people on Usenet. Completely overhauled by Rich $alz <rsalz@bbn.com> and Jim
Berets <jberets@bbn.com> in August, 1990.
.SH "SEE ALSO"
.BR
.SH BUGS
Surely there are some, you tell me!

View File

@@ -0,0 +1,32 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_getenv 3 "15 August 2001" "libcurl 7.8.1" "libcurl Manual"
.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_getenv(const char *" name ");
.ad
.SH DESCRIPTION
curl_getenv() is a portable wrapper for the getenv() function, meant to
emulate its behaviour and provide an identical interface for all operating
systems libcurl builds on (including win32).
.SH RETURN VALUE
If successful, curl_getenv() returns a pointer to the value of the specified
environment. The memory it refers to is malloc()ed why the application must
free() this when the data has completed to serve its purpose. When
.I curl_getenv()
fails to find the specified name, it returns a null pointer.
.SH NOTE
Under unix operating systems, there isn't any point in returning an allocated
memory, although other systems won't work properly if this isn't done. The
unix implementation thus have to suffer slightly from the drawbacks of other
systems.
.SH "SEE ALSO"
.BR getenv "(3C), "
.SH BUGS
Surely there are some, you tell me!

View File

@@ -0,0 +1,27 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_global_cleanup 3 "28 May 2001" "libcurl 7.8" "libcurl Manual"
.SH NAME
curl_global_cleanup - Global libcurl cleanup
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_global_cleanup(void);"
.ad
.SH DESCRIPTION
curl_global_cleanup must be called once (no matter how many threads or libcurl
sessions that'll be used) by every application that uses libcurl, after all
uses of libcurl is complete.
This is the opposite of \fIcurl_global_init\fP.
Not calling this function may result in memory leaks.
This function was added in libcurl 7.8.
.SH "SEE ALSO"
.BR curl_global_init "(3), "
.SH BUGS
None?

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