Compare commits

..

905 Commits

Author SHA1 Message Date
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
297 changed files with 25223 additions and 8727 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

3444
CHANGES

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

21
COPYING Normal file
View File

@@ -0,0 +1,21 @@
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1996 - 2002, 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.

View File

@@ -30,6 +30,11 @@ To build after having extracted everything from CVS, do this:
./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:
@@ -48,7 +53,9 @@ REQUIREMENTS
MAC OS X
For Mac OS X users, Guido Neitzer write down the following step-by-step guide:
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)

2
LEGAL
View File

@@ -1,4 +1,4 @@
Copyright (C) 1998-2001, Daniel Stenberg, <daniel@haxx.se>, et al.
Copyright (C) 1998-2002, Daniel Stenberg, <daniel@haxx.se>, et al.
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.

View File

@@ -1,27 +0,0 @@
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1996 - 2001, Daniel Stenberg, <daniel@haxx.se>.
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
provided that the above copyright notice(s) and this permission notice appear
in all copies of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS 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.

View File

@@ -1,470 +0,0 @@
MOZILLA PUBLIC LICENSE
Version 1.1
---------------
1. Definitions.
1.0.1. "Commercial Use" means distribution or otherwise making the
Covered Code available to a third party.
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.8.1. "Licensable" means having the right to grant, to the maximum
extent possible, whether at the time of the initial grant or
subsequently acquired, any and all of the rights conveyed herein.
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.10.1. "Patent Claims" means any patent claim(s), now owned or
hereafter acquired, including without limitation, method, process,
and apparatus claims, in any patent Licensable by grantor.
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 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" (or "Your") 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 more than fifty percent
(50%) 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) under intellectual property rights (other than patent or
trademark) Licensable by Initial Developer to use, reproduce,
modify, display, perform, sublicense and distribute the Original
Code (or portions thereof) with or without Modifications, and/or
as part of a Larger Work; and
(b) under Patents Claims infringed by the making, using or
selling of Original Code, to make, have made, use, practice,
sell, and offer for sale, and/or otherwise dispose of the
Original Code (or portions thereof).
(c) the licenses granted in this Section 2.1(a) and (b) are
effective on the date Initial Developer first distributes
Original Code under the terms of this License.
(d) Notwithstanding Section 2.1(b) above, no patent license is
granted: 1) for code that You delete from the Original Code; 2)
separate from the Original Code; or 3) for infringements caused
by: i) the modification of the Original Code or ii) the
combination of the Original Code with other software or devices.
2.2. Contributor Grant.
Subject to third party intellectual property claims, each Contributor
hereby grants You a world-wide, royalty-free, non-exclusive license
(a) under intellectual property rights (other than patent or
trademark) Licensable by Contributor, 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
and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using, or
selling of Modifications made by that Contributor either alone
and/or in combination with its Contributor Version (or portions
of such combination), to make, use, sell, offer for sale, have
made, and/or otherwise dispose of: 1) Modifications made by that
Contributor (or portions thereof); and 2) the combination of
Modifications made by that Contributor with its Contributor
Version (or portions of such combination).
(c) the licenses granted in Sections 2.2(a) and 2.2(b) are
effective on the date Contributor first makes Commercial Use of
the Covered Code.
(d) Notwithstanding Section 2.2(b) above, no patent license is
granted: 1) for any code that Contributor has deleted from the
Contributor Version; 2) separate from the Contributor Version;
3) for infringements caused by: i) third party modifications of
Contributor Version or ii) the combination of Modifications made
by that Contributor with other software (except as part of the
Contributor Version) or other devices; or 4) under Patent Claims
infringed by Covered Code in the absence of Modifications made by
that Contributor.
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 Contributor has knowledge that a license under a third party's
intellectual property rights is required to exercise the rights
granted by such Contributor under Sections 2.1 or 2.2,
Contributor 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 Contributor obtains such knowledge after
the Modification is made available as described in Section 3.2,
Contributor shall promptly modify the LEGAL file in all copies
Contributor makes 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 Contributor's Modifications include an application programming
interface and Contributor has knowledge of patent licenses which
are reasonably necessary to implement that API, Contributor must
also include this information in the LEGAL file.
(c) Representations.
Contributor represents that, except as disclosed pursuant to
Section 3.4(a) above, Contributor believes that Contributor's
Modifications are Contributor's original creation(s) and/or
Contributor has sufficient rights to grant the rights conveyed by
this License.
3.5. Required Notices.
You must duplicate the notice in Exhibit A in each file of the Source
Code. 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) where a user would be likely
to look for such a notice. If You created one or more Modification(s)
You may add your name as a Contributor to the notice described in
Exhibit A. You must also duplicate this License in any documentation
for the Source Code where You describe recipients' rights or ownership
rights relating to Covered Code. 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 or ownership rights 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, judicial order, 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",
"MPL", "NPL" or any confusingly similar phrase do not appear in your
license (except to note that your license differs from this 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.
8.1. 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.
8.2. If You initiate litigation by asserting a patent infringement
claim (excluding declatory judgment actions) against Initial Developer
or a Contributor (the Initial Developer or Contributor against whom
You file such action is referred to as "Participant") alleging that:
(a) such Participant's Contributor Version directly or indirectly
infringes any patent, then any and all rights granted by such
Participant to You under Sections 2.1 and/or 2.2 of this License
shall, upon 60 days notice from Participant terminate prospectively,
unless if within 60 days after receipt of notice You either: (i)
agree in writing to pay Participant a mutually agreeable reasonable
royalty for Your past and future use of Modifications made by such
Participant, or (ii) withdraw Your litigation claim with respect to
the Contributor Version against such Participant. If within 60 days
of notice, a reasonable royalty and payment arrangement are not
mutually agreed upon in writing by the parties or the litigation claim
is not withdrawn, the rights granted by Participant to You under
Sections 2.1 and/or 2.2 automatically terminate at the expiration of
the 60 day notice period specified above.
(b) any software, hardware, or device, other than such Participant's
Contributor Version, directly or indirectly infringes any patent, then
any rights granted to You by such Participant under Sections 2.1(b)
and 2.2(b) are revoked effective as of the date You first made, used,
sold, distributed, or had made, Modifications made by that
Participant.
8.3. If You assert a patent infringement claim against Participant
alleging that such Participant's Contributor Version directly or
indirectly infringes any patent where such claim is resolved (such as
by license or settlement) prior to the initiation of patent
infringement litigation, then the reasonable value of the licenses
granted by such Participant under Sections 2.1 or 2.2 shall be taken
into account in determining the amount or value of any payment or
license.
8.4. In the event of termination under Sections 8.1 or 8.2 above,
all end user license agreements (excluding distributors and resellers)
which have been validly granted by You or any distributor hereunder
prior to termination shall survive termination.
9. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY 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
THIS 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, any litigation relating to this License 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.
As between Initial Developer and the Contributors, each party is
responsible for claims and damages arising, directly or indirectly,
out of its utilization of rights under this License and You agree to
work with Initial Developer and Contributors to distribute such
responsibility on an equitable basis. Nothing herein is intended or
shall be deemed to constitute any admission of liability.
13. MULTIPLE-LICENSED CODE.
Initial Developer may designate portions of the Covered Code as
"Multiple-Licensed". "Multiple-Licensed" means that the Initial
Developer permits you to utilize portions of the Covered Code under
Your choice of the NPL or the alternative licenses, if any, specified
by the Initial Developer in the file described in Exhibit A.
EXHIBIT A -Mozilla Public License.
``The contents of this file are subject to the Mozilla Public License
Version 1.1 (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): ______________________________________.
Alternatively, the contents of this file may be used under the terms
of the _____ license (the "[___] License"), in which case the
provisions of [______] License are applicable instead of those
above. If you wish to allow use of your version of this file only
under the terms of the [____] License and not to allow others to use
your version of this file under the MPL, indicate your decision by
deleting the provisions above and replace them with the notice and
other provisions required by the [___] License. If you do not delete
the provisions above, a recipient may use your version of this file
under either the MPL or the [___] License."
[NOTE: The text of this Exhibit A may differ slightly from the text of
the notices in the Source Code files of the Original Code. You should
use the text of this Exhibit A rather than the text found in the
Original Code Source Code for Your Modifications.]

View File

@@ -2,16 +2,14 @@
# $Id$
#
AUTOMAKE_OPTIONS = foreign no-dependencies
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = \
CHANGES LEGAL maketgz MITX.txt MPL-1.1.txt \
reconf Makefile.dist curl-config.in build_vms.com curl-mode.el \
config-vms.h config-win32.h config-riscos.h config-mac.h
EXTRA_DIST = CHANGES COPYING maketgz SSLCERTS reconf Makefile.dist \
curl-config.in build_vms.com curl-mode.el
bin_SCRIPTS = curl-config
SUBDIRS = docs lib src include tests packages multi
SUBDIRS = docs lib src include tests packages
# create a root makefile in the distribution:
dist-hook:
@@ -20,6 +18,9 @@ dist-hook:
html:
cd docs; make html
pdf:
cd docs; make pdf
check: test
test:
@@ -64,7 +65,7 @@ rpm:
pkgadd:
umask 022 ; \
make install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
cat LEGAL MITX.txt MPL-1.1.txt > $(srcdir)/packages/Solaris/copyright ; \
cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
cd $(srcdir)/packages/Solaris && $(MAKE) package
#

View File

@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 2001, Daniel Stenberg, <daniel@haxx.se>, et al.
# Copyright (C) 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# In order to be useful for every potential user, curl and libcurl are
# dual-licensed under the MPL and the MIT/X-derivate licenses.
@@ -34,12 +34,12 @@ borland:
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
@@ -51,6 +51,12 @@ 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:

9
README
View File

@@ -19,15 +19,20 @@ README
Study the LEGAL file for distribution terms and similar.
Always try the Curl web site for the latest news:
Visit the curl web site or mirrors for the latest news:
http://curl.haxx.se
http://curl.haxx.se/
http://curl.sf.net/
http://curl.planetmirror.com/
The official download mirror sites are:
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/
To download the very latest source off the CVS server do this:

35
SSLCERTS Normal file
View File

@@ -0,0 +1,35 @@
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 certifcates that are signed
by CAs present in the bundle, you will not notice any changed behavior and you
will seeminglessly get a higher security level on your SSL connections since
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]
This upgrade 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.

View File

@@ -64,3 +64,27 @@
/* Define this to 'int' if in_addr_t is not an available typedefed type */
#undef in_addr_t
/* Define to disable DICT */
#undef CURL_DISABLE_DICT
/* Define to disable FILE */
#undef CURL_DISABLE_FILE
/* Define to disable FTP */
#undef CURL_DISABLE_FTP
/* Define to disable GOPHER */
#undef CURL_DISABLE_GOPHER
/* Define to disable HTTP */
#undef CURL_DISABLE_HTTP
/* Define to disable LDAP */
#undef CURL_DISABLE_LDAP
/* Define to disable TELNET */
#undef CURL_DISABLE_TELNET
/* Define if you have zlib present */
#undef HAVE_LIBZ

View File

@@ -377,6 +377,7 @@ AC_DEFUN(CURL_CHECK_GETHOSTBYNAME_R,
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)
@@ -394,6 +395,7 @@ gethostbyname_r(NULL, NULL, NULL);],[
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)

View File

@@ -6,14 +6,16 @@ $ 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/"",""../"")"
$ cc_qual = "/define=HAVE_CONFIG_H=1/include=(""../include/"",""../"",""../../openssl-0_9_6c/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
$ link /exe=curl.exe [.src]curl/lib/include=main,[.lib]curl/lib, -
[-.openssl-0_9_6c.axp.exe.ssl]libssl/lib, -
[-.openssl-0_9_6c.axp.exe.crypto]libcrypto/lib
$
$
$ goto Common_Exit

View File

@@ -8,4 +8,4 @@ die(){
aclocal || die "The command 'aclocal' failed"
autoheader || die "The command 'autoheader' failed"
autoconf || die "The command 'autoconf' failed"
automake || die "The command 'automake $MAKEFILES' failed"
automake -a || die "The command 'automake $MAKEFILES' failed"

View File

@@ -1,25 +0,0 @@
#define socklen_t int
#define HAVE_SYS_SOCKET_H
#define HAVE_ARPA_INET_H
#define HAVE_SYS_SELECT_H
#define HAVE_FCNTL_H
#define HAVE_GETTIMEOFDAY
#define HAVE_SELECT
#define HAVE_SOCKET
#define ifr_dstaddr ifr_addr
#include <sys/socket.h>
#include <sys/if.h>
#include <sys/fcntl.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <netdb.h>
#define ioctl(a,b,c,d) (ioctl(a,b,c) * (d==d))
#define OS "RISC OS"

View File

@@ -8,7 +8,8 @@ AC_PREREQ(2.50)
dnl First some basic init macros
AC_INIT
AC_CONFIG_SRCDIR([lib/urldata.h])
AM_CONFIG_HEADER(config.h src/config.h)
AM_CONFIG_HEADER(lib/config.h src/config.h tests/server/config.h lib/ca-bundle.h)
AM_MAINTAINER_MODE
dnl figure out the libcurl version
VERSION=`sed -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curl.h`
@@ -34,7 +35,7 @@ dnl
AC_CANONICAL_HOST
dnl Get system canonical name
AC_DEFINE_UNQUOTED(OS, "${host}")
AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
dnl Check for AIX weirdos
AC_AIX
@@ -51,29 +52,133 @@ 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 lame option to switch on debug options
dnl switch off particular protocols
dnl
AC_MSG_CHECKING([whether to enable debug options])
AC_ARG_ENABLE(debug,
[ --enable-debug Enable pedantic debug options
--disable-debug Disable debug options],
AC_MSG_CHECKING([whether to support http])
AC_ARG_ENABLE(http,
[ --enable-http Enable HTTP support
--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)
CPPFLAGS="$CPPFLAGS -DMALLOCDEBUG"
CFLAGS="-W -Wall -Wwrite-strings -pedantic -g"
;;
esac ],
AC_MSG_RESULT(no)
AC_MSG_RESULT(yes)
)
AC_MSG_CHECKING([whether to support ftp])
AC_ARG_ENABLE(ftp,
[ --enable-ftp Enable FTP support
--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,
[ --enable-gopher Enable GOPHER support
--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,
[ --enable-file Enable FILE support
--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,
[ --enable-ldap Enable LDAP support
--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,
[ --enable-dict Enable DICT support
--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,
[ --enable-telnet Enable TELNET support
--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
@@ -82,7 +187,7 @@ dnl **********************************************************************
AC_MSG_CHECKING([whether to enable ipv6])
AC_ARG_ENABLE(ipv6,
[ --enable-ipv6 Enable ipv6 (with ipv4) support
--disable-ipv6 Disable ipv6 support],
--disable-ipv6 Disable ipv6 support],
[ case "$enableval" in
no)
AC_MSG_RESULT(no)
@@ -122,11 +227,11 @@ dnl Checks for libraries.
dnl **********************************************************************
dnl gethostbyname in the nsl lib?
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname))
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))
AC_CHECK_FUNC(gethostbyname, , [ AC_CHECK_LIB(socket, gethostbyname) ])
fi
dnl At least one system has been identified to require BOTH nsl and
@@ -151,7 +256,7 @@ if test "$ac_cv_lib_nsl_gethostbyname" = "$ac_cv_func_gethostbyname"; then
fi
dnl resolve lib?
AC_CHECK_FUNC(strcasecmp, , AC_CHECK_LIB(resolve, strcasecmp))
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,
@@ -161,13 +266,10 @@ if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
fi
dnl socket lib?
AC_CHECK_FUNC(connect, , AC_CHECK_LIB(socket, connect))
dnl ucb lib?
AC_CHECK_FUNC(gethostname, , AC_CHECK_LIB(ucb, gethostname))
AC_CHECK_FUNC(connect, , [ AC_CHECK_LIB(socket, connect) ])
dnl dl lib?
AC_CHECK_FUNC(dlclose, , AC_CHECK_LIB(dl, dlopen))
AC_CHECK_FUNC(dlclose, , [ AC_CHECK_LIB(dl, dlopen) ])
dnl **********************************************************************
dnl Check how non-blocking sockets are set
@@ -178,7 +280,8 @@ AC_ARG_ENABLE(nonblocking,
[
if test "$enableval" = "no" ; then
AC_MSG_WARN([non-blocking sockets disabled])
AC_DEFINE(HAVE_DISABLED_NONBLOCKING)
AC_DEFINE(HAVE_DISABLED_NONBLOCKING, 1,
[to disable NON-BLOCKING connections])
else
CURL_CHECK_NONBLOCKING_SOCKET
fi
@@ -196,7 +299,8 @@ AC_ARG_WITH(egd-socket,
[ EGD_SOCKET="$withval" ]
)
if test -n "$EGD_SOCKET" ; then
AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET")
AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
[your Entropy Gathering Daemon socket pathname] )
fi
dnl Check for user-specified random device
@@ -205,16 +309,13 @@ AC_ARG_WITH(random,
[ RANDOM_FILE="$withval" ],
[
dnl Check for random device
AC_CHECK_FILE("/dev/urandom",
[
RANDOM_FILE="/dev/urandom";
]
)
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")
AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
[a suitable file to read random data from])
fi
dnl **********************************************************************
@@ -276,7 +377,7 @@ then
AC_CHECK_HEADERS(des.h)
dnl resolv lib?
AC_CHECK_FUNC(res_search, , AC_CHECK_LIB(resolv, res_search))
AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
dnl Check for the Kerberos4 library
AC_CHECK_LIB(krb, krb_net_read,
@@ -292,7 +393,8 @@ then
AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
dnl add define KRB4
AC_DEFINE(KRB4)
AC_DEFINE(KRB4, 1,
[if you have the Kerberos4 libraries (including -ldes)])
dnl substitute it too!
KRB4_ENABLED=1
@@ -315,10 +417,9 @@ 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
)
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
@@ -392,9 +493,9 @@ else
OPENSSL_ENABLED=1)
fi
dnl Check for the OpenSSL engine header, it is kind of "separated"
dnl from the main SSL check
AC_CHECK_HEADERS(openssl/engine.h)
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)
@@ -418,34 +519,43 @@ 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
_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"])
dnl z lib?
dnl AC_CHECK_FUNC(gzread, , AC_CHECK_LIB(z, gzread))
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
@@ -510,12 +620,11 @@ AC_CHECK_HEADERS( \
io.h \
pwd.h \
utime.h \
sys/utime.h
sys/utime.h \
sys/poll.h \
setjmp.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
@@ -524,9 +633,9 @@ AC_HEADER_TIME
# mprintf() checks:
# check for 'long double'
AC_CHECK_SIZEOF(long double, 8)
# AC_CHECK_SIZEOF(long double, 8)
# check for 'long long'
AC_CHECK_SIZEOF(long long, 4)
# AC_CHECK_SIZEOF(long long, 4)
# check for ssize_t
AC_CHECK_TYPE(ssize_t, int)
@@ -548,7 +657,6 @@ AC_CHECK_FUNCS( socket \
strcasecmp \
stricmp \
strcmpi \
gethostname \
gethostbyaddr \
gettimeofday \
inet_addr \
@@ -565,9 +673,24 @@ AC_CHECK_FUNCS( socket \
getpwuid \
geteuid \
dlopen \
utime
utime \
sigsetjmp \
poll
)
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
dnl removed 'getpass' check on October 26, 2000
if test "$ac_cv_func_select" != "yes"; then
@@ -585,22 +708,86 @@ 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$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,
[ --enable-debug Enable pedantic debug options
--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 -Wcast-align -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 \
multi/Makefile \
lib/Makefile \
tests/Makefile \
tests/data/Makefile \
tests/server/Makefile \
tests/libtest/Makefile \
packages/Makefile \
packages/Win32/Makefile \
packages/Win32/cygwin/Makefile \
@@ -609,7 +796,8 @@ AC_CONFIG_FILES([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

@@ -16,6 +16,7 @@ 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
@@ -43,6 +44,10 @@ while test $# -gt 0; do
esac
case "$1" in
--ca)
echo @CURL_CA_BUNDLE@
;;
--cc)
echo @CC@
;;
@@ -61,6 +66,30 @@ while test $# -gt 0; do
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)
@@ -78,7 +107,8 @@ while test $# -gt 0; do
;;
--cflags)
echo -I@includedir@
#echo -I@includedir@
echo ""
;;
--libs)

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

View File

@@ -8,28 +8,44 @@ $Id$
BUGS
Curl and libcurl have grown substantially since the beginning. At the time
of writing (mid March 2001), there are 23000 lines of source code, and by
of writing (end of April 2002), there are 32000 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
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 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 you expected to happen and how to repeat the
bad behavior. 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.
(but please read the section below first before doing that)
Since curl deals with networks, it often helps us a lot if you include a
protocol debug dump with your bug report. The output you get by using the -v
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.

View File

@@ -6,15 +6,16 @@
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
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!
you start sending patches! We prefer patches and discussions being held on
the mailing list(s), not sent to individuals.
The License Issue
@@ -29,9 +30,9 @@ The License Issue
What To Read
Source code, the man pages, the INTERALS document, the TODO, the most recent
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.
insights on what's going on right now. Asking there is a good idea too.
Naming
@@ -39,26 +40,32 @@ Naming
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.
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! ;-)
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. Commented code is quality code and
enables future modifications much more. Uncommented code much more risk being
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.
you don't accidentally mix up variables etc.
Non-clobbering All Over
@@ -69,7 +76,14 @@ Non-clobbering All Over
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
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
@@ -94,6 +108,10 @@ Document
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
@@ -111,3 +129,21 @@ Test Cases
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
GNU diff exists for virtually all platforms, including all kinds of unixes
and Windows.

195
docs/FAQ
View File

@@ -1,4 +1,4 @@
Updated: December 21, 2001 (http://curl.haxx.se/docs/faq.shtml)
Updated: January 13, 2003 (http://curl.haxx.se/docs/faq.html)
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
@@ -15,6 +15,7 @@ FAQ
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
@@ -30,13 +31,15 @@ FAQ
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 javascript, ASP, XML, XHTML or HTML version Y?
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 favourite programming language?
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.
@@ -54,6 +57,9 @@ FAQ
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?
@@ -62,6 +68,7 @@ FAQ
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?
@@ -80,7 +87,9 @@ FAQ
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.
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.
@@ -150,10 +159,10 @@ FAQ
1.5 Who makes cURL?
cURL and libcurl are not made by any single individual. Sure, Daniel
Stenberg writes the major parts, but various people's submissions are
important and crucial. Anyone can 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).
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
@@ -163,9 +172,8 @@ FAQ
1.6 What do you get for making cURL?
Project cURL is entirely free and open, without any commercial interests or
money involved. No person gets paid in any way for developing curl. We all
do this voluntarily on our spare time.
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 and
the main mailing list, Haxx owns the curl web site's domain and
@@ -175,8 +183,8 @@ FAQ
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 by simply helping us coding, documenting,
testing etc.
us through a banner-program or even better: by helping us coding,
documenting, testing etc.
1.7 What about CURL from curl.com?
@@ -193,6 +201,21 @@ FAQ
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 attempt to 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
@@ -252,8 +275,8 @@ FAQ
2.4. Does cURL support Socks (RFC 1928) ?
No. Nobody has wanted it that badly yet. We appreciate patches that bring
this functionality.
There is limited support for SOCKS5 for curl built with IPv6 support
disabled.
3. Usage problems
@@ -308,16 +331,14 @@ FAQ
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 javascript, ASP, XML, XHTML or HTML version Y?
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.
Javascript is slightly different since that is code embedded in the HTML
that is sent for the client to interpret and curl has no javascript
interpreter.
See also item 3.14 regarding javascript.
3.7. Can I use curl to delete/rename a file through FTP?
@@ -335,17 +356,13 @@ FAQ
curl -L http://redirector.com
3.9 How do I use curl in my favourite programming language?
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.
At the time of writing, there are bindings for the five language mentioned
above, but chances are there are even more by the time you read this. Or you
may be able you write your own wrapper for a not-yet supported language!
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:
@@ -376,7 +393,7 @@ FAQ
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
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"
@@ -384,6 +401,54 @@ FAQ
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.
@@ -412,11 +477,12 @@ FAQ
curl 'http://www.altavista.com/cgi-bin/query?text=yes&q=curl'
In win32, the standard DOS shell treats the %-letter specially and you may
need to quote the string properly when % is used in it.
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'.
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?
@@ -475,7 +541,7 @@ FAQ
4.5.6 "301 Moved Permanently"
If you get this return code and an HTML outpt similar to this:
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>.
@@ -517,12 +583,8 @@ FAQ
particular platform, try contacting the person who built the package/archive
you have.
If there is a bug, post a bug report in the Curl Bug Track System over at
http://sourceforge.net/bugs/?group_id=976
Always include as many details you can think of, including curl version,
operating system name and version and complete instructions how to repeat
the bug.
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?
@@ -530,6 +592,46 @@ FAQ
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/lxr/source/SSLCERTS
5. libcurl Issues
5.1. Is libcurl thread-safe?
@@ -615,14 +717,25 @@ FAQ
Previous versions had no persistent connection support.
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 *or* the MPL,
the Mozilla Public License. To get a really good answer to your license
conflict questions, you should study the MPL and MIT/X licenses and the
license you are about to use and check for clashes yourself. 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.)
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?

113
docs/HISTORY Normal file
View File

@@ -0,0 +1,113 @@
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
| (__| |_| | _ <| |___
\___|\___/|_| \_\_____|
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 daily.
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 daily.
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 daily. 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 daily. 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.

View File

@@ -28,11 +28,22 @@ UNIX
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.
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
@@ -71,33 +82,6 @@ UNIX
LIBS=-lRSAglue -lrsaref
(as suggested by Doug Kaufman)
KNOWN PROBLEMS (these ones should not happen anymore)
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 (note that this requires curl to be built staticly): (from Ralph
Beckmann)
./configure [...]
cd lib; make; cd ..
cd src; make; cd ..
cp src/curl elsewhere/bin/
As suggested by David West, you can make a faked version of autoconf and
autoheader:
----start of autoconf----
#!/bin/bash
#fake autoconf for building curl
if [ "$1" = "--version" ] then
echo "Autoconf version 2.13"
fi
----end of autoconf----
Then make autoheader a symbolic link to the same script and make sure
they're executable and set to appear in the path *BEFORE* the actual (but
obsolete) autoconf and autoheader scripts.
MORE OPTIONS
To force configure to use the standard cc compiler if both cc and gcc are
@@ -201,17 +185,34 @@ Win32
Microsoft command line style
----------------------------
Please read the OpenSSL documentation on how to compile and install
the OpenSSL library. This generates the libeay32.dll and ssleay32.dll
files.
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 the proper environment variables
set. Edit the makefile.vc6 in the lib directory and define
OPENSSL_PATH. Set the location of the OpenSSL library and run 'nmake
vc-ssl' in the root directory.
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.
The vcvars32.bat file is part of the Microsoft development
environment.
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
-------------------------
@@ -219,6 +220,30 @@ Win32
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
========
@@ -378,20 +403,23 @@ CROSS COMPILE
PORTS
=====
This is a probably incomplete list of known hardware and operating systems
that curl has been compiled for. If you know one system curl compiles and
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
- Alpha Linux 2.2.16
- 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
- Power AIX 4.2, 4.3.1, 4.3.2
- Pocket PC/Win CE 3.0
- Power AIX 4.2, 4.3.1, 4.3.2, 5.1
- PowerPC Darwin 1.0
- PowerPC Linux
- PowerPC Mac OS 9
@@ -414,6 +442,7 @@ PORTS
- i386 SCO unix
- i386 Solaris 2.7
- i386 Windows 95, 98, ME, NT, 2000
- i386 QNX 6
- ia64 Linux 2.3.99
- m68k AmigaOS 3
- m68k Linux

View File

@@ -54,7 +54,7 @@ Windows vs Unix
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 / and one in src/) that are
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!
@@ -69,10 +69,10 @@ Library
rather small and easy-to-follow. All the ones prefixed with 'curl_easy' are
put in the lib/easy.c file.
Starting with libcurl 7.8, curl_global_init_() and curl_global_cleanup() were
introduced. They should be called by the application to initialize and clean
up global stuff in the library. As of today, they just do the global SSL
initing if SSL is enabled. libcurl itself has no "global" scope.
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.

86
docs/KNOWN_BUGS Normal file
View File

@@ -0,0 +1,86 @@
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!
* 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.
* 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

@@ -246,25 +246,25 @@ POST (HTTP)
-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 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:
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 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'.
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 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'.
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" \
@@ -404,12 +404,28 @@ SPEED LIMIT
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.
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
CONFIG FILE
@@ -548,7 +564,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
@@ -567,8 +583,8 @@ 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/
@@ -668,8 +684,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:
@@ -683,7 +705,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
@@ -710,9 +732,9 @@ 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:
@@ -794,19 +816,39 @@ PERSISTANT CONNECTIONS
MAILING LISTS
For your convenience, we have several open mailing lists to discuss curl,
its development and things relevant to this.
its development and things relevant to this. Get all info at
http://curl.haxx.se/mail/. The lists available are:
To subscribe to the main curl list, mail curl-request@contactor.se with
"subscribe <fill in your email address>" in the body.
curl-users
To subscribe to the curl-library users/deverlopers list, follow the
instructions at http://curl.haxx.se/mail/
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.
To subscribe to the curl-announce list, to only get information about new
releases, follow the instructions at http://curl.haxx.se/mail/
curl-library
To subscribe to the curl-and-PHP list in which curl using with PHP is
discussed, follow the instructions at http://curl.haxx.se/mail/
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.

View File

@@ -6,72 +6,42 @@ AUTOMAKE_OPTIONS = foreign no-dependencies
man_MANS = \
curl.1 \
curl-config.1 \
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_escape.3 \
curl_unescape.3 \
curl_strequal.3 \
curl_strnequal.3 \
curl_mprintf.3 \
curl_global_init.3 \
curl_global_cleanup.3 \
libcurl.3
SUBDIRS = examples
curl-config.1
HTMLPAGES = \
curl.html \
curl-config.html \
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_escape.html \
curl_unescape.html \
curl_strequal.html \
curl_strnequal.html \
curl_mprintf.html \
curl_global_init.html \
curl_global_cleanup.html \
libcurl.html \
index.html
curl-config.html
EXTRA_DIST = $(man_MANS) \
MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS \
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS \
VERSIONS $(HTMLPAGES)
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
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

View File

@@ -5,10 +5,9 @@
\___|\___/|_| \_\_____|
This document has been introduced in order to let you find documents that
specify standards used by curl, software that extends curl, web pages with
"competing" utilities and information pages that describe some of the tools
that we use to build/compile/develop curl.
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
---------

View File

@@ -79,3 +79,6 @@ that have contributed with non-trivial parts:
- 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>

172
docs/TODO
View File

@@ -6,40 +6,67 @@
TODO
Things to do in project cURL. Please tell me what you think, contribute and
send me patches that improve things! Also check the http://curl.haxx.se/dev
web section for various development notes.
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
* Consider an interface to libcurl that allows applications to easier get to
know what cookies that are sent back in the response headers.
* 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.
* The new 'multi' interface is being designed. Work out the details, start
implementing and write test applications!
[http://curl.haxx.se/dev/multi.h]
* Add a name resolve cache to libcurl to make repeated fetches to the same
host name (when persitancy isn't available) faster.
* 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 configure options that disables certain protocols in libcurl to
decrease footprint. '--disable-[protocol]' where protocol is http, ftp,
telnet, ldap, dict or file.
* Add asynchronous name resolving (http://daniel.haxx.se/resolver/). This
should be made to work on most of the supported platforms, or otherwise it
isn't really interesting.
* Add asynchronous name resolving. http://curl.haxx.se/dev/async-resolver.txt
* 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
* Strip any trailing CR from the error message when Curl_failf() is used.
* 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 etc.
* Make uploads treated better. 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.
DOCUMENTATION
* Document all CURLcode error codes, why they happen and what most likely
will make them not happen again.
* More and better
FTP
@@ -49,29 +76,25 @@ TODO
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. It of course requires that 'MDTM' works,
and it isn't a standard FTP command.
* Suggested on the mailing list: CURLOPT_FTP_MKDIR...!
* Always use the FTP SIZE command before downloading, as that makes it more
likely that we know the size when downloading. Some sites support SIZE but
don't show the size in the RETR response!
* 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"
HTTP
* HTTP PUT for files passed on stdin *OR* when the --crlf option is
used. Requires libcurl to send the file with chunked content
encoding. [http://curl.haxx.se/dev/HTTP-PUT-stdin.txt] When the filter
system mentioned above gets real, it'll be a piece of cake to add.
* "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. This requires the filter system mentioned above.
* Pass a list of host name to libcurl to which we allow the user name and
password to get sent to. Currently, it only get sent to the host name that
the first URL uses (to prevent others from being able to read it), but this
also prevents the authentication info from getting sent when following
locations to legitimate other host names.
* Authentication: NTLM. Support for that MS crap called NTLM
authentication. MS proxies and servers sometime require that. Since that
@@ -83,47 +106,96 @@ TODO
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.
* 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"
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.
* Say you have a list of FTP addresses to download in a file named
ftp-list.txt: "cat ftp-list.txt | xargs curl -O -O -O [...]". curl _needs_
an "-Oalways" flag -- all addresses on the command line use the base
filename to store locally. Else a script must precount the # of URLs,
construct the proper number of "-O"s...
* 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

View File

@@ -2,7 +2,7 @@
.\" nroff -man curl-config.1
.\" Written by Daniel Stenberg
.\"
.TH curl-config 1 "16 August 2001" "Curl 7.8.1" "curl-config manual"
.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
@@ -11,6 +11,10 @@ curl-config \- Get information about a libcurl installation
.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.
@@ -38,18 +42,23 @@ major, minor, patch. So that libcurl 7.7.4 would appear as 070704 and libcurl
.SH "EXAMPLES"
What linker options do I need when I link with libcurl?
curl-config --libs
$ curl-config --libs
What compiler options do I need when I compile using libcurl functions?
curl-config --cflags
$ curl-config --cflags
How do I know if libcurl was built with SSL support?
curl-config --feature | grep SSL
$ curl-config --feature | grep SSL
What's the installed libcurl version?
curl-config --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)

View File

@@ -2,7 +2,7 @@
.\" nroff -man curl.1
.\" Written by Daniel Stenberg
.\"
.TH curl 1 "30 Nov 2001" "Curl 7.9.2" "Curl Manual"
.TH curl 1 "11 Sep 2002" "Curl 7.10" "Curl Manual"
.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
@@ -95,14 +95,11 @@ If this option is used twice, the second one will disable ASCII usage.
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 severl times, the last one will override the others.
If this option is used several times, the last one will override the others.
.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. This option didn't work in win32 systems until 7.7.2. See
also the
.I "--max-time"
option.
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>"
@@ -125,6 +122,13 @@ 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
@@ -167,16 +171,17 @@ append data.
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.
If this option is used several times, each occurrence will toggle this on/off.
.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.
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
@@ -187,6 +192,12 @@ 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
@@ -203,17 +214,25 @@ 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 certificate must be in PEM format.
peer. The file may contain multiple CA certificates. The certificate(s) must
be in PEM format.
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. Certificate directories
are not supported under Windows (because c_rehash uses symbolink links to
create them). 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.
(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>"
@@ -241,13 +260,17 @@ This option can be used multiple times.
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. (Option
added in curl 7.6)
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>"
@@ -260,7 +283,7 @@ 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.
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
@@ -281,6 +304,23 @@ 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
@@ -298,7 +338,26 @@ 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 prefer you have 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.
@@ -306,6 +365,10 @@ 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
@@ -319,10 +382,8 @@ 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
.I "--connect-timeout"
option.
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"
@@ -369,6 +430,8 @@ 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.)
@@ -479,6 +542,12 @@ If this option is used twice, the second will again disable mute.
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:
@@ -498,6 +567,24 @@ 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. See README.curl for detailed
examples of how to use this. If no password is specified, curl will
@@ -510,7 +597,7 @@ 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 wanna specify
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
@@ -519,10 +606,13 @@ 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.
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 this option is used twice, the second will again disable verbose.
.IP "-V/--version"
@@ -538,7 +628,7 @@ 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
%%. You can output a newline by using \\n, a carriage return with \\r and a tab
space with \\t.
.B NOTE:
@@ -594,6 +684,9 @@ 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.
@@ -601,6 +694,10 @@ If this option is used several times, the last one will be used.
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
@@ -623,6 +720,9 @@ 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
@@ -645,6 +745,12 @@ 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)
@@ -660,16 +766,6 @@ 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.
.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 "--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.
.SH FILES
.I ~/.curlrc
.RS
@@ -731,7 +827,8 @@ 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.
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
@@ -788,7 +885,7 @@ 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 signalled when the password was entered.
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
@@ -799,6 +896,24 @@ Malformed telnet option.
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.

View File

@@ -1,29 +0,0 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_cleanup 3 "5 March 2001" "libcurl 7.7" "libcurl Manual"
.SH NAME
curl_easy_cleanup - End a libcurl 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 a curl session. It is the
opposite of the
.I curl_easy_init
function and must be called with the same
.I handle
as input as the curl_easy_init call returned.
This will effectively close all connections libcurl has been used and possibly
has kept open until now. Don't call this function if you intend to transfer
more files (libcurl 7.7 or later).
.SH RETURN VALUE
None
.SH "SEE ALSO"
.BR curl_easy_init "(3), "
.SH BUGS
Surely there are some, you tell me!

View File

@@ -1,34 +0,0 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_init 3 "14 August 2001" "libcurl 7.8.1" "libcurl Manual"
.SH NAME
curl_easy_init - Start a libcurl 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 handle
that you shall use as input to the other easy-functions. The init calls
intializes curl and this call MUST have a corresponding call to
.I curl_easy_cleanup
when the operation is complete.
On win32 systems, if you want to init the winsock stuff manually, libcurl will
not do that for you. WSAStartup() and WSACleanup() should then be called
accordingly. If you want libcurl to handle this, use the CURL_GLOBAL_WIN32
flag in the initial curl_global_init() call.
Using libcurl 7.7 and later, you should perform all your sequential file
transfers using the same curl handle. This enables libcurl to use persistant
connections where possible.
.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

@@ -1,165 +0,0 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_formadd 3 "29 October 2001" "libcurl 7.9.1" "libcurl Manual"
.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "int 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. (If the following
description confuses you, jump directly to the examples):
\fBCURLFORM_COPYNAME\fP or \fBCURLFORM_PTRNAME\fP followed by a string is used
for the name of the section. Optionally one may use \fBCURLFORM_NAMELENGTH\fP
to specify the length of the name (allowing null characters within the
name). All options that use the word COPY in their names copy the given
contents, while the ones with PTR in their names simply points to the (static)
data you must make sure remain until curl no longer needs it.
The four options for providing values are: \fBCURLFORM_COPYCONTENTS\fP,
\fBCURLFORM_PTRCONTENTS\fP, \fBCURLFORM_FILE\fP, or \fBCURLFORM_FILECONTENT\fP
followed by a char or void pointer (allowed for PTRCONTENTS).
\fBCURLFORM_FILECONTENT\fP does a normal post like \fBCURLFORM_COPYCONTENTS\fP
but the actual value is read from the filename given as a string.
Other arguments may be \fBCURLFORM_CONTENTTYPE\fP if the user wishes to
specify one (for FILE if no type is given the library tries to provide the
correct one; for CONTENTS no Content-Type is sent in this case).
For \fBCURLFORM_PTRCONTENTS\fP or \fBCURLFORM_COPYNAME\fP the user may also
add \fBCURLFORM_CONTENTSLENGTH\fP followed by the length as a long (if not
given the library will use strlen to determine the length).
For \fBCURLFORM_FILE\fP the user may send multiple files in one section by
providing multiple \fBCURLFORM_FILE\fP arguments each followed by the filename
(and each FILE is allowed to have a CONTENTTYPE).
Another possibility to send single or multiple files in one section is to use
\fBCURLFORM_ARRAY\fP that gets a struct curl_forms array pointer as its
value. Each structure element has a CURLformoption and a char pointer. For the
options only \fBCURLFORM_FILE\fP, \fBCURLFORM_CONTENTTYPE\fP, and
\fBCURLFORM_END\fP (that is used to determine the end of the array and thus
must be the option of the last and no other element of the curl_forms array)
are allowed. The effect of this parameter is the same as giving multiple
\fBCURLFORM_FILE\fP options possibly with \fBCURLFORM_CONTENTTYPE\fP after or
before each \fBCURLFORM_FILE\fP option.
Should you need to specify extra headers for the form POST section, use
\fBCURLFORM_CONTENTHEADER\fP. This takes a curl_slist prepared in the usual way
using \fBcurl_slist_append\fP and appends the list of headers to those Curl
automatically generates for \fBCURLFORM_CONTENTTYPE\fP and the content
disposition. The list must exist while the POST occurs, if you free it before
the post completes you may experience problems.
The last argument in such an array must always be \fBCURLFORM_END\fP.
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.
This function will copy all input data except the data pointed to by the
arguments after \fBCURLFORM_PTRNAME\fP and \fBCURLFORM_PTRCONTENTS\fP and keep
its own version of it allocated until you call \fIcurl_formfree\fP. When
you've passed the pointer to \fIcurl_easy_setopt\fP, you must not free the
list until after you've called \fIcurl_easy_cleanup\fP for the curl handle. If
you provide a pointer as an arguments after \fBCURLFORM_PTRNAME\fP or
\fBCURLFORM_PTRCONTENTS\fP you must ensure that the pointer stays valid until
you call \fIcurl_form_free\fP and \fIcurl_easy_cleanup\fP.
See example below.
.SH RETURN VALUE
Returns non-zero if an error occurs.
.SH EXAMPLE
.nf
HttpPost* post = NULL;
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;
/* 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!

2
docs/examples/.cvsignore Normal file
View File

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

View File

@@ -4,10 +4,12 @@
AUTOMAKE_OPTIONS = foreign no-dependencies
EXTRA_DIST = README curlgtk.c sepheaders.c simple.c postit.c postit2.c \
win32sockets.c persistant.c ftpget.c Makefile.example \
multithread.c getinmemory.c ftpupload.c httpput.c \
simplessl.c ftpgetresp.c http-post.c
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

@@ -35,7 +35,7 @@ LIBS = -lcurl -lsocket -lnsl -lssl -lcrypto -dl
# Link the target with all objects and libraries
$(TARGET) : $(OBJS)
$(CC) $(LDFLAGS) $(LIBS) -o $(TARGET) $(OBJS)
$(CC) -o $(TARGET) $(OBJS) $(LDFLAGS) $(LIBS)
# Compile the source files into object files
ftpget.o : ftpget.c

View File

@@ -1,7 +1,7 @@
EXAMPLES
This directory is for tiny libcurl programming examples. They are meant to
show some simple steps on how you can build your own application to take full
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
@@ -12,11 +12,14 @@ examples. Just edit the file according to your system and requirements first.
Most examples should build fine using a command line like this:
$ gcc `curl-config --cflags` `curl-config --libs` -o example example.c
$ `curl-config --cc --cflags --libs` -o example example.c
Try the php/examples/ directory for PHP programming snippets!
Some compilers don't like having the arguments in this order but instead
want you do reorganize them like:
*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.
$ `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.

View File

@@ -26,7 +26,11 @@ 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, int t, int d)
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();
@@ -50,6 +54,7 @@ void *curl_thread(void *ptr)
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);

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

@@ -0,0 +1,222 @@
/*****************************************************************************
* _ _ ____ _
* 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 <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
struct data {
int type;
union {
CURL *curl;
FILE *file;
} handle;
/* TODO: We should perhaps document the 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;
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;
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("NO MORE RUNNING AROUND!\n");
return 0;
}
}
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 */
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("NO MORE RUNNING AROUND!\n");
break;
}
}
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];
handle = url_fopen("http://www.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;
}

View File

@@ -1,4 +1,12 @@
/*
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* This is an example application source code using the multi interface.
*/
@@ -9,10 +17,8 @@
#include <sys/time.h>
#include <unistd.h>
/* To start with, we include the header from the lib directory. This should
later of course be moved to the proper include dir. */
#include "../lib/multi.h"
/* curl stuff */
#include <curl/curl.h>
/*
* Download a HTTP file and upload an FTP file simultaneously.
@@ -77,7 +83,8 @@ int main(int argc, char **argv)
default:
/* one or more of curl's file descriptors say there's data to read
or write */
curl_multi_perform(multi_handle, &still_running);
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
break;
}
}

View File

@@ -1,5 +1,13 @@
/*
* This is a simple example using the multi interface.
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* This is a very simple example using the multi interface.
*/
#include <stdio.h>
@@ -9,9 +17,8 @@
#include <sys/time.h>
#include <unistd.h>
/* To start with, we include the header from the lib directory. This should
later of course be moved to the proper include dir. */
#include "../lib/multi.h"
/* curl stuff */
#include <curl/curl.h>
/*
* Simply download two HTTP files!
@@ -73,7 +80,8 @@ int main(int argc, char **argv)
case 0:
default:
/* timeout or readable/writable sockets */
curl_multi_perform(multi_handle, &still_running);
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
break;
}
}

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

@@ -1,4 +1,12 @@
/*
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*
* This is a very simple example using the multi interface.
*/
@@ -9,9 +17,8 @@
#include <sys/time.h>
#include <unistd.h>
/* To start with, we include the header from the lib directory. This should
later of course be moved to the proper include dir. */
#include "../lib/multi.h"
/* curl stuff */
#include <curl/curl.h>
/*
* Simply download a HTTP file.
@@ -67,7 +74,8 @@ int main(int argc, char **argv)
case 0:
default:
/* timeout or readable/writable sockets */
curl_multi_perform(multi_handle, &still_running);
while(CURLM_CALL_MULTI_PERFORM ==
curl_multi_perform(multi_handle, &still_running));
break;
}
}

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;
}

View File

@@ -1,71 +0,0 @@
/*****************************************************************************
* _ _ ____ _
* 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 <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
struct HttpPost *formpost=NULL;
struct HttpPost *lastptr=NULL;
/* Fill in the file upload field */
curl_formparse("sendfile=@foo",
&formpost,
&lastptr);
/* Fill in the filename field */
curl_formparse("filename=foo",
&formpost,
&lastptr);
/* Fill in the submit field too, even if this is rarely needed */
curl_formparse("submit=send",
&formpost,
&lastptr);
curl = curl_easy_init();
if(curl) {
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/examplepost.cgi");
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);
}
return 0;
}

View File

@@ -63,6 +63,10 @@ int main(int argc, char **argv)
/* 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);

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;
}

View File

@@ -28,6 +28,9 @@
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)
@@ -63,7 +66,7 @@ int main(int argc, char **argv)
curl = curl_easy_init();
if(curl) {
/* what call to write: */
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://curl.haxx.se");
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... */

View File

@@ -1,49 +0,0 @@
/*
* Note: This is only required if you use curl 7.8 or lower, later
* versions provide an option to curl_global_init() that does the
* win32 initialization for you.
*/
/*
* These are example functions doing socket init that Windows
* require. If you don't use windows, you can safely ignore this crap.
*/
#include <windows.h>
void win32_cleanup(void)
{
WSACleanup();
}
int win32_init(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1, 1);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
/* Tell the user that we couldn't find a useable */
/* winsock.dll. */
return 1;
/* Confirm that the Windows Sockets DLL supports 1.1.*/
/* Note that if the DLL supports versions greater */
/* than 1.1 in addition to 1.1, it will still return */
/* 1.1 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
/* Tell the user that we couldn't find a useable */
/* winsock.dll. */
WSACleanup();
return 1;
}
return 0; /* 0 is ok */
}

View File

@@ -1,4 +1,4 @@
HTML>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Index to Curl documentation</TITLE>
@@ -8,31 +8,14 @@ HTML>
<H1 ALIGN="CENTER">Index to Curl documentation</H1>
<H2>Programs</H2>
<P><A HREF="curl-config.html">curl-config.html</A>
<P><A HREF="curl.html">curl.html</A>
<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>
<H2>Library routines</H2>
<P><A HREF="libcurl.html">libcurl.html</A>
<P><A HREF="curl_easy_cleanup.html">curl_easy_cleanup.html</A>
<P><A HREF="curl_easy_duphandle.html">curl_easy_duphandle.html</A>
<P><A HREF="curl_easy_getinfo.html">curl_easy_getinfo.html</A>
<P><A HREF="curl_easy_init.html">curl_easy_init.html</A>
<P><A HREF="curl_easy_perform.html">curl_easy_perform.html</A>
<P><A HREF="curl_easy_setopt.html">curl_easy_setopt.html</A>
<P><A HREF="curl_escape.html">curl_escape.html</A>
<P><A HREF="curl_formadd.html">curl_formadd.html</A>
<P><A HREF="curl_formfree.html">curl_formfree.html</A>
<P><A HREF="curl_formparse.html">curl_formparse.html</A>
<P><A HREF="curl_getdate.html">curl_getdate.html</A>
<P><A HREF="curl_getenv.html">curl_getenv.html</A>
<P><A HREF="curl_global_cleanup.html">curl_global_cleanup.html</A>
<P><A HREF="curl_global_init.html">curl_global_init.html</A>
<P><A HREF="curl_mprintf.html">curl_mprintf.html</A>
<P><A HREF="curl_slist_append.html">curl_slist_append.html</A>
<P><A HREF="curl_slist_free_all.html">curl_slist_free_all.html</A>
<P><A HREF="curl_strequal.html">curl_strequal.html</A>
<P><A HREF="curl_strnequal.html">curl_strnequal.html</A>
<P><A HREF="curl_unescape.html">curl_unescape.html</A>
<P><A HREF="curl_version.html">curl_version.html</A>
</BODY>
</HTML>

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

@@ -2,7 +2,7 @@
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_easy_init 3 "5 March 2001" "libcurl 7.6.1" "libcurl Manual"
.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
@@ -30,13 +30,17 @@ 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 0, 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. (Added in 7.5)
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.
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
@@ -58,6 +62,16 @@ 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.
@@ -95,8 +109,18 @@ is the value read from the Content-Length: field. (Added in 7.6.1)
.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.

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!

File diff suppressed because it is too large Load Diff

View File

@@ -1,28 +1,26 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_escape 3 "22 March 2001" "libcurl 7.7" "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. If a sequence of
%NN (where NN is a two-digit hexadecimal number) is found in the string to
encode, that 3-letter combination will be copied to the output unmodifed,
assuming that it is an already encoded piece of data.
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 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(), RFC 2396
.\" 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!

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,20 @@
.\" $Id$
.\"
.TH curl_multi_add_handle 3 "4 March 2002" "libcurl 7.9.5" "libcurl Manual"
.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
#include <curl/curl.h>
CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
.ad
.SH DESCRIPTION
Adds a standard easy handle to the multi stack. This will make this multi
handle control the specified easy handle.
When an easy handle has been added to a multi stack, you can not and you must
not use curl_easy_perform() on that handle!
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code.
.SH "SEE ALSO"
.BR curl_multi_cleanup "(3)," curl_multi_init "(3)"

View File

@@ -0,0 +1,18 @@
.\" $Id$
.\"
.TH curl_multi_cleanup 3 "1 March 2002" "libcurl 7.9.5" "libcurl Manual"
.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLMcode curl_multi_cleanup( CURLM *multi_handle );"
.ad
.SH DESCRIPTION
Cleans up and removes a whole multi stack. It does not free or touch any
individual easy handles in any way - they still need to be closed
individually, using the usual curl_easy_cleanup() way.
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code.
.SH "SEE ALSO"
.BR curl_multi_init "(3)," curl_easy_cleanup "(3)," curl_easy_init "(3)"

View File

@@ -0,0 +1,27 @@
.\" $Id$
.\"
.TH curl_multi_fdset 3 "3 May 2002" "libcurl 7.9.5" "libcurl Manual"
.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
.SH SYNOPSIS
#include <curl/curl.h>
CURLMcode curl_multi_fdset(CURLM *multi_handle,
fd_set *read_fd_set,
fd_set *write_fd_set,
fd_set *exc_fd_set,
int *max_fd);
.ad
.SH DESCRIPTION
This function extracts file descriptor information from a given multi_handle.
libcurl returns its fd_set sets. The application can use these to select() or
poll() on. The curl_multi_perform() function should be called as soon as one
of them are ready to be read from or written to.
NOTE that once this call is made, you must not remove the sets you point to,
as libcurl will need to be able to read them. It needs them after select()
calls, to know if certain sockets are readable or writable.
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code.
.SH "SEE ALSO"
.BR curl_multi_cleanup "(3)," curl_multi_init "(3)"

View File

@@ -0,0 +1,35 @@
.\" $Id$
.\"
.TH curl_multi_info_read 3 "1 March 2002" "libcurl 7.9.5" "libcurl Manual"
.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
#include <curl/curl.h>
CURLMsg *curl_multi_info_read( CURLM *multi_handle,
int *msgs_in_queue);
.ad
.SH DESCRIPTION
Ask the multi handle if there's any messages/informationals from the
individual transfers. Messages include informationals such as an error code
from the transfer or just the fact that a transfer is completed. More details
on these should be written down as well.
Repeated calls to this function will return a new struct each time, until a
special "end of msgs" struct is returned as a signal that there is no more to
get at this point. The integer pointed to with \fImsgs_in_queue\fP will
contain the number of remaining messages after this function was called.
The data the returned pointer points to will not survive calling
curl_multi_cleanup().
The 'CURLMsg' struct is very simple and only contain very basic informations.
If more involved information is wanted, the particular "easy handle" in
present in that struct and can thus be used in subsequent regular
curl_easy_getinfo() calls (or similar).
.SH "RETURN VALUE"
A pointer to a filled-in struct, or NULL if it failed or ran out of
structs. It also writes the number of messages left in the queue (after this
read) in the integer the second argument points to.
.SH "SEE ALSO"
.BR curl_multi_cleanup "(3)," curl_multi_init "(3)," curl_multi_perform "(3)"

View File

@@ -0,0 +1,22 @@
.\" $Id$
.\"
.TH curl_multi_init 3 "1 March 2002" "libcurl 7.9.5" "libcurl Manual"
.SH NAME
curl_multi_init - Start a multi session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLM *curl_multi_init( );"
.ad
.SH DESCRIPTION
This function returns a CURLM handle to be used as input to all the other
multi-functions, sometimes refered to as a multi handle on some places in the
documentation. This init call MUST have a corresponding call to
\fIcurl_multi_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_multi_cleanup "(3)," curl_global_init "(3)," curl_easy_init "(3)"
.SH BUGS
Surely there are some, you tell me!

View File

@@ -0,0 +1,36 @@
.\" $Id$
.\"
.TH curl_multi_perform 3 "1 March 2002" "libcurl 7.9.5" "libcurl Manual"
.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
.SH SYNOPSIS
#include <curl/curl.h>
CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
.ad
.SH DESCRIPTION
When the app thinks there's data available for the multi_handle, it should
call this function to read/write whatever there is to read or write right
now. curl_multi_perform() returns as soon as the reads/writes are done. This
function does not require that there actually is any data available for
reading or that data can be written, it can be called just in case. It will
write the number of handles that still transfer data in the second argument's
integer-pointer.
.SH "RETURN VALUE"
CURLMcode type, general libcurl multi interface error code.
If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basicly means that you
should call \fIcurl_multi_perform\fP again, before you select() on more
actions. You don't have to do it immediately, but the return code means that
libcurl may have more data available to return or that there may be more data
to send off before it is "satisfied".
NOTE that this only returns errors etc regarding the whole multi stack. There
might still have occurred problems on invidual transfers even when this
function returns OK.
.SH "TYPICAL USAGE"
Most application will use \fIcurl_multi_fdset\fP to get the multi_handle's
file descriptors, then it'll wait for action on them using select() and as
soon as one or more of them are ready, \fIcurl_multi_perform\fP gets called.
.SH "SEE ALSO"
.BR curl_multi_cleanup "(3)," curl_multi_init "(3)"

View File

@@ -0,0 +1,20 @@
.\" $Id$
.\"
.TH curl_multi_remove_handle 3 "6 March 2002" "libcurl 7.9.5" "libcurl Manual"
.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
#include <curl/curl.h>
CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
.ad
.SH DESCRIPTION
Removes a given easy_handle from the multi_handle. This will make the
specified easy handle be removed from this multi handle's control.
When the easy handle has been removed from a multi stack, it is again
perfectly legal to invoke \fIcurl_easy_perform()\fP on this easy handle.
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code.
.SH "SEE ALSO"
.BR curl_multi_cleanup "(3)," curl_multi_init "(3)"

View File

@@ -1,27 +1,27 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_unescape 3 "22 March 2001" "libcurl 7.7" "libcurl Manual"
.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_unescape( char *" url ", int "length " );"
.ad
.SH DESCRIPTION
This function will convert the given URL encoded input string to a "plain
string" and return that as a new allocated string. All input characters that
are URL encoded (%XX where XX is a two-digit hexadecimal number, or +) will be
converted to their plain text versions (up to a ? letter, no letters to the
right of a ? letter will be converted).
If the 'length' argument is set to 0, curl_unescape() will use strlen() on the
input 'url' string to find out the size.
You must 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_escape(), RFC 2396
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_unescape 3 "22 March 2001" "libcurl 7.7" "libcurl Manual"
.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_unescape( char *" url ", int "length " );"
.ad
.SH DESCRIPTION
This function will convert the given URL encoded input string to a "plain
string" and return that as a new allocated string. All input characters that
are URL encoded (%XX where XX is a two-digit hexadecimal number, or +) will be
converted to their plain text versions (up to a ? letter, no + letters to the
right of a ? letter will be converted).
If the 'length' argument is set to 0, curl_unescape() 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_escape(), curl_free(), RFC 2396

View File

@@ -0,0 +1,93 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_version_info 3 "30 Sep 2002" "libcurl 7.10" "libcurl Manual"
.SH NAME
curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_version_info_data *curl_version_info( CURLversion "type ");"
.ad
.SH DESCRIPTION
Returns a pointer to a filled in struct with information about various
run-time features in libcurl. \fItype\fP should be set to the version of this
functionality by the time you write your program. This way, libcurl will
always return a proper struct that your program understands, while programs in
the future might get an different struct. CURLVERSION_NOW will be the most
recent one for the library you have installed:
data = curl_version_info(CURLVERSION_NOW);
Applications should use this information to judge if things are possible to do
or not, instead of using compile-time checks, as dynamic/DLL libraries can be
changed independent of applications.
The curl_version_info_data struct looks like this
.nf
typedef struct {
CURLversion age; /* 0 - this kind of struct */
const char *version; /* human readable string */
unsigned int version_num; /* numeric representation */
const char *host; /* human readable string */
int features; /* bitmask, see below */
char *ssl_version; /* human readable string */
long ssl_version_num; /* number */
char *libz_version; /* human readable string */
const char *protocols[]; /* list of protocols */
} curl_version_info_data;
.fi
\fIage\fP describes what kind of struct this is. It is always 0 now. In a
future libcurl, if this struct changes, this age counter may be increased, and
then the struct for number 1 will look different (except for this first struct
field).
\fIversion\fP is just an ascii string for the libcurl version.
\fIversion_num\fP is a 6 digit hexadecimal number created like this: <2 digits
major number> | <2 digits minor number> | <2 digits patch number>. Version
7.9.8 is therefore returned as 0x070908.
\fIhost\fP is an ascii string showing what host information that this libcurl
was built for. As discovered by a configure script or set by the build
environment.
\fIfeatures\fP can have none, one or more bits set, and the currently defined
bits are:
.TP 5.5
.B CURL_VERSION_IPV6
supports IPv6
.TP
.B CURL_VERSION_KERBEROS4
supports kerberos4 (when using FTP)
.TP
.B CURL_VERSION_SSL
supports SSL (HTTPS/FTPS)
.TP
.B CURL_VERSION_LIBZ
supports HTTP deflate using libz
.PP
\fIssl_version\fP is an ascii string for the OpenSSL version used. If libcurl
has no SSL support, this is NULL.
\fIssl_version_num\fP is the numerical OpenSSL version value as defined by the
OpenSSL project. If libcurl has no SSL support, this is 0.
\fIlibz_version\fP is an ascii string (there is no numerical version). If
libcurl has no libz support, this is NULL.
\fIprotocols\fP is a pointer to an array of char * pointers, containing the
names protocols that libcurl supports (using lowercase letters). The protocol
names are the same as would be used in URLs. The array is terminated by a NULL
entry.
.SH RETURN VALUE
A pointer to a curl_version_info_data struct.
.SH "SEE ALSO"
\fIcurl_version(3)\fP
.SH BUGS
No known bugs.

52
docs/libcurl/index.html Normal file
View File

@@ -0,0 +1,52 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Index to libcurl documentation</TITLE>
</HEAD>
<BODY>
<H1 ALIGN="CENTER">Index to libcurl documentation</H1>
<H2>Programs</H2>
<P><A HREF="../index.html">curl and tools</A>
<h2>Overviews</h2>
<A HREF="libcurl.html">libcurl</A>
<br><a href="libcurl-multi.html">libcurl-multi</a>
<br><a href="libcurl-errors.html">libcurl-errors</a>
<br><a href="../libcurl-the-guide">libcurl-the-guide</a> (plain text)
<H2>Library Functions (A-Z)</H2>
<a href="curl_easy_cleanup.html">curl_easy_cleanup</A>
<br><a href="curl_easy_duphandle.html">curl_easy_duphandle</A>
<br><a href="curl_easy_getinfo.html">curl_easy_getinfo</A>
<br><a href="curl_easy_init.html">curl_easy_init</A>
<br><a href="curl_easy_perform.html">curl_easy_perform</A>
<br><a href="curl_easy_setopt.html">curl_easy_setopt</A>
<br><a href="curl_escape.html">curl_escape</A>
<br><a href="curl_formadd.html">curl_formadd</A>
<br><a href="curl_formfree.html">curl_formfree</A>
<br><a href="curl_formparse.html">curl_formparse</A>
<br><a href="curl_free.html">curl_free</A>
<br><a href="curl_getdate.html">curl_getdate</A>
<br><a href="curl_getenv.html">curl_getenv</A>
<br><a href="curl_global_cleanup.html">curl_global_cleanup</A>
<br><a href="curl_global_init.html">curl_global_init</A>
<br><a href="curl_mprintf.html">curl_mprintf</A>
<br><a href="curl_multi_add_handle.html">curl_multi_add_handle</a>
<br><a href="curl_multi_cleanup.html">curl_multi_cleanup</a>
<br><a href="curl_multi_fdset.html">curl_multi_fdset</a>
<br><a href="curl_multi_info_read.html">curl_multi_info_read</a>
<br><a href="curl_multi_init.html">curl_multi_init</a>
<br><a href="curl_multi_perform.html">curl_multi_perform</a>
<br><a href="curl_multi_remove_handle.html">curl_multi_remove_handle</a>
<br><a href="curl_slist_append.html">curl_slist_append</A>
<br><a href="curl_slist_free_all.html">curl_slist_free_all</A>
<br><a href="curl_strequal.html">curl_strequal</A>
<br><a href="curl_strnequal.html">curl_strnequal</A>
<br><a href="curl_unescape.html">curl_unescape</A>
<br><a href="curl_version.html">curl_version</A>
<br><a href="curl_version_info.html">curl_version_info</A>
</BODY>
</HTML>

View File

@@ -0,0 +1,240 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH libcurl-errors 3 "18 Dec 2002" "libcurl 7.10.3" "libcurl errors"
.SH NAME
error codes in libcurl
.SH DESCRIPTION
This man page includes most, if not all, available error codes in libcurl.
Why they occur and possibly what you can do to fix the problem.
.SH "CURLcode"
Almost all "easy" interface functions return a CURLcode error code. No matter
what, using \fICURLOPT_ERRORBUFFER\fP is a good idea as it will give you a
human readable error string that may offer more details about the error cause
than just the error code does.
This man page is meant to describe libcurl 7.9.6 and later. Earlier versions
might have had quirks not mentioned here.
CURLcode is one of the following:
.RS 1
.TP 5
.B CURLE_OK (0)
All fine. Proceed as usual.
.TP
.B CURLE_UNSUPPORTED_PROTOCOL (1)
The URL you passed to libcurl used a protocol that this libcurl does not
support. The support might be a compile-time option that you didn't use, it
can be a misspelled protocol string or just a protocol libcurl has no code
for.
.TP
.B CURLE_FAILED_INIT (2)
Very early initialization code failed. This is likely to be an internal error
or problem.
.TP
.B CURLE_URL_MALFORMAT (3)
The URL was not properly formatted.
.TP
.B CURLE_URL_MALFORMAT_USER (4)
URL user malformatted. The user-part of the URL syntax was not correct.
.TP
.B CURLE_COULDNT_RESOLVE_PROXY (5)
Couldn't resolve proxy. The given proxy host could not be resolved.
.TP
.B CURLE_COULDNT_RESOLVE_HOST (6)
Couldn't resolve host. The given remote host was not resolved.
.TP
.B CURLE_COULDNT_CONNECT (7)
Failed to connect() to host or proxy.
.TP
.B CURLE_FTP_WEIRD_SERVER_REPLY (8)
After connecting to a FTP server, libcurl expects to get a certain reply back.
This error code implies that it god a strange or bad reply. The given remote
server is probably not an OK FTP server.
.TP
.B CURLE_FTP_ACCESS_DENIED (9)
We were denied access when trying to login to an FTP server or when trying to
change working directory to the one given in the URL.
.TP
.B CURLE_FTP_USER_PASSWORD_INCORRECT (10)
The username and/or the password were incorrect when trying to login to an FTP
server.
.TP
.B CURLE_FTP_WEIRD_PASS_REPLY (11)
After having sent the FTP password to the server, libcurl expects a proper
reply. This error code indicates that an unexpected code was returned.
.TP
.B CURLE_FTP_WEIRD_USER_REPLY (12)
After having sent user name to the FTP server, libcurl expects a proper
reply. This error code indicates that an unexpected code was returned.
.TP
.B CURLE_FTP_WEIRD_PASV_REPLY (13)
libcurl failed to get a sensible result back from the server as a response to
either a PASV or a EPSV command. The server is flawed.
.TP
.B CURLE_FTP_WEIRD_227_FORMAT (14)
FTP servers return a 227-line as a response to a PASV command. If libcurl
fails to parse that line, this return code is passed back.
.TP
.B CURLE_FTP_CANT_GET_HOST (15)
An internal failure to lookup the host used for the new connection.
.TP
.B CURLE_FTP_CANT_RECONNECT (16)
A bad return code on either PASV or EPSV was sent by the FTP server,
preventing libcurl from being able to continue.
.TP
.B CURLE_FTP_COULDNT_SET_BINARY (17)
Received an error when trying to set the transfer mode to binary.
.TP
.B CURLE_PARTIAL_FILE (18)
A file transfer was shorter or larger than expected. This happens when the
server first reports an expected transfer size, and then delivers data that
doesn't match the previously given size.
.TP
.B CURLE_FTP_COULDNT_RETR_FILE (19)
This was either a weird reply to a 'RETR' command or a zero byte transfer
complete.
.TP
.B CURLE_FTP_WRITE_ERROR (20)
After a completed file transfer, the FTP server did not respond a proper
\"transfer successful\" code.
.TP
.B CURLE_FTP_QUOTE_ERROR (21)
When sending custom "QUOTE" commands to the remote server, one of the commands
returned an error code that was 400 or higher.
.TP
.B CURLE_HTTP_RETURNED_ERROR (22)
This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server
returns an error code that is >= 400.
.TP
.B CURLE_WRITE_ERROR (23)
An error occurred when writing received data to a local file, or an error was
returned to libcurl from a write callback.
.TP
.B CURLE_MALFORMAT_USER (24)
Malformat user. User name badly specified. *Not currently used*
.TP
.B CURLE_FTP_COULDNT_STOR_FILE (25)
FTP couldn't STOR file. The server denied the STOR operation. The error buffer
usually contains the server's explanation to this.
.TP
.B CURLE_READ_ERROR (26)
There was a problem reading a local file or an error returned by the read
callback.
.TP
.B CURLE_OUT_OF_MEMORY (27)
Out of memory. A memory allocation request failed. This is serious badness and
things are severly screwed up if this ever occur.
.TP
.B CURLE_OPERATION_TIMEOUTED (28)
Operation timeout. The specified time-out period was reached according to the
conditions.
.TP
.B CURLE_FTP_COULDNT_SET_ASCII (29)
libcurl failed to set ASCII transfer type (TYPE A).
.TP
.B CURLE_FTP_PORT_FAILED (30)
The FTP PORT command returned error. This mostly happen when you haven't
specified a good enough address for libcurl to use. See \fICURLOPT_FTPPORT\fP.
.TP
.B CURLE_FTP_COULDNT_USE_REST (31)
The FTP REST command returned error. This should never happen if the server is
sane.
.TP
.B CURLE_FTP_COULDNT_GET_SIZE (32)
The FTP SIZE command returned errror. SIZE is not a kosher FTP command, it is
an extension and not all servers support it. This is not a surprising error.
.TP
.B CURLE_HTTP_RANGE_ERROR (33)
The HTTP server does not support or accept range requests.
.TP
.B CURLE_HTTP_POST_ERROR (34)
This is an odd error that mainly occurs due to internal confusion.
.TP
.B CURLE_SSL_CONNECT_ERROR (35)
A problem occured somewhere in the SSL/TLS handshake. You really want the
error buffer and read the message there as it pinpoints the problem slightly
more. Could be certificates (file formats, paths, permissions), passwords, and
others.
.TP
.B CURLE_FTP_BAD_DOWNLOAD_RESUME (36)
Attempting FTP resume beyond file size.
.TP
.B CURLE_FILE_COULDNT_READ_FILE (37)
A file given with FILE:// couldn't be opened. Most likely because the file
path doesn't identify an existing file. Did you check file permissions?
.TP
.B CURLE_LDAP_CANNOT_BIND (38)
LDAP cannot bind. LDAP bind operation failed.
.TP
.B CURLE_LDAP_SEARCH_FAILED (39)
LDAP search failed.
.TP
.B CURLE_LIBRARY_NOT_FOUND (40)
Library not found. The LDAP library was not found.
.TP
.B CURLE_FUNCTION_NOT_FOUND (41)
Function not found. A required LDAP function was not found.
.TP
.B CURLE_ABORTED_BY_CALLBACK (42)
Aborted by callback. A callback returned "abort" to libcurl.
.TP
.B CURLE_BAD_FUNCTION_ARGUMENT (43)
Internal error. A function was called with a bad parameter.
.TP
.B CURLE_BAD_CALLING_ORDER (44)
Internal error. A function was called in a bad order.
.TP
.B CURLE_HTTP_PORT_FAILED (45)
Interface error. A specified outgoing interface could not be used. Set which
interface to use for outgoing connections' source IP address with
CURLOPT_INTERFACE.
.TP
.B CURLE_BAD_PASSWORD_ENTERED (46)
Bad password entered. An error was signaled when the password was
entered. This can also be the result of a "bad password" returned from a
specified password callback.
.TP
.B CURLE_TOO_MANY_REDIRECTS (47)
Too many redirects. When following redirects, libcurl hit the maximum amount.
Set your limit with CURLOPT_MAXREDIRS.
.TP
.B CURLE_UNKNOWN_TELNET_OPTION (48)
An option set with CURLOPT_TELNETOPTIONS was not recognized/known. Refer to
the appropriate documentation.
.TP
.B CURLE_TELNET_OPTION_SYNTAX (49)
A telnet option string was Illegally formatted.
.TP
.B CURLE_OBSOLETE (50)
This is not an error. This used to be another error code in an old libcurl
version and is currently unused.
.TP
.B CURLE_SSL_PEER_CERTIFICATE (51)
The remote server's SSL certificate was deemed not OK.
.TP
.B CURLE_GOT_NOTHING (52)
Nothing was returned from the server, and under the circumstances, getting
nothing is considered an error.
.TP
.B CURLE_SSL_ENGINE_NOTFOUND (53)
The specified crypto engine wasn't found.
.TP
.B CURLE_SSL_ENGINE_SETFAILED (54)
Failed setting the selected SSL crypto engine as default!
.TP
.B CURLE_SEND_ERROR (55)
Failed sending network data.
.TP
.B CURLE_RECV_ERROR (56)
Failure with receiving network data.
.TP
.B CURL_LAST
This is not an error, but in the curl/curl.h file this can be used to know how
many existing error codes there are.
.RE
.SH "CURLMcode"
This is the generic return code used by functions in the libcurl multi
interface.

View File

@@ -0,0 +1,100 @@
.\" You can view this file with:
.\" nroff -man [file]
.\" $Id$
.\"
.TH libcurl-multi 5 "13 Oct 2001" "libcurl 7.10.1" "libcurl multi interface"
.SH NAME
libcurl-multi \- how to use the multi interface
.SH DESCRIPTION
This is an overview on how to use the libcurl multi interface in your C
programs. There are specific man pages for each function mentioned in
here. There's also the libcurl-the-guide document for a complete tutorial to
programming with libcurl and the \fIlibcurl(3)\fP man page for an overview of
the libcurl easy interface.
All functions in the multi interface are prefixed with curl_multi.
.SH "PLEASE NOTICE"
The multi interface is a rather new member of the libcurl family. It has not
yet been very widely used. It may still be a few more bugs lurking in there
than we are used to. That said, it might also just work in every aspect you
try it. Please report all bugs and oddities you see.
.SH "OBJECTIVES"
The multi interface introduces several new abilities that the easy interface
refuses to offer. They are mainly:
1. Enable a "pull" interface. The application that uses libcurl decides where
and when to ask libcurl to get/send data.
2. Enable multiple simultaneous transfers in the same thread without making it
complicated for the application.
3. Enable the application to select() on its own file descriptors and curl's
file descriptors simultaneous easily.
.SH "ONE MULTI HANDLE MANY EASY HANDLES"
To use the multi interface, you must first create a 'multi handle' with
\fIcurl_multi_init\fP. This handle is then used as input to all further
curl_multi_* functions.
Each single transfer is built up with an easy handle. You must create them,
and setup the appropriate options for each easy handle, as outlined in the
\fIlibcurl(3)\fP man page, using \fIcurl_easy_setopt(3)\fP.
When the easy handle is setup for a transfer, then instead of using
\fIcurl_easy_perform\fP (as when using the easy interface for transfers), you
should instead add the easy handle to the multi handle using
\fIcurl_easy_add_handl\fP. The multi handle is sometimes referred to as a
\'multi stack\' because of the fact that it may hold a large amount of easy
handles.
Should you change your mind, the easy handle is again removed from the multi
stack using \fIcurl_multi_remove_handle\fP. Once removed from the multi
handle, you can again use other easy interface functions like
\fIcurl_easy_perform\fP on the handle or whatever you think is necessary.
Adding the easy handle to the multi handle does not start the transfer.
Remember that one of the main ideas with this interface is to let your
application drive. You drive the transfers by invoking
\fIcurl_multi_perform\fP. libcurl will then transfer data if there is anything
available to transfer. It'll use the callbacks and everything else you have
setup in the individual easy handles. It'll transfer data on all current
transfers in the multi stack that are ready to transfer anything. It may be
all, it may be none.
Your application can acquire knowledge from libcurl when it would like to get
invoked to transfer data, so that you don't have to busy-loop and call that
\fIcurl_multi_perform\fP like crazy. \fIcurl_multi_fdset\fP offers an
interface using which you can extract fd_sets from libcurl to use in select()
or poll() calls in order to get to know when the transfers in the multi stack
might need attention. This also makes it very easy for your program to wait
for input on your own private file descriptors at the same time or perhaps
timeout every now and then, should you want that.
A little note here about the return codes from the multi functions, and
especially the \fIcurl_multi_perform\fP: if you receive
\fICURLM_CALL_MULTI_PERFORM\fP, this basicly means that you should call
\fIcurl_multi_perform\fP again, before you select() on more actions. You don't
have to do it immediately, but the return code means that libcurl may have
more data available to return or that there may be more data to send off
before it is "satisfied".
\fIcurl_multi_perform\fP stores the number of still running transfers in one
of its input arguments, and by reading that you can figure out when all the
transfers in the multi handles are done. 'done' does not mean successful. One
or more of the transfers may have failed. Tracking when this number changes,
you know when one or more transfers are done.
To get information about completed transfers, to figure out success or not and
similar, \fIcurl_multi_info_read\fP should be called. It can return a message
about a current or previous transfer. Repeated invokes of the function get
more messages until the message queue is empty. The information you receive
there includes an easy handle pointer which you may use to identify which easy
handle the information regards.
When all transfers in the multi stack are done, cleanup the multi handle with
\fIcurl_multi_cleanup\fP. Be careful and please note that you \fBMUST\fP
invoke separate \fIcurl_easy_cleanup\fP calls on every single easy handle to
clean them up properly.
If you want to re-use an easy handle that was added to the multi handle for
transfer, you must first remove it from the multi stack and then re-add it
again (possbily after having altered some options at your own choice).

View File

@@ -2,24 +2,27 @@
.\" nroff -man [file]
.\" $Id$
.\"
.TH libcurl 5 "14 August 2001" "libcurl 7.8.1" "libcurl overview"
.TH libcurl 3 "19 March 2002" "libcurl 7.9.6" "libcurl overview"
.SH NAME
libcurl \- client-side URL transfers
.SH DESCRIPTION
This is an overview on how to use libcurl in your c/c++ programs. There are
specific man pages for each function mentioned in here.
This is an overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. There's also the
libcurl-the-guide document for a complete tutorial to programming with
libcurl.
libcurl can also be used directly from within your Java, PHP, Perl, Ruby or
Tcl programs as well, look elsewhere for documentation on this!
There are a dozen custom bindings that bring libcurl access to your favourite
language. Look elsewhere for documentation on those.
All applications that use libcurl should call \fIcurl_global_init()\fP exactly
once before any libcurl function can be used. After all usage of libcurl is
complete, it \fBmust\fP call \fIcurl_global_cleanup()\fP. In between those two
calls, you can use libcurl as described below.
When using libcurl you init your session and get a handle, which you use as
input to the following interface functions you use. Use \fIcurl_easy_init()\fP
to get the handle.
When using libcurl's "easy" interface you init your session and get a handle,
which you use as input to the easy interface functions you use. Use
\fIcurl_easy_init()\fP to get the handle. There is also the so called "multi"
interface, try the \fIlibcurl-multi(3)\fP man page for an overview of that.
You continue by setting all the options you want in the upcoming transfer,
most important among them is the URL itself (you can't transfer anything
@@ -56,9 +59,6 @@ get information about a performed transfer
.B curl_formadd()
helps building a HTTP form POST
.TP
.B curl_formparse()
helps building a HTTP form POST (deprecated since 7.9 use curl_formadd()!)
.TP
.B curl_formfree()
free a list built with curl_formparse()/curl_formadd()
.TP
@@ -76,9 +76,8 @@ portable case insensitive string comparisons
.RE
.SH "LINKING WITH LIBCURL"
Starting with 7.7.2 (on unix-like machines), there's a tool named curl-config
that gets installed with the rest of the curl stuff when 'make install' is
performed.
On unix-like machines, there's a tool named curl-config that gets installed
with the rest of the curl stuff when 'make install' is performed.
curl-config is added to make it easier for applications to link with libcurl
and developers to learn about libcurl and how to use it.
@@ -98,36 +97,24 @@ Only use documented functions and functionality!
libcurl works
.B exactly
the same, on any of the platforms it compiles and builds on.
There's only one caution, and that is the win32 platform that may(*) require
you to init the winsock stuff before you use the libcurl functions. Details on
this are noted on the curl_easy_init() man page.
(*) = it appears as if users of the cygwin environment get this done
automatically, also libcurl 7.8.1 and later can handle this for you.
.SH "THREADS"
Never ever call curl-functions simultaneously using the same handle from
several threads. libcurl is thread-safe and can be used in any number of
threads, but you must use separate curl handles if you want to use libcurl in
more than one thread simultaneously.
.SH "PERSISTANT CONNECTIONS"
With libcurl 7.7, persistant connections were added. Persistant connections
means that libcurl can re-use the same connection for several transfers, if
the conditions are right.
Persistent connections means that libcurl can re-use the same connection for
several transfers, if the conditions are right.
libcurl will *always* attempt to use persistant connections. Whenever you use
libcurl will *always* attempt to use persistent connections. Whenever you use
curl_easy_perform(), libcurl will attempt to use an existing connection to do
the transfer, and if none exists it'll open a new one that will be subject
for re-use on a possible following call to curl_easy_perform().
the transfer, and if none exists it'll open a new one that will be subject for
re-use on a possible following call to curl_easy_perform().
To allow libcurl to take full advantage of persistant connections, you should
do as many of your file transfers as possible using the same curl
handle. When you call curl_easy_cleanup(), all the possibly open connections
held by libcurl will be closed and forgotten.
To allow libcurl to take full advantage of persistent connections, you should
do as many of your file transfers as possible using the same curl handle. When
you call curl_easy_cleanup(), all the possibly open connections held by
libcurl will be closed and forgotten.
Note that the options set with curl_easy_setopt() will be used in on every
repeat curl_easy_perform() call
.SH "COMPATIBILITY WITH OLDER LIBCURLS"
Repeated curl_easy_perform() calls on the same handle were not supported in
pre-7.7 versions, and caused confusion and undefined behaviour.

2
include/.cvsignore Normal file
View File

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

2
include/curl/.cvsignore Normal file
View File

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

View File

@@ -3,5 +3,6 @@ pkginclude_HEADERS = \
easy.h \
mprintf.h \
stdcheaders.h \
types.h
types.h \
multi.h
pkgincludedir= $(includedir)/curl

View File

@@ -1,27 +1,27 @@
#ifndef __CURL_CURL_H
#define __CURL_CURL_H
/*****************************************************************************
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2001, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* In order to be useful for every potential user, curl and libcurl are
* dual-licensed under the MPL and the MIT/X-derivate licenses.
* Copyright (C) 1998 - 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the MPL or the MIT/X-derivate
* licenses. You may pick one of these licenses.
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* $Id$
*****************************************************************************/
***************************************************************************/
#include <stdio.h>
/* The include stuff here is mainly for time_t! */
@@ -30,11 +30,11 @@
# include <time.h>
#else
# include <sys/types.h>
# if TIME_WITH_SYS_TIME
# ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
# else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
@@ -49,22 +49,31 @@
#define FALSE 0
#endif
#include <curl/types.h>
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
struct HttpPost {
struct HttpPost *next; /* next entry in the list */
/* stupid #define trick to preserve functionality with older code, but
making it use our name space for the future */
#define HttpPost curl_httppost
struct curl_httppost {
struct curl_httppost *next; /* next entry in the list */
char *name; /* pointer to allocated name */
long namelength; /* length of name length */
char *contents; /* pointer to allocated data contents */
long contentslength; /* length of contents field */
/* CMC: Added support for buffer uploads */
char *buffer; /* pointer to allocated buffer contents */
long bufferlength; /* length of buffer field */
char *contenttype; /* Content-Type */
struct curl_slist* contentheader; /* list of extra headers for this form */
struct HttpPost *more; /* if one field name has more than one file, this
link should link to following files */
struct curl_httppost *more; /* if one field name has more than one file, this
link should link to following files */
long flags; /* as defined below */
#define HTTPPOST_FILENAME (1<<0) /* specified content is a file name */
#define HTTPPOST_READFILE (1<<1) /* specified content is a file name */
@@ -72,13 +81,24 @@ struct HttpPost {
do not free in formfree */
#define HTTPPOST_PTRCONTENTS (1<<3) /* contents is only stored pointer
do not free in formfree */
/* CMC: Added support for buffer uploads */
#define HTTPPOST_BUFFER (1<<4) /* upload file from buffer */
#define HTTPPOST_PTRBUFFER (1<<5) /* upload file from pointer contents */
char *showfilename; /* The file name to show. If not set, the actual
file name will be used (if this is a file part) */
};
typedef int (*curl_progress_callback)(void *clientp,
size_t dltotal,
size_t dlnow,
size_t ultotal,
size_t ulnow);
double dltotal,
double dlnow,
double ultotal,
double ulnow);
/* Tests have proven that 20K is a very bad buffer size for uploads on
Windows, while 16K for some odd reason performed a lot better. */
#define CURL_MAX_WRITE_SIZE 16384
typedef size_t (*curl_write_callback)(char *buffer,
size_t size,
@@ -95,6 +115,23 @@ typedef int (*curl_passwd_callback)(void *clientp,
char *buffer,
int buflen);
/* the kind of data that is passed to information_callback*/
typedef enum {
CURLINFO_TEXT = 0,
CURLINFO_HEADER_IN, /* 1 */
CURLINFO_HEADER_OUT, /* 2 */
CURLINFO_DATA_IN, /* 3 */
CURLINFO_DATA_OUT, /* 4 */
CURLINFO_END
} curl_infotype;
typedef int (*curl_debug_callback)
(CURL *handle, /* the handle/transfer this concerns */
curl_infotype type, /* what kind of data */
char *data, /* points to the data */
size_t size, /* size of the data pointed to */
void *userp); /* whatever the user please */
/* All possible error codes from all sorts of curl functions. Future versions
may return other values, stay prepared.
@@ -125,7 +162,7 @@ typedef enum {
CURLE_FTP_COULDNT_RETR_FILE, /* 19 */
CURLE_FTP_WRITE_ERROR, /* 20 */
CURLE_FTP_QUOTE_ERROR, /* 21 */
CURLE_HTTP_NOT_FOUND, /* 22 */
CURLE_HTTP_RETURNED_ERROR, /* 22 */
CURLE_WRITE_ERROR, /* 23 */
CURLE_MALFORMAT_USER, /* 24 - user name is illegally specified */
CURLE_FTP_COULDNT_STOR_FILE, /* 25 - failed FTP upload */
@@ -139,7 +176,7 @@ typedef enum {
CURLE_HTTP_RANGE_ERROR, /* 33 - RANGE "command" didn't work */
CURLE_HTTP_POST_ERROR, /* 34 */
CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL */
CURLE_FTP_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */
CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */
CURLE_FILE_COULDNT_READ_FILE, /* 37 */
CURLE_LDAP_CANNOT_BIND, /* 38 */
CURLE_LDAP_SEARCH_FAILED, /* 39 */
@@ -157,11 +194,29 @@ typedef enum {
CURLE_SSL_PEER_CERTIFICATE, /* 51 - peer's certificate wasn't ok */
CURLE_GOT_NOTHING, /* 52 - when this is a specific error */
CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */
CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as default */
CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as
default */
CURLE_SEND_ERROR, /* 55 - failed sending network data */
CURLE_RECV_ERROR, /* 56 - failure in receiving network data */
CURLE_SHARE_IN_USE, /* 57 - share is in use */
CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certificate */
CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */
CURLE_SSL_CACERT, /* 60 - problem with the CA cert (path?) */
CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized transfer encoding */
CURL_LAST /* never use! */
} CURLcode;
/* Make a spelling correction for the operation timed-out define */
#define CURLE_OPERATION_TIMEDOUT CURLE_OPERATION_TIMEOUTED
#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
typedef enum {
CURLPROXY_HTTP = 0,
CURLPROXY_SOCKS4 = 4,
CURLPROXY_SOCKS5 = 5
} curl_proxytype;
/* this was the error code 50 in 7.7.3 and a few earlier versions, this
is no longer used by libcurl but is instead #defined here only to not
make programs break */
@@ -169,22 +224,47 @@ typedef enum {
/* This is just to make older programs not break: */
#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
#define CURL_ERROR_SIZE 256
/* long may be 32 or 64 bits, but we should never depend on anything else
but 32 */
#define CURLOPTTYPE_LONG 0
#define CURLOPTTYPE_OBJECTPOINT 10000
#define CURLOPTTYPE_FUNCTIONPOINT 20000
/* name is uppercase CURLOPT_<name>,
type is one of the defined CURLOPTTYPE_<type>
number is unique identifier */
#ifdef CINIT
#undef CINIT
#endif
#define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number
/*
* Figure out if we can use the ## operator, which is supported by ISO/ANSI C
* and C++. Some compilers support it without setting __STDC__ or __cplusplus
* so we need to carefully check for them too. We don't use configure-checks
* for these since we want these headers to remain generic and working for all
* platforms.
*/
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
defined(__HP_aCC) || defined(__BORLANDC__)
/* This compiler is believed to have an ISO compatible preprocessor */
#define CURL_ISOCPP
#else
/* This compiler is believed NOT to have an ISO compatible preprocessor */
#undef CURL_ISOCPP
#endif
/* long may be 32 or 64 bits, but we should never depend on anything else
but 32 */
#define CURLOPTTYPE_LONG 0
#define CURLOPTTYPE_OBJECTPOINT 10000
#define CURLOPTTYPE_FUNCTIONPOINT 20000
#ifdef CURL_ISOCPP
#define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number
#else
/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
#define LONG CURLOPTTYPE_LONG
#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT
#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
#define CINIT(name,type,number) CURLOPT_/**/name = type + number
#endif
typedef enum {
CINIT(NOTHING, LONG, 0), /********* the first one is unused ************/
@@ -272,7 +352,7 @@ typedef enum {
/* Set cookie in request: */
CINIT(COOKIE, OBJECTPOINT, 22),
/* This points to a linked list of headers, struct HttpHeader kind */
/* This points to a linked list of headers, struct curl_slist kind */
CINIT(HTTPHEADER, OBJECTPOINT, 23),
/* This points to a linked list of post entries, struct HttpPost */
@@ -344,7 +424,11 @@ typedef enum {
CINIT(FTPLISTONLY, LONG, 48), /* Use NLST when listing ftp dir */
CINIT(FTPAPPEND, LONG, 50), /* Append instead of overwrite on upload! */
CINIT(NETRC, LONG, 51), /* read user+password from .netrc */
/* Specify whether to read the user+password from the .netrc or the URL.
* This must be one of the CURL_NETRC_* enums below. */
CINIT(NETRC, LONG, 51),
CINIT(FOLLOWLOCATION, LONG, 52), /* use Location: Luke! */
/* This FTPASCII name is now obsolete, to be removed, use the TRANSFERTEXT
@@ -493,10 +577,57 @@ typedef enum {
/* DNS cache timeout */
CINIT(DNS_CACHE_TIMEOUT, LONG, 92),
/* send linked-list of pre-transfer QUOTE commands (Wesley Laxton)*/
CINIT(PREQUOTE, OBJECTPOINT, 93),
/* set the debug function */
CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94),
/* set the data for the debug function */
CINIT(DEBUGDATA, OBJECTPOINT, 95),
/* mark this as start of a cookie session */
CINIT(COOKIESESSION, LONG, 96),
/* The CApath directory used to validate the peer certificate
this option is used only if SSL_VERIFYPEER is true */
CINIT(CAPATH, OBJECTPOINT, 97),
/* Instruct libcurl to use a smaller receive buffer */
CINIT(BUFFERSIZE, LONG, 98),
/* Instruct libcurl to not use any signal/alarm handlers, even when using
timeouts. This option is useful for multi-threaded applications.
See libcurl-the-guide for more background information. */
CINIT(NOSIGNAL, LONG, 99),
CURLOPT_LASTENTRY /* the last unusued */
/* Provide a CURLShare for mutexing non-ts data */
CINIT(SHARE, OBJECTPOINT, 100),
/* indicates type of proxy. accepted values are CURLPROXY_HTTP (default),
CURLPROXY_SOCKS4 and CURLPROXY_SOCKS5. */
CINIT(PROXYTYPE, LONG, 101),
/* Set the Accept-Encoding string. Use this to tell a server you would like
the response to be compressed. */
CINIT(ENCODING, OBJECTPOINT, 102),
/* Set pointer to private data */
CINIT(PRIVATE, OBJECTPOINT, 103),
/* Set aliases for HTTP 200 in the HTTP Response header */
CINIT(HTTP200ALIASES, OBJECTPOINT, 104),
CURLOPT_LASTENTRY /* the last unused */
} CURLoption;
/* two convenient "aliases" that follow the name scheme better */
#define CURLOPT_WRITEDATA CURLOPT_FILE
#define CURLOPT_READDATA CURLOPT_INFILE
#define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER
/* These enums are for use with the CURLOPT_HTTP_VERSION option. */
enum {
CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd
@@ -508,6 +639,18 @@ enum {
CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
};
/* These enums are for use with the CURLOPT_NETRC option. */
enum CURL_NETRC_OPTION {
CURL_NETRC_IGNORED, /* The .netrc will never be read.
* This is the default. */
CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred
* to one in the .netrc. */
CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored.
* Unless one is set programmatically, the .netrc
* will be queried. */
CURL_NETRC_LAST
};
enum {
CURL_SSLVERSION_DEFAULT,
CURL_SSLVERSION_TLSv1,
@@ -519,15 +662,26 @@ enum {
typedef enum {
TIMECOND_NONE,
CURL_TIMECOND_NONE,
TIMECOND_IFMODSINCE,
TIMECOND_IFUNMODSINCE,
TIMECOND_LASTMOD,
CURL_TIMECOND_IFMODSINCE,
CURL_TIMECOND_IFUNMODSINCE,
CURL_TIMECOND_LASTMOD,
TIMECOND_LAST
CURL_TIMECOND_LAST
} curl_TimeCond;
/* for backwards compatibility */
#ifndef TIMECOND_IFMODSINCE
#define TIMECOND_IFMODSINCE CURL_TIMECOND_IFMODSINCE
#endif
#ifndef TIMECOND_IFUNMODSINCE
#define TIMECOND_IFUNMODSINCE CURL_TIMECOND_IFUNMODSINCE
#endif
#ifndef TIMECOND_LASTMOD
#define TIMECOND_LASTMOD CURL_TIMECOND_LASTMOD
#endif
#ifdef __BEOS__
#include <support/SupportDefs.h>
#endif
@@ -545,16 +699,21 @@ extern int (curl_strnequal)(const char *s1, const char *s2, size_t n);
#define strequal(a,b) curl_strequal(a,b)
#define strnequal(a,b,c) curl_strnequal(a,b,c)
/* external form function */
int curl_formparse(char *string,
struct HttpPost **httppost,
struct HttpPost **last_post);
/* DEPRECATED function to build formdata */
int curl_formparse(char *, struct curl_httppost **,
struct curl_httppost **_post);
/* name is uppercase CURLFORM_<name> */
#ifdef CFINIT
#undef CFINIT
#endif
#ifdef CURL_ISOCPP
#define CFINIT(name) CURLFORM_ ## name
#else
/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
#define CFINIT(name) CURLFORM_/**/name
#endif
typedef enum {
CFINIT(NOTHING), /********* the first one is unused ************/
@@ -568,29 +727,65 @@ typedef enum {
CFINIT(CONTENTSLENGTH),
CFINIT(FILECONTENT),
CFINIT(ARRAY),
CFINIT(ARRAY_START), /* below are the options allowed within a array */
CFINIT(OBSOLETE),
CFINIT(FILE),
CFINIT(BUFFER),
CFINIT(BUFFERPTR),
CFINIT(BUFFERLENGTH),
CFINIT(CONTENTTYPE),
CFINIT(CONTENTHEADER),
CFINIT(FILENAME),
CFINIT(END),
CFINIT(ARRAY_END), /* up are the options allowed within a array */
CFINIT(OBSOLETE2),
CURLFORM_LASTENTRY /* the last unusued */
} CURLformoption;
#undef CFINIT /* done */
/* structure to be used as parameter for CURLFORM_ARRAY */
struct curl_forms {
CURLformoption option;
const char *value;
};
/* new external form function */
int curl_formadd(struct HttpPost **httppost,
struct HttpPost **last_post,
/* use this for multipart formpost building */
/* Returns code for curl_formadd()
*
* Returns:
* CURL_FORMADD_OK on success
* CURL_FORMADD_MEMORY if the FormInfo allocation fails
* CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form
* CURL_FORMADD_NULL if a null pointer was given for a char
* CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed
* CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used
* CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error)
* CURL_FORMADD_MEMORY if a HttpPost struct cannot be allocated
* CURL_FORMADD_MEMORY if some allocation for string copying failed.
* CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array
*
***************************************************************************/
typedef enum {
CURL_FORMADD_OK, /* first, no error */
CURL_FORMADD_MEMORY,
CURL_FORMADD_OPTION_TWICE,
CURL_FORMADD_NULL,
CURL_FORMADD_UNKNOWN_OPTION,
CURL_FORMADD_INCOMPLETE,
CURL_FORMADD_ILLEGAL_ARRAY,
CURL_FORMADD_LAST /* last */
} CURLFORMcode;
CURLFORMcode curl_formadd(struct curl_httppost **httppost,
struct curl_httppost **last_post,
...);
/* cleanup a form: */
void curl_formfree(struct HttpPost *form);
void curl_formfree(struct curl_httppost *form);
/* Unix and Win32 getenv function call, this returns a malloc()'ed string that
MUST be free()ed after usage is complete. */
@@ -603,6 +798,9 @@ char *curl_version(void);
* allocated string or NULL if an error occurred. */
char *curl_escape(const char *string, int length);
char *curl_unescape(const char *string, int length);
/* 20020912 WJM. Provide for a de-allocation in the same translation unit
that did the allocation. Added in libcurl 7.10 */
void curl_free(void *p);
/* curl_global_init() should be invoked exactly once for each application that
uses libcurl */
@@ -613,8 +811,8 @@ CURLcode curl_global_init(long flags);
void curl_global_cleanup(void);
/* This is the version number */
#define LIBCURL_VERSION "7.9.3-pre2"
#define LIBCURL_VERSION_NUM 0x070903
#define LIBCURL_VERSION "7.10.3"
#define LIBCURL_VERSION_NUM 0x070a03
/* linked-list structure for the CURLOPT_QUOTE option (and other) */
struct curl_slist {
@@ -666,12 +864,17 @@ typedef enum {
CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,
CURLINFO_LASTONE = 18
} CURLINFO;
CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,
/* unfortunately, the easy.h include file needs the options and info stuff
before it can be included! */
#include <curl/easy.h> /* nothing in curl is fun without the easy stuff */
CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19,
CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20,
CURLINFO_PRIVATE = CURLINFO_STRING + 21,
/* Fill in new entries here! */
CURLINFO_LASTONE = 22
} CURLINFO;
typedef enum {
CURLCLOSEPOLICY_NONE, /* first, never use this */
@@ -691,8 +894,106 @@ typedef enum {
#define CURL_GLOBAL_NOTHING 0
#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
/*****************************************************************************
* Setup defines, protos etc for the sharing stuff.
*/
/* Different data locks for a single share */
typedef enum {
CURL_LOCK_DATA_NONE = 0,
CURL_LOCK_DATA_COOKIE = 1,
CURL_LOCK_DATA_DNS = 2,
CURL_LOCK_DATA_SSL_SESSION = 3,
CURL_LOCK_DATA_CONNECT = 4,
CURL_LOCK_DATA_LAST
} curl_lock_data;
/* Different lock access types */
typedef enum {
CURL_LOCK_ACCESS_NONE = 0, /* unspecified action */
CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */
CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */
CURL_LOCK_ACCESS_LAST /* never use */
} curl_lock_access;
typedef void (*curl_lock_function)(CURL *handle,
curl_lock_data data,
curl_lock_access access,
void *userptr);
typedef void (*curl_unlock_function)(CURL *handle,
curl_lock_data data,
void *userptr);
typedef void CURLSH;
typedef enum {
CURLSHE_OK, /* all is fine */
CURLSHE_BAD_OPTION, /* 1 */
CURLSHE_IN_USE, /* 2 */
CURLSHE_INVALID, /* 3 */
CURLSHE_LAST /* never use */
} CURLSHcode;
typedef enum {
CURLSHOPT_NONE, /* don't use */
CURLSHOPT_SHARE, /* specify a data type to share */
CURLSHOPT_UNSHARE, /* specify shich data type to stop sharing */
CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */
CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */
CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/unlock
callback functions */
CURLSHOPT_LAST /* never use */
} CURLSHoption;
CURLSH *curl_share_init(void);
CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
CURLSHcode curl_share_cleanup(CURLSH *);
/****************************************************************************
* Structures for querying information about the curl library at runtime.
*/
typedef enum {
CURLVERSION_FIRST,
CURLVERSION_LAST /* never actually use this */
} CURLversion;
/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by
basicly all programs ever, that want to get version information. It is
meant to be a built-in version number for what kind of struct the caller
expects. If the struct ever changes, we redfine the NOW to another enum
from above. */
#define CURLVERSION_NOW CURLVERSION_FIRST
typedef struct {
CURLversion age; /* age of the returned struct */
const char *version; /* LIBCURL_VERSION */
unsigned int version_num; /* LIBCURL_VERSION_NUM */
const char *host; /* OS/host/cpu/machine when configured */
int features; /* bitmask, see defines below */
char *ssl_version; /* human readable string */
long ssl_version_num; /* number */
const char *libz_version; /* human readable string */
/* protocols is terminated by an entry with a NULL protoname */
const char **protocols;
} curl_version_info_data;
#define CURL_VERSION_IPV6 (1<<0)
#define CURL_VERSION_KERBEROS4 (1<<1)
#define CURL_VERSION_SSL (1<<2)
#define CURL_VERSION_LIBZ (1<<3)
/* returns a pointer to a static copy of the version info struct */
curl_version_info_data *curl_version_info(CURLversion);
#ifdef __cplusplus
}
#endif
/* unfortunately, the easy.h and multi.h include files need options and info
stuff before they can be included! */
#include "easy.h" /* nothing in curl is fun without the easy stuff */
#include "multi.h"
#endif /* __CURL_CURL_H */

View File

@@ -1,27 +1,27 @@
#ifndef __CURL_EASY_H
#define __CURL_EASY_H
/*****************************************************************************
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2000, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* In order to be useful for every potential user, curl and libcurl are
* dual-licensed under the MPL and the MIT/X-derivate licenses.
* Copyright (C) 1998 - 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the MPL or the MIT/X-derivate
* licenses. You may pick one of these licenses.
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* $Id$
*****************************************************************************/
***************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif

View File

@@ -1,27 +1,27 @@
#ifndef __CURL_MULTI_H
#define __CURL_MULTI_H
/*****************************************************************************
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2001, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* In order to be useful for every potential user, curl and libcurl are
* dual-licensed under the MPL and the MIT/X-derivate licenses.
* Copyright (C) 1998 - 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the MPL or the MIT/X-derivate
* licenses. You may pick one of these licenses.
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* $Id$
*****************************************************************************/
***************************************************************************/
/*
This is meant to be the "external" header file. Don't give away any
internals here!
@@ -44,13 +44,18 @@
o Enable the application to select() on its own file descriptors and curl's
file descriptors simultaneous easily.
Example source using this interface: http://curl.haxx.se/dev/multi-app.c
Example sources using this interface is here: ../multi/
*/
#ifdef HAVE_SYS_SOCKET_H
#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__)
#include <winsock.h>
#else
#include <sys/socket.h>
#include <sys/time.h>
#endif
#include <curl/curl.h>
#include "curl.h"
typedef void CURLM;

View File

@@ -1,27 +1,27 @@
#ifndef __STDC_HEADERS_H
#define __STDC_HEADERS_H
/*****************************************************************************
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2000, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* In order to be useful for every potential user, curl and libcurl are
* dual-licensed under the MPL and the MIT/X-derivate licenses.
* Copyright (C) 1998 - 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the MPL or the MIT/X-derivate
* licenses. You may pick one of these licenses.
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* $Id$
*****************************************************************************/
***************************************************************************/
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>

View File

@@ -1,27 +1,27 @@
#ifndef __CURL_TYPES_H
#define __CURL_TYPES_H
/*****************************************************************************
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2000, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* In order to be useful for every potential user, curl and libcurl are
* dual-licensed under the MPL and the MIT/X-derivate licenses.
* Copyright (C) 1998 - 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the MPL or the MIT/X-derivate
* licenses. You may pick one of these licenses.
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* $Id$
*****************************************************************************/
***************************************************************************/
typedef void CURL;
typedef void CURLconnect;

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