diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-16 00:09:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-16 00:09:26 +0000 |
commit | 6c0eafbb1395d426a72a74538e0b2a95e8344ca6 (patch) | |
tree | 2a5f80b80fc76086a2602b812c2a182d00f961b7 /Build/source/libs/curl/docs | |
parent | 70f7efeb5c9965a63a4143ad1c1f473585dc364c (diff) |
libs 1
git-svn-id: svn://tug.org/texlive/trunk@1483 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/curl/docs')
85 files changed, 12417 insertions, 0 deletions
diff --git a/Build/source/libs/curl/docs/BUGS b/Build/source/libs/curl/docs/BUGS new file mode 100644 index 00000000000..c4f52cf72bf --- /dev/null +++ b/Build/source/libs/curl/docs/BUGS @@ -0,0 +1,63 @@ +$Id: BUGS,v 1.4 2002/01/10 07:38:53 bagder Exp $ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +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 + the time you read this it has probably grown even more. + + Of course there are lots of bugs left. And lots of misfeatures. + + To help us make curl the stable and solid product we want it to be, we need + bug reports and bug fixes. If you can't fix a bug yourself and submit a fix + for it, try to report an as detailed report as possible to the curl mailing + list to allow one of us to have a go at a solution. You should also post + your bug/problem at curl's bug tracking system over at + + http://sourceforge.net/bugs/?group_id=976 + + When reporting a bug, you should include information that will help us + understand what's wrong, what 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. + + 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 + flag. Usually, you also get more info by using -i so that is likely to be + useful when reporting bugs as well. + + If curl crashed, causing a core dump (in unix), there is hardly any use to + send that huge file to anyone of us. Unless we have an exact same system + setup as you, we can't do much with it. What we instead ask of you is to get + a stack trace and send that (much smaller) output to us instead! + + The address and how to subscribe to the mailing list is detailed in the + MANUAL file. + +HOW TO GET A STACK TRACE + + First, you must make sure that you compile all sources with -g and that you + don't 'strip' the final executable. Try to avoid optimizing the code as + well, remove -O, -O2 etc from the compiler options. + + Run the program until it dumps core. + + Run your debugger on the core file, like '<debugger> curl core'. <debugger> + should be replaced with the name of your debugger, in most cases that will + be 'gdb', but 'dbx' and others also occur. + + When the debugger has finished loading the core file and presents you a + prompt, enter 'where' (without the quotes) and press return. + + The list that is presented is the stack trace. If everything worked, it is + supposed to contain the chain of functions that were called when curl + crashed. Include the stack trace with your detailed bug report. It'll help a + lot. + diff --git a/Build/source/libs/curl/docs/CONTRIBUTE b/Build/source/libs/curl/docs/CONTRIBUTE new file mode 100644 index 00000000000..242927a7b0d --- /dev/null +++ b/Build/source/libs/curl/docs/CONTRIBUTE @@ -0,0 +1,113 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +To Think About When Contributing Source Code + + This document is intended to offer some guidelines that can be useful to keep + in mind when you decide to write a contribution to the project. This concerns + new features as well as corrections to existing flaws or bugs. + +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! + +The License Issue + + When contributing with code, you agree to put your changes and new code under + the same license curl and libcurl is already using unless stated otherwise. + + If you add a larger piece of code, you can opt to make that file or set of + files to use a different license as long as they don't enforce any changes to + the rest of the package and they make sense. Such "separate parts" can not be + GPL (as we don't want the GPL virus to attack users of libcurl) but they must + use "GPL compatible" licenses. + +What To Read + + Source code, the man pages, the INTERALS 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. + +Naming + + Try using a non-confusing naming scheme for your new functions and variable + names. It doesn't necessarily have to mean that you should use the same as in + other places of the code, just that the names should be logical, + understandable and be named according to what they're used for. File-local + functions should be made static. + +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! ;-) + +Commenting + + Comment your source code extensively. 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. + +Non-clobbering All Over + + When you write new functionality or fix bugs, it is important that you don't + fiddle all over the source files and functions. Remember that it is likely + that other people have done changes in the same source files as you have and + possibly even in the same functions. If you bring completely new + functionality, try writing it in a new source file. If you fix bugs, try to + fix one bug at a time and send them as separate patches. + +Separate Patches Doing Different Things + + It is annoying when you get a huge patch from someone that is said to fix 511 + odd problems, but discussions and opinions don't agree with 510 of them - or + 509 of them were already fixed in a different way. Then the patcher needs to + extract the single interesting patch from somewhere within the huge pile of + source, and that gives a lot of extra work. Preferably, all fixes that + correct different problems should be in their own patch with an attached + description exactly what they correct so that all patches can be selectively + applied by the maintainer or other interested parties. + +Patch Against Recent Sources + + Please try to get the latest available sources to make your patches + against. It makes the life of the developers so much easier. The very best is + if you get the most up-to-date sources from the CVS repository, but the + latest release archive is quite OK as well! + +Document + + Writing docs is dead boring and one of the big problems with many open source + projects. Someone's gotta do it. It makes it a lot easier if you submit a + small description of your fix or your new features with every contribution so + that it can be swiftly added to the package documentation. + +Write Access to CVS Repository + + If you are a frequent contributor, or have another good reason, you can of + course get write access to the CVS repository and then you'll be able to + check-in all your changes straight into the CVS tree instead of sending all + changes by mail as patches. Just ask if this is what you'd want. You will be + required to have posted a few quality patches first, before you can be + granted write access. + +Test Cases + + Since the introduction of the test suite, we can quickly verify that the main + features are working as they're supposed to. To maintain this situation and + improve it, all new features and functions that are added need to be tested + in the test suite. Every feature that is added should get at least one valid + test case that verifies that it works as documented. If every submitter also + post a few test cases, it won't end up as a heavy burden on a single person! diff --git a/Build/source/libs/curl/docs/FAQ b/Build/source/libs/curl/docs/FAQ new file mode 100644 index 00000000000..dce534f2e41 --- /dev/null +++ b/Build/source/libs/curl/docs/FAQ @@ -0,0 +1,669 @@ +Updated: January 22, 2002 (http://curl.haxx.se/docs/faq.shtml) + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +FAQ + + 1. Philosophy + 1.1 What is cURL? + 1.2 What is libcurl? + 1.3 What is cURL not? + 1.4 When will you make curl do XXXX ? + 1.5 Who makes cURL? + 1.6 What do you get for making cURL? + 1.7 What about CURL from curl.com? + + 2. Install Related Problems + 2.1 configure doesn't find OpenSSL even when it is installed + 2.1.1. native linker doesn't find openssl + 2.1.2. only the libssl lib is missing + 2.2 Does curl work/build with other SSL libraries? + 2.3 Where can I find a copy of LIBEAY32.DLL? + 2.4 Does cURL support Socks (RFC 1928) ? + + 3. Usage Problems + 3.1 curl: (1) SSL is disabled, https: not supported + 3.2 How do I tell curl to resume a transfer? + 3.3 Why doesn't my posting using -F work? + 3.4 How do I tell curl to run custom FTP commands? + 3.5 How can I disable the Pragma: nocache header? + 3.6 Does curl support javascript, 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.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? + + 4. Running Problems + 4.1 Problems connecting to SSL servers. + 4.2 Why do I get problems when I use & or % in the URL? + 4.3 How can I use {, }, [ or ] to specify multiple URLs? + 4.4 Why do I get downloaded data even though the web page doesn't exist? + 4.5 Why do I get return code XXX from a HTTP server? + 4.5.1 "400 Bad Request" + 4.5.2 "401 Unauthorized" + 4.5.3 "403 Forbidden" + 4.5.4 "404 Not Found" + 4.5.5 "405 Method Not Allowed" + 4.5.6 "301 Moved Permanently" + 4.6 Can you tell me what error code 142 means? + 4.7 How do I keep user names and passwords secret in Curl command lines? + 4.8 I found a bug! + 4.9 Curl can't authenticate to the server that requires NTLM? + + 5. libcurl Issues + 5.1 Is libcurl thread-safe? + 5.2 How can I receive all data into a large memory chunk? + 5.3 How do I fetch multiple files with libcurl? + 5.4 Does libcurl do Winsock initing on win32 systems? + 5.5 Does CURLOPT_FILE and CURLOPT_INFILE work on win32 ? + 5.6 What about Keep-Alive or persistent connections? + + 6. License Issues + 6.1 I have a GPL program, can I use the libcurl library? + 6.2 I have a closed-source program, can I use the libcurl library? + 6.3 I have a BSD licensed program, can I use the libcurl library? + 6.4 I have a program that uses LGPL libraries, can I use libcurl? + 6.5 Can I modify curl/libcurl for my program and keep the changes secret? + 6.6 Can you please change the curl/libcurl license to XXXX? + +============================================================================== + +1. Philosophy + + 1.1 What is cURL? + + cURL (or simply just 'curl') is a command line tool for getting or sending + files using URL syntax. The name is a play on 'Client for URLs', originally + with URL spelled in uppercase to make it obvious it deals with URLs. The + fact it can also be pronounced 'see URL' also helped. + + Curl supports a range of common Internet protocols, currently including + HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and FILE. + + We spell it cURL or just curl. We pronounce it with an initial k sound: + [kurl]. + + 1.2 What is libcurl? + + libcurl is a reliable and portable library which provides you with an easy + interface to a range of common Internet protocols. + + You can use libcurl for free in your application even if it is commercial + or closed-source. + + 1.3 What is cURL not? + + Curl is *not* a wget clone even though that is a very common misconception. + Never, during curl's development, have we intended curl to replace wget or + compete on its market. Curl is targeted at single-shot file transfers. + + Curl is not a web site mirroring program. If you wanna use curl to mirror + something: fine, go ahead and write a script that wraps around curl to make + it reality (like curlmirror.pl does). + + Curl is not an FTP site mirroring program. Sure, get and send FTP with curl + but if you want systematic and sequential behavior you should write a + script (or write a new program that interfaces libcurl) and do it. + + Curl is not a PHP tool, even though it works perfectly well when used from + or with PHP. + + Curl is not a single-OS program. Curl exists, compiles, builds and runs + under a wide range of operating systems, including all modern Unixes (and a + bunch of older ones too), Windows, Amiga, BeOS, OS/2, OS X, QNX etc. + + 1.4 When will you make curl do XXXX ? + + We love suggestions of what to change in order to make curl and libcurl + better. We do however believe in a few rules when it comes to the future of + curl: + + * Curl is to remain a command line tool. If you want GUIs or fancy scripting + capabilities, you're free to write another tool that uses libcurl and that + offers this. There's no point in having a single tool that does every + imaginable thing. That's also one of the great advantages of having the + core of curl as a library. + + * We do not add things to curl that other small and available tools already + do very fine at the side. Curl's output is fine to pipe into another + program or redirect to another file for the next program to interpret. + + * We focus on protocol related issues and improvements. If you wanna do more + magic with the supported protocols than curl currently does, chances are + big we will agree. If you wanna add more protocols, we may very well + agree. + + * If you want someone else to make all the work while you wait for us to + implement it for you, that is not a very friendly attitude. We spend a + considerable time already on maintaining and developing curl. In order to + get more out of us, you should consider trading in some of your time and + efforts in return. + + * If you write the code, chances are bigger that it will get into curl + faster. + + 1.5 Who makes cURL? + + cURL and libcurl are not made by any single individual. Sure, Daniel + Stenberg writes the major parts, but 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). + + The list of contributors in the docs/THANKS file is only a small part of all + the people that every day provide us with bug reports, suggestions, ideas + and source code. + + curl is developed by a community, with Daniel at the wheel. + + 1.6 What do you get for making cURL? + + Project cURL is entirely free and open. No person gets paid in any way for + developing curl. We all 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 + sourceforge.net hosts several project tools we take advantage from like the + bug tracker, mailing lists and more. + + If you want to support our project with a donation or similar, one way of + doing that would be to buy "gift certificates" at useful online shopping + sites, such as amazon.com or thinkgeek.com. Another way would be to sponsor + us through a banner-program or by simply helping us coding, documenting, + testing etc. + + 1.7 What about CURL from curl.com? + + During the summer 2001, curl.com has been busy advertising their client-side + programming language for the web, named CURL. + + We are in no way associated with curl.com or their CURL programming + language. + + Our project name curl has been in effective use since 1998. We were not the + first computer related project to use the name "curl" and do not claim any + first-hand rights to the name. + + We recognize that we will be living in parallel with curl.com and wish them + every success. + +2. Install Related Problems + + 2.1. configure doesn't find OpenSSL even when it is installed + + This may be because of several reasons. + + 2.1.1. native linker doesn't find openssl + + Affected platforms: + Solaris (native cc compiler) + HPUX (native cc compiler) + SGI IRIX (native cc compiler) + SCO UNIX (native cc compiler) + + When configuring curl, I specify --with-ssl. OpenSSL is installed in + /usr/local/ssl Configure reports SSL in /usr/local/ssl, but fails to find + CRYPTO_lock in -lcrypto + + Cause: The cc for this test places the -L/usr/local/ssl/lib AFTER + -lcrypto, so ld can't find the library. This is due to a bug in the GNU + autoconf tool. + + Workaround: Specifying "LDFLAGS=-L/usr/local/ssl/lib" in front of + ./configure places the -L/usr/local/ssl/lib early enough in the command + line to make things work + + Solution submitted by: Bob Allison <allisonb@users.sourceforge.net> + + 2.1.2. only the libssl lib is missing + + If all include files and the libcrypto lib is present, with only the + libssl being missing according to configure, this is mostly likely because + a few functions are left out from the libssl. + + If the function names missing include RSA or RSAREF you can be certain + that this is because libssl requires the RSA and RSAREF libs to build. + + See the INSTALL file section that explains how to add those libs to + configure. Make sure that you remove the config.cache file before you + rerun configure with the new flags. + + 2.2. Does curl work/build with other SSL libraries? + + Curl has been written to use OpenSSL, although there should not be much + problems using a different library. If anyone does "port" curl to use a + different SSL library, we are of course very interested in getting the + patch! + + 2.3. Where can I find a copy of LIBEAY32.DLL? + + That is an OpenSSL binary built for Windows. + + Curl uses OpenSSL to do the SSL stuff. The LIBEAY32.DLL is what curl needs + on a windows machine to do https://. Check out the curl web site to find + accurate and up-to-date pointers to recent OpenSSL DLLs and other binary + packages. + + 2.4. Does cURL support Socks (RFC 1928) ? + + No. Nobody has wanted it that badly yet. We appreciate patches that bring + this functionality. + + +3. Usage problems + + 3.1. curl: (1) SSL is disabled, https: not supported + + If you get this output when trying to get anything from a https:// server, + it means that the configure script couldn't find all libs and include files + it requires for SSL to work. If the configure script fails to find them, + curl is simply built without SSL support. + + To get the https:// support into a curl that was previously built but that + reports that https:// is not supported, you should dig through the document + and logs and check out why the configure script doesn't find the SSL libs + and/or include files. + + Also, check out the other paragraph in this FAQ labeled "configure doesn't + find OpenSSL even when it is installed". + + 3.2. How do I tell curl to resume a transfer? + + Curl supports resumed transfers both ways on both FTP and HTTP. + + Try the -C option. + + 3.3. Why doesn't my posting using -F work? + + You can't simply use -F or -d at your choice. The web server that will + receive your post assumes one of the formats. If the form you're trying to + "fake" sets the type to 'multipart/form-data', then and only then you must + use the -F type. In all the most common cases, you should use -d which then + causes a posting with the type 'application/x-www-form-urlencoded'. + + This is described in some detail in the MANUAL and TheArtOfHttpScripting + documents, and if you don't understand it the first time, read it again + before you post questions about this to the mailing list. Also, try reading + through the mailing list archives for old postings and questions regarding + this. + + 3.4. How do I tell curl to run custom FTP commands? + + You can tell curl to perform optional commands both before and/or after a + file transfer. Study the -Q/--quote option. + + Since curl is used for file transfers, you don't use curl to just perform + FTP commands without transferring anything. Therefore you must always specify + a URL to transfer to/from even when doing custom FTP commands. + + 3.5. How can I disable the Pragma: nocache header? + + You can change all internally generated headers by adding a replacement with + the -H/--header option. By adding a header with empty contents you safely + disable that one. Use -H "Pragma:" to disable that specific header. + + 3.6. Does curl support javascript, 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. + + 3.7. Can I use curl to delete/rename a file through FTP? + + Yes. You specify custom FTP commands with -Q/--quote. + + One example would be to delete a file after you have downloaded it: + + curl -O ftp://download.com/coolfile -Q '-DELE coolfile' + + 3.8 How do I tell curl to follow HTTP redirects? + + Curl does not follow so-called redirects by default. The Location: header + that informs the client about this is only interpreted if you're using the + -L/--location option. As in: + + curl -L http://redirector.com + + 3.9 How do I use curl in my favourite 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: + + http://curl.haxx.se/libcurl/ + + In December 2001, there are interfaces available for the following + languages: C/C++, Cocoa, Dylan, Java, Perl, PHP, Python, Rexx, Ruby, Scheme + and Tcl. By the time you read this, additional ones may have appeared! + + 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP? + + Curl adheres to the HTTP spec, which basically means you can play with *any* + protocol that is built on top of HTTP. Protocols such as SOAP, WEBDAV and + XML-RPC are all such ones. You can use -X to set custom requests and -H to + set custom headers (or replace internally generated ones). + + Using libcurl or PHP's curl modules is just as fine and you'd just use the + proper library options to do the same. + + 3.11 How do I POST with a different Content-Type? + + You can always replace the internally generated headers with -H/--header. + To make a simple HTTP POST with text/xml as content-type, do something like: + + curl -d "datatopost" -H "Content-Type: text/xml" [URL] + + 3.12 Why do FTP specific features over HTTP proxy fail? + + Because when you use a HTTP proxy, the protocol spoken on the network will + be HTTP, even if you specify a FTP URL. This effectively means that you + normally can't use FTP specific features such as ftp upload and ftp quote + etc. + + There is one exception to this rule, and that is if you can "tunnel through" + the given HTTP proxy. Proxy tunneling is enabled with a special option (-p) + and is generally not available as proxy admins usually disable tunneling to + other ports than 443 (which is used for HTTPS access through proxies). + +4. Running Problems + + 4.1. Problems connecting to SSL servers. + + It took a very long time before we could sort out why curl had problems to + connect to certain SSL servers when using SSLeay or OpenSSL v0.9+. The + error sometimes showed up similar to: + + 16570:error:1407D071:SSL routines:SSL2_READ:bad mac decode:s2_pkt.c:233: + + It turned out to be because many older SSL servers don't deal with SSLv3 + requests properly. To correct this problem, tell curl to select SSLv2 from + the command line (-2/--sslv2). + + There has also been examples where the remote server didn't like the SSLv2 + request and instead you had to force curl to use SSLv3 with -3/--sslv3. + + 4.2. Why do I get problems when I use & or % in the URL? + + In general unix shells, the & letter is treated special and when used, it + runs the specified command in the background. To safely send the & as a part + of a URL, you should quote the entire URL by using single (') or double (") + quotes around it. + + An example that would invoke a remote CGI that uses &-letters could be: + + curl 'http://www.altavista.com/cgi-bin/query?text=yes&q=curl' + + In win32, the standard DOS shell treats the %-letter specially and you may + need to quote the string properly when % is used in it. + + 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'. + + 4.3. How can I use {, }, [ or ] to specify multiple URLs? + + Because those letters have a special meaning to the shell, and to be used in + a URL specified to curl you must quote them. + + An example that downloads two URLs (sequentially) would do: + + curl '{curl,www}.haxx.se' + + To be able to use those letters as actual parts of the URL (without using + them for the curl URL "globbing" system), use the -g/--globoff option (curl + 7.6 and later): + + curl -g 'www.site.com/weirdname[].html' + + 4.4. Why do I get downloaded data even though the web page doesn't exist? + + Curl asks remote servers for the page you specify. If the page doesn't exist + at the server, the HTTP protocol defines how the server should respond and + that means that headers and a "page" will be returned. That's simply how + HTTP works. + + By using the --fail option you can tell curl explicitly to not get any data + if the HTTP return code doesn't say success. + + 4.5 Why do I get return code XXX from a HTTP server? + + RFC2616 clearly explains the return codes. This is a short transcript. Go + read the RFC for exact details: + + 4.5.1 "400 Bad Request" + + The request could not be understood by the server due to malformed + syntax. The client SHOULD NOT repeat the request without modifications. + + 4.5.2 "401 Unauthorized" + + The request requires user authentication. + + 4.5.3 "403 Forbidden" + + The server understood the request, but is refusing to fulfill it. + Authorization will not help and the request SHOULD NOT be repeated. + + 4.5.4 "404 Not Found" + + The server has not found anything matching the Request-URI. No indication + is given of whether the condition is temporary or permanent. + + 4.5.5 "405 Method Not Allowed" + + The method specified in the Request-Line is not allowed for the resource + identified by the Request-URI. The response MUST include an Allow header + containing a list of valid methods for the requested resource. + + 4.5.6 "301 Moved Permanently" + + If you get this return code and an HTML outpt similar to this: + + <H1>Moved Permanently</H1> The document has moved <A + HREF="http://same_url_now_with_a_trailing_slash/">here</A>. + + it might be because you request a directory URL but without the trailing + slash. Try the same operation again _with_ the trailing URL, or use the + -L/--location option to follow the redirection. + + 4.6. Can you tell me what error code 142 means? + + All error codes that are larger than the highest documented error code means + that curl has exited due to a crash. This is a serious error, and we + appreciate a detailed bug report from you that describes how we could go + ahead and repeat this! + + 4.7. How do I keep user names and passwords secret in Curl command lines? + + This problem has two sides: + + The first part is to avoid having clear-text passwords in the command line + so that they don't appear in 'ps' outputs and similar. That is easily + avoided by using the "-K" option to tell curl to read parameters from a + file or stdin to which you can pass the secret info. + + To keep the passwords in your account secret from the rest of the world is + not a task that curl addresses. You could of course encrypt them somehow to + at least hide them from being read by human eyes, but that is not what + anyone would call security. + + Also note that regular HTTP and FTP passwords are sent in clear across the + network. All it takes for anyone to fetch them is to listen on the network. + Eavesdropping is very easy. + + 4.8 I found a bug! + + It is not a bug if the behavior is documented. Read the docs first. + + If it is a problem with a binary you've downloaded or a package for your + particular platform, try contacting the person who built the package/archive + you have. + + If there is a bug, 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. + + 4.9. Curl can't authenticate to the server that requires NTLM? + + NTLM is a Microsoft proprietary protocol. Unfortunately, curl does not + currently support that. Proprietary formats are evil. You should not use + such ones. + +5. libcurl Issues + + 5.1. Is libcurl thread-safe? + + Yes. + + We have written the libcurl code specificly adjusted for multi-threaded + programs. libcurl will use thread-safe functions instead of non-safe ones if + your system has such. + + We would appreciate some kind of report or README file from those who have + used libcurl in a threaded environment. + + 5.2 How can I receive all data into a large memory chunk? + + [ See also the examples/getinmemory.c source ] + + You are in full control of the callback function that gets called every time + there is data received from the remote server. You can make that callback do + whatever you want. You do not have to write the received data to a file. + + One solution to this problem could be to have a pointer to a struct that you + pass to the callback function. You set the pointer using the + curl_easy_setopt(CURLOPT_FILE) function. Then that pointer will be passed to + the callback instead of a FILE * to a file: + + /* imaginary struct */ + struct MemoryStruct { + char *memory; + size_t size; + }; + + /* imaginary callback function */ + size_t + WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) + { + register int realsize = size * nmemb; + struct MemoryStruct *mem = (struct MemoryStruct *)data; + + mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1); + if (mem->memory) { + memcpy(&(mem->memory[mem->size]), ptr, realsize); + mem->size += realsize; + mem->memory[mem->size] = 0; + } + return realsize; + } + + 5.3 How do I fetch multiple files with libcurl? + + Starting with version 7.7, curl and libcurl will have excellent support for + transferring multiple files. You should just repeatedly set new URLs with + curl_easy_setopt() and then transfer it with curl_easy_perform(). The handle + you get from curl_easy_init() is not only reusable starting with libcurl + 7.7, but also you're encouraged to reuse it if you can, as that will enable + libcurl to use persistent connections. + + For libcurl prior to 7.7, there was no multiple file support. The only + available way to do multiple requests was to init/perform/cleanup for each + transfer. + + 5.4 Does libcurl do Winsock initialization on win32 systems? + + Yes (since 7.8.1) if told to in the curl_global_init() call. + + 5.5 Does CURLOPT_FILE and CURLOPT_INFILE work on win32 ? + + Yes, but you cannot open a FILE * and pass the pointer to a DLL and have + that DLL use the FILE *. If you set CURLOPT_FILE you must also use + CURLOPT_WRITEFUNCTION as well to set a function that writes the file, even + if that simply writes the data to the specified FILE*. Similarly, if you use + CURLOPT_INFILE you must also specify CURLOPT_READFUNCTION. + + (Provided by Joel DeYoung and Bob Schader) + + 5.6 What about Keep-Alive or persistent connections? + + Starting with version 7.7, curl and libcurl will have excellent support for + persistent connections when transferring several files from the same server. + Curl will attempt to reuse connections for all URLs specified on the same + command line/config file, and libcurl will reuse connections for all + transfers that are made using the same libcurl handle. + + Previous versions had no persistent connection support. + +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.) + + 6.1. I have a GPL program, can I use the libcurl library? + + Yes! + + Since libcurl may be distributed under the MIT/X derivate license, it can be + used together with GPL in any software. + + 6.2. I have a closed-source program, can I use the libcurl library? + + Yes! + + libcurl does not put any restrictions on the program that uses the library. + + 6.3. I have a BSD licensed program, can I use the libcurl library? + + Yes! + + libcurl does not put any restrictions on the program that uses the library. + + 6.4. I have a program that uses LGPL libraries, can I use libcurl? + + Yes! + + The LGPL license doesn't clash with other licenses. + + 6.5. Can I modify curl/libcurl for my program and keep the changes secret? + + Yes! + + The MIT/X derivate license practically allows you to do almost anything with + the sources, on the condition that the copyright texts in the sources are + left intact. + + 6.6. Can you please change the curl/libcurl license to XXXX? + + No. + + We have carefully picked this license after years of development and + discussions and a large amount of people have contributed with source code + knowing that this is the license we use. This license puts the restrictions + we want on curl/libcurl and it does not spread to other programs or + libraries that use it. The recent dual license modification should make it + possible for everyone to use libcurl or curl in their projects, no matter + what license they already have in use. diff --git a/Build/source/libs/curl/docs/FEATURES b/Build/source/libs/curl/docs/FEATURES new file mode 100644 index 00000000000..2bdbba6d645 --- /dev/null +++ b/Build/source/libs/curl/docs/FEATURES @@ -0,0 +1,94 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +FEATURES + +Misc + - full URL syntax + - custom maximum download time + - custom least download speed acceptable + - custom output result after completion + - multiple URLs + - guesses protocol from host name unless specified + - uses .netrc + - progress bar/time specs while downloading + - "standard" proxy environment variables support + - config file support + - compiles on win32 (reported built on 29 operating systems) + - redirectable stderr + - use selected network interface for outgoing traffic + - IPv6 support + - persistant connections + +HTTP + - HTTP/1.1 compliant + - GET + - PUT + - HEAD + - POST + - multipart POST + - authentication + - resume (both GET and PUT) + - follow redirects + - maximum amount of redirects to follow + - custom HTTP request + - cookie get/send fully parsed + - understands the netscape cookie file format + - custom headers (that can replace/remove internally generated headers) + - custom user-agent string + - custom referer string + - range + - proxy authentication + - time conditions + - via http-proxy + - retrieve file modification date + +HTTPS (*1) + - (all the HTTP features) + - using certificates + - verify server certificate + - via http-proxy + +FTP + - download + - authentication + - kerberos security + - active/passive using PORT, EPRT, PASV or EPSV + - single file size information (compare to HTTP HEAD) + - 'type=' URL support + - dir listing + - dir listing names-only + - upload + - upload append + - upload via http-proxy as HTTP PUT + - download resume + - upload resume + - custom ftp commands (before and/or after the transfer) + - simple "range" support + - via http-proxy + - all operations can be tunneled through a http-proxy + - customizable to retrieve file modification date + +TELNET + - connection negotiation + - custom telnet options + - stdin/stdout I/O + +LDAP (*2) + - full LDAP URL support + +DICT + - extended DICT URL support + +GOPHER + - GET + - via http-proxy + +FILE + - URL support + + *1 = requires OpenSSL + *2 = requires OpenLDAP diff --git a/Build/source/libs/curl/docs/INSTALL b/Build/source/libs/curl/docs/INSTALL new file mode 100644 index 00000000000..7d8ce5c1489 --- /dev/null +++ b/Build/source/libs/curl/docs/INSTALL @@ -0,0 +1,466 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + + How To Compile + +Curl has been compiled and built on numerous different operating systems. + +Most systems build curl the same way (unix-style). Continue reading below for +more details if you're one of them. + +If you're using Windows (95/98/NT/ME/2000/XP or similar), VMS, RISC OS or OS/2 +or cross-compile, you should continue reading from one the paragraphs further +down. + +UNIX +==== + + A normal unix installation is made in three or four steps (after you've + unpacked the source archive): + + ./configure + make + make test (optional) + make install + + You probably need to be root when doing the last command. + + If you 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 + + The configure script always tries to find a working SSL library unless + explicitly told not to. If you have OpenSSL installed in the default search + path for your compiler/linker, you don't need to do anything special. If + you have OpenSSL installed in /usr/local/ssl, you can run configure like: + + ./configure --with-ssl + + If you have OpenSSL installed somewhere else (for example, /opt/OpenSSL,) + you can run configure like this: + + ./configure --with-ssl=/opt/OpenSSL + + If you insist on forcing a build without SSL support, even though you may + have OpenSSL installed in your system, you can run configure like this: + + ./configure --without-ssl + + If you have OpenSSL installed, but with the libraries in one place and the + header files somewhere else, you have to set the LDFLAGS and CPPFLAGS + environment variables prior to running configure. Something like this + should work: + + (with the Bourne shell and its clones): + + CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \ + ./configure + + (with csh, tcsh and their clones): + + env CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \ + ./configure + + If your SSL library was compiled with rsaref (usually for use in the United + States), you may also need to set: + + LIBS=-lRSAglue -lrsaref + (as suggested by Doug Kaufman) + + 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 + present, run configure like + + CC=cc ./configure + or + env Cc=cc ./configure + + To force a static library compile, disable the shared library creation + by running configure like: + + ./configure --disable-shared + + To tell the configure script to skip searching for thread-safe functions, + add an option like: + + ./configure --disable-thread + + To build curl with kerberos4 support enabled, curl requires the krb4 libs + and headers installed. You can then use a set of options to tell + configure where those are: + + --with-krb4-includes[=DIR] Specify location of kerberos4 headers + --with-krb4-libs[=DIR] Specify location of kerberos4 libs + --with-krb4[=DIR] where to look for Kerberos4 + + In most cases, /usr/athena is the install prefix and then it works with + + ./configure --with-krb4=/usr/athena + + If you're a curl developer and use gcc, you might want to enable more + debug options with the --enable-debug option. + +Win32 +===== + + Without SSL: + + MingW32 (GCC-2.95) style + ------------------------ + Run the 'mingw32.bat' file to get the proper environment variables + set, then run 'make mingw32' in the root dir. + + If you have any problems linking libraries or finding header files, be + sure to verify that the provided "Makefile.m32" files use the proper + paths, and adjust as necessary. + + Cygwin style + ------------ + Almost identical to the unix installation. Run the configure script in + the curl root with 'sh configure'. Make sure you have the sh + executable in /bin/ or you'll see the configure fail towards the end. + + Run 'make' + + Microsoft command line style + ---------------------------- + Run the 'vcvars32.bat' file to get the proper environment variables + set, then run 'nmake vc' in the root dir. + + The vcvars32.bat file is part of the Microsoft development + environment. + + IDE-style + ------------------------- + If you use VC++, Borland or similar compilers. Include all lib source + files in a static lib "project" (all .c and .h files that is). + (you should name it libcurl or similar) + + Make the sources in the src/ drawer be a "win32 console application" + project. Name it curl. + + With VC++, add 'ws2_32.lib' to the link libs when you build curl! + Borland seems to do that itself magically. Of course you have to make + sure it links with the libcurl too! + + For VC++ 6, there's an included Makefile.vc6 that should be possible + to use out-of-the-box. + + Microsoft note: add /Zm200 to the compiler options to increase the + compiler's memory allocation limit, as the hugehelp.c won't compile + due to "too long puts string". + + + With SSL: + + MingW32 (GCC-2.95) style + ------------------------ + Run the 'mingw32.bat' file to get the proper environment variables + set, then run 'make mingw32-ssl' in the root dir. + + If you have any problems linking libraries or finding header files, be + sure to look at the provided "Makefile.m32" files for the proper + paths, and adjust as necessary. + + Cygwin style + ------------ + Haven't done, nor got any reports on how to do. It should although be + identical to the unix setup for the same purpose. See above. + + Microsoft command line style + ---------------------------- + Please read the OpenSSL documentation on how to compile and install + the OpenSSL library. This generates the libeay32.dll and ssleay32.dll + files in the out32dll subdirectory in the OpenSSL home directory. If + you compiled OpenSSL static libraries (libeay32.lib, ssleay32.lib, + RSAglue.lib) they are created in the out32 subdirectory. + + Run the 'vcvars32.bat' file to get the proper environment variables + set. 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' if you installed Visual C/C++ 6 in the default + directory. + + Before running nmake define the OPENSSL_PATH environment variable with + the root/base directory of OpenSSL, for example: + + set OPENSSL_PATH=c:\openssl-0.9.6b + + Then run 'nmake vc-ssl' or 'nmake vc-ssl-dll' in the 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 scr subdirectory. This statically linked + version is a standalone executable not requiring any DLL at + runtime. This making method requires that you have build the static + libraries of OpenSSL 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 executables requires libcurl.dll and the OpenSSL DLLs + at runtime. + + Microsoft / Borland style + ------------------------- + If you have OpenSSL, and want curl to take advantage of it, edit your + project properties to use the SSL include path, link with the SSL libs + and define the USE_SSLEAY symbol. + + +IBM OS/2 +======== + + Building under OS/2 is not much different from building under unix. + You need: + + - emx 0.9d + - GNU make + - GNU patch + - ksh + - GNU bison + - GNU file utilities + - GNU sed + - autoconf 2.13 + + If you want to build with OpenSSL or OpenLDAP support, you'll need to + download those libraries, too. Dirk Ohme has done some work to port SSL + libraries under OS/2, but it looks like he doesn't care about emx. You'll + find his patches on: http://come.to/Dirk_Ohme + + If during the linking you get an error about _errno being an undefined + symbol referenced from the text segment, you need to add -D__ST_MT_ERRNO__ + in your definitions. + + If everything seems to work fine but there's no curl.exe, you need to add + -Zexe to your linker flags. + + If you're getting huge binaries, probably your makefiles have the -g in + CFLAGS. + +VMS +=== + (The VMS section is in whole contributed by the friendly Nico Baggus) + + This is the first attempt at porting cURL to VMS. + + Curl seems to work with FTP & HTTP other protocols are not tested. (the + perl http/ftp testing server supplied as testing too cannot work on VMS + because vms has no concept of fork(). [ I tried to give it a whack, but + thats of no use. + + SSL stuff has not been ported. + + Telnet has about the same issues as for Win32. When the changes for Win32 + are clear maybe they'l work for VMS too. The basic problem is that select + ONLY works for sockets. + + Marked instances of fopen/[f]stat that might become a problem, especially + for non stream files. In this regard, the files opened for writing will be + created stream/lf and will thus be safe. Just keep in mind that non-binary + read/wring from/to files will have a records size limit of 32767 bytes + imposed. + + Stat to get the size of the files is again only safe for stream files & + fixed record files without implied CC. + + -- My guess is that only allowing access to stream files is the quickest + way to get around the most issues. Therefore all files need to to be + checked to be sure they will be stream/lf before processing them. This is + the easiest way out, I know. The reason for this is that code that needs to + report the filesize will become a pain in the ass otherwise. + + Exit status.... Well we needed something done here, + + VMS has a structured exist status: + | 3 | 2 | 1 | 0| + |1098|765432109876|5432109876543|210| + +----+------------+-------------+---+ + |Ctrl| Facility | Error code |sev| + +----+------------+-------------+---+ + + With the Ctrl-bits an application can tell if part or the whole message has + allready been printed from the program, DCL doesn't need to print it again. + + Facility - basicaly the program ID. A code assigned to the program + the name can be fetched from external or internal message libraries + Errorcode - the errodes assigned by the application + Sev. - severity: Even = error, off = non error + 0 = Warning + 1 = Success + 2 = Error + 3 = Information + 4 = Fatal + <5-7> reserved. + + This all presents itself with: + %<FACILITY>-<SeV>-<Errorname>, <Error message> + + See also the src/curlmsg.msg file, it has the source for the messages In + src/main.c a section is devoted to message status values, the globalvalues + create symbols with certain values, referenced from a compiled message + file. Have all exit function use a exit status derived from a translation + table with the compiled message codes. + + This was all compiled with: + + Compaq C V6.2-003 on OpenVMS Alpha V7.1-1H2 + + So far for porting notes as of: + 13-jul-2001 + N. Baggus + +QNX +=== + (This section was graciously brought to us by David Bentham) + + As QNX is targetted for resource constrained environments, the QNX headers + set conservative limits. This includes the FD_SETSIZE macro, set by default + to 32. Socket descriptors returned within the CURL library may exceed this, + resulting in memory faults/SIGSEGV crashes when passed into select(..) + calls using fd_set macros. + + A good all-round solution to this is to override the default when building + libcurl, by overriding CFLAGS during configure, example + # configure CFLAGS='-DFD_SETSIZE=64 -g -O2' + +CROSS COMPILE +============= + + (This section was graciously brought to us by Jim Duey, 23-oct-2001) + + Download and unpack the cURL package. Version should be 7.9.1 or later. + + 'cd' to the new directory. (ie. curl-7.9.1-pre4) + + Set environment variables to point to the cross-compile toolchain and call + configure with any options you need. Be sure and specify the '--host' and + '--build' parameters at configuration time. The following script is an + example of cross-compiling for the IBM 405GP PowerPC processor using the + toolchain from MonteVista for Hardhat Linux. + + (begin script) + + #! /bin/sh + + export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin + export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include" + export AR=ppc_405-ar + export AS=ppc_405-as + export LD=ppc_405-ld + export RANLIB=ppc_405-ranlib + export CC=ppc_405-gcc + export NM=ppc_405-nm + + configure --target=powerpc-hardhat-linux \ + --host=powerpc-hardhat-linux \ + --build=i586-pc-linux-gnu \ + --prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \ + --exec-prefix=/usr/local + + (end script) + + The '--prefix' parameter specifies where cURL will be installed. If + 'configure' completes successfully, do 'make' and 'make install' as usual. + +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 + 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 OpenVMS V7.1-1H2 + - Alpha Tru64 v5.0 5.1 + - HP-PA HP-UX 9.X 10.X 11.X + - HP-PA Linux + - MIPS IRIX 6.2, 6.5 + - MIPS Linux + - Pocket PC/Win CE 3.0 + - Power AIX 4.2, 4.3.1, 4.3.2 + - PowerPC Darwin 1.0 + - PowerPC Linux + - PowerPC Mac OS 9 + - PowerPC Mac OS X + - SINIX-Z v5 + - Sparc Linux + - Sparc Solaris 2.4, 2.5, 2.5.1, 2.6, 7, 8 + - Sparc SunOS 4.1.X + - StrongARM (and other ARM) RISC OS 3.1, 4.02 + - StrongARM Linux 2.4 + - StrongARM NetBSD 1.4.1 + - Ultrix 4.3a + - i386 BeOS + - i386 FreeBSD + - i386 HURD + - i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4 + - i386 NetBSD + - i386 OS/2 + - i386 OpenBSD + - i386 SCO unix + - i386 Solaris 2.7 + - i386 Windows 95, 98, ME, NT, 2000 + - ia64 Linux 2.3.99 + - m68k AmigaOS 3 + - m68k Linux + - m68k OpenBSD + - s390 Linux + +OpenSSL +======= + + You'll find OpenSSL information at: + + http://www.openssl.org + + +MingW32/Cygwin +============== + + You'll find MingW32 and Cygwin information at: + + http://www.mingw.org + +OpenLDAP +======== + + You'll find OpenLDAP information at: + + http://www.openldap.org + + You need to install it with shared libraries, which is enabled when running + the ldap configure script with "--enable-shared". With my linux 2.0.36 + kernel I also had to disable using threads (with --without-threads), + because the configure script couldn't figure out my system. diff --git a/Build/source/libs/curl/docs/INTERNALS b/Build/source/libs/curl/docs/INTERNALS new file mode 100644 index 00000000000..42ac4508bb6 --- /dev/null +++ b/Build/source/libs/curl/docs/INTERNALS @@ -0,0 +1,381 @@ + Updated for curl 7.9.1 on November 2, 2001 + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +INTERNALS + + The project is split in two. The library and the client. The client part uses + the library, but the library is designed to allow other applications to use + it. + + The largest amount of code and complexity is in the library part. + +CVS +=== + All changes to the sources are committed to the CVS repository as soon as + they're somewhat verified to work. Changes shall be commited as independently + as possible so that individual changes can be easier spotted and tracked + afterwards. + + Tagging shall be used extensively, and by the time we release new archives we + should tag the sources with a name similar to the released version number. + +Windows vs Unix +=============== + + There are a few differences in how to program curl the unix way compared to + the Windows way. The four perhaps most notable details are: + + 1. Different function names for socket operations. + + In curl, this is solved with defines and macros, so that the source looks + the same at all places except for the header file that defines them. The + macros in use are sclose(), sread() and swrite(). + + 2. Windows requires a couple of init calls for the socket stuff. + + Those must be made by the application that uses libcurl, in curl that means + src/main.c has some code #ifdef'ed to do just that. + + 3. The file descriptors for network communication and file operations are + not easily interchangable as in unix. + + We avoid this by not trying any funny tricks on file descriptors. + + 4. When writing data to stdout, Windows makes end-of-lines the DOS way, thus + destroying binary data, although you do want that conversion if it is + text coming through... (sigh) + + We set stdout to binary under windows + + Inside the source code, We make an effort to avoid '#ifdef [Your OS]'. All + conditionals that deal with features *should* instead be in the format + '#ifdef HAVE_THAT_WEIRD_FUNCTION'. Since Windows can't run configure scripts, + we maintain two config-win32.h files (one in lib/ and one in src/) that are + supposed to look exactly as a config.h file would have looked like on a + Windows machine! + + Generally speaking: always remember that this will be compiled on dozens of + operating systems. Don't walk on the edge. + +Library +======= + + There are plenty of entry points to the library, namely each publicly defined + function that libcurl offers to applications. All of those functions are + rather small and easy-to-follow. All the ones prefixed with 'curl_easy' are + put in the lib/easy.c file. + + curl_global_init_() and curl_global_cleanup() should be called by the + application to initialize and clean up global stuff in the library. As of + today, it can handle the global SSL initing if SSL is enabled and it can init + the socket layer on windows machines. libcurl itself has no "global" scope. + + All printf()-style functions use the supplied clones in lib/mprintf.c. This + makes sure we stay absolutely platform independent. + + curl_easy_init() allocates an internal struct and makes some initializations. + The returned handle does not reveal internals. This is the 'SessionHandle' + struct which works as an "anchor" struct for all curl_easy functions. All + connections performed will get connect-specific data allocated that should be + used for things related to particular connections/requests. + + curl_easy_setopt() takes three arguments, where the option stuff must be + passed in pairs: the parameter-ID and the parameter-value. The list of + options is documented in the man page. This function mainly sets things in + the 'SessionHandle' struct. + + curl_easy_perform() does a whole lot of things: + + It starts off in the lib/easy.c file by calling Curl_perform() and the main + work then continues in lib/url.c. The flow continues with a call to + Curl_connect() to connect to the remote site. + + o Curl_connect() + + ... analyzes the URL, it separates the different components and connects to + the remote host. This may involve using a proxy and/or using SSL. The + Curl_gethost() function in lib/hostip.c is used for looking up host names. + + When Curl_connect is done, we are connected to the remote site. Then it is + time to tell the server to get a document/file. Curl_do() arranges this. + + This function makes sure there's an allocated and initiated 'connectdata' + struct that is used for this particular connection only (although there may + be several requests performed on the same connect). A bunch of things are + inited/inherited from the SessionHandle struct. + + o Curl_do() + + Curl_do() makes sure the proper protocol-specific function is called. The + functions are named after the protocols they handle. Curl_ftp(), + Curl_http(), Curl_dict(), etc. They all reside in their respective files + (ftp.c, http.c and dict.c). HTTPS is handled by Curl_http() and FTPS by + Curl_ftp(). + + The protocol-specific functions of course deal with protocol-specific + negotiations and setup. They have access to the Curl_sendf() (from + lib/sendf.c) function to send printf-style formatted data to the remote + host and when they're ready to make the actual file transfer they call the + Curl_Transfer() function (in lib/transfer.c) to setup the transfer and + returns. + + Starting in 7.9.1, if this DO function fails and the connection is being + re-used, libcurl will then close this connection, setup a new connection + and re-issue the DO request on that. This is because there is no way to be + perfectly sure that we have discovered a dead connection before the DO + function and thus we might wrongly be re-using a connection that was closed + by the remote peer. + + o Transfer() + + Curl_perform() then calls Transfer() in lib/transfer.c that performs + the entire file transfer. + + During transfer, the progress functions in lib/progress.c are called at a + frequent interval (or at the user's choice, a specified callback might get + called). The speedcheck functions in lib/speedcheck.c are also used to + verify that the transfer is as fast as required. + + o Curl_done() + + Called after a transfer is done. This function takes care of everything + that has to be done after a transfer. This function attempts to leave + matters in a state so that Curl_do() should be possible to call again on + the same connection (in a persistent connection case). It might also soon + be closed with Curl_disconnect(). + + o Curl_disconnect() + + When doing normal connections and transfers, no one ever tries to close any + connections so this is not normally called when curl_easy_perform() is + used. This function is only used when we are certain that no more transfers + is going to be made on the connection. It can be also closed by force, or + it can be called to make sure that libcurl doesn't keep too many + connections alive at the same time (there's a default amount of 5 but that + can be changed with the CURLOPT_MAXCONNECTS option). + + This function cleans up all resources that are associated with a single + connection. + + Curl_perform() is the function that does the main "connect - do - transfer - + done" loop. It loops if there's a Location: to follow. + + When completed, the curl_easy_cleanup() should be called to free up used + resources. It runs Curl_disconnect() on all open connectons. + + A quick roundup on internal function sequences (many of these call + protocol-specific function-pointers): + + curl_connect - connects to a remote site and does initial connect fluff + This also checks for an existing connection to the requested site and uses + that one if it is possible. + + curl_do - starts a transfer + curl_transfer() - transfers data + curl_done - ends a transfer + + curl_disconnect - disconnects from a remote site. This is called when the + disconnect is really requested, which doesn't necessarily have to be + exactly after curl_done in case we want to keep the connection open for + a while. + + HTTP(S) + + HTTP offers a lot and is the protocol in curl that uses the most lines of + code. There is a special file (lib/formdata.c) that offers all the multipart + post functions. + + base64-functions for user+password stuff (and more) is in (lib/base64.c) and + all functions for parsing and sending cookies are found in (lib/cookie.c). + + HTTPS uses in almost every means the same procedure as HTTP, with only two + exceptions: the connect procedure is different and the function used to read + or write from the socket is different, although the latter fact is hidden in + the source by the use of curl_read() for reading and curl_write() for writing + data to the remote server. + + http_chunks.c contains functions that understands HTTP 1.1 chunked transfer + encoding. + + An interesting detail with the HTTP(S) request, is the add_buffer() series of + functions we use. They append data to one single buffer, and when the + building is done the entire request is sent off in one single write. This is + done this way to overcome problems with flawed firewalls and lame servers. + + FTP + + The Curl_if2ip() function can be used for getting the IP number of a + specified network interface, and it resides in lib/if2ip.c. + + Curl_ftpsendf() is used for sending FTP commands to the remote server. It was + made a separate function to prevent us programmers from forgetting that they + must be CRLF terminated. They must also be sent in one single write() to make + firewalls and similar happy. + + Kerberos + + The kerberos support is mainly in lib/krb4.c and lib/security.c. + + TELNET + + Telnet is implemented in lib/telnet.c. + + FILE + + The file:// protocol is dealt with in lib/file.c. + + LDAP + + Everything LDAP is in lib/ldap.c. + + GENERAL + + URL encoding and decoding, called escaping and unescaping in the source code, + is found in lib/escape.c. + + While transfering data in Transfer() a few functions might get + used. curl_getdate() in lib/getdate.c is for HTTP date comparisons (and + more). + + lib/getenv.c offers curl_getenv() which is for reading environment variables + in a neat platform independent way. That's used in the client, but also in + lib/url.c when checking the proxy environment variables. Note that contrary + to the normal unix getenv(), this returns an allocated buffer that must be + free()ed after use. + + lib/netrc.c holds the .netrc parser + + lib/timeval.c features replacement functions for systems that don't have + gettimeofday() and a few support functions for timeval convertions. + + A function named curl_version() that returns the full curl version string is + found in lib/version.c. + + If authentication is requested but no password is given, a getpass_r() clone + exists in lib/getpass.c. libcurl offers a custom callback that can be used + instead of this, but it doesn't change much to us. + +Persistent Connections +====================== + + The persistent connection support in libcurl requires some considerations on + how to do things inside of the library. + + o The 'SessionHandle' struct returned in the curl_easy_init() call must never + hold connection-oriented data. It is meant to hold the root data as well as + all the options etc that the library-user may choose. + o The 'SessionHandle' struct holds the "connection cache" (an array of + pointers to 'connectdata' structs). There's one connectdata struct + allocated for each connection that libcurl knows about. + o This also enables the 'curl handle' to be reused on subsequent transfers, + something that was illegal before libcurl 7.7. + o When we are about to perform a transfer with curl_easy_perform(), we first + check for an already existing connection in the cache that we can use, + otherwise we create a new one and add to the cache. If the cache is full + already when we add a new connection, we close one of the present ones. We + select which one to close dependent on the close policy that may have been + previously set. + o When the transfer operation is complete, we try to leave the connection + open. Particular options may tell us not to, and protocols may signal + closure on connections and then we don't keep it open of course. + o When curl_easy_cleanup() is called, we close all still opened connections. + + You do realize that the curl handle must be re-used in order for the + persistent connections to work. + +Library Symbols +=============== + + All symbols used internally in libcurl must use a 'Curl_' prefix if they're + used in more than a single file. Single-file symbols must be made static. + Public ("exported") symbols must use a 'curl_' prefix. (There are exceptions, + but they are to be changed to follow this pattern in future versions.) + +Return Codes and Informationals +=============================== + + I've made things simple. Almost every function in libcurl returns a CURLcode, + that must be CURLE_OK if everything is OK or otherwise a suitable error code + as the curl/curl.h include file defines. The very spot that detects an error + must use the Curl_failf() function to set the human-readable error + description. + + In aiding the user to understand what's happening and to debug curl usage, we + must supply a fair amount of informational messages by using the Curl_infof() + function. Those messages are only displayed when the user explicitly asks for + them. They are best used when revealing information that isn't otherwise + obvious. + +Client +====== + + main() resides in src/main.c together with most of the client code. + + src/hugehelp.c is automatically generated by the mkhelp.pl perl script to + display the complete "manual" and the src/urlglob.c file holds the functions + used for the URL-"globbing" support. Globbing in the sense that the {} and [] + expansion stuff is there. + + The client mostly messes around to setup its 'config' struct properly, then + it calls the curl_easy_*() functions of the library and when it gets back + control after the curl_easy_perform() it cleans up the library, checks status + and exits. + + When the operation is done, the ourWriteOut() function in src/writeout.c may + be called to report about the operation. That function is using the + curl_easy_getinfo() function to extract useful information from the curl + session. + + Recent versions may loop and do all this several times if many URLs were + specified on the command line or config file. + +Memory Debugging +================ + + The file lib/memdebug.c contains debug-versions of a few functions. Functions + such as malloc, free, fopen, fclose, etc that somehow deal with resources + that might give us problems if we "leak" them. The functions in the memdebug + system do nothing fancy, they do their normal function and then log + information about what they just did. The logged data can then be analyzed + after a complete session, + + memanalyze.pl is the perl script present only present in CVS (not part of the + release archives) that analyzes a log file generated by the memdebug + system. It detects if resources are allocated but never freed and other kinds + of errors related to resource management. + + Use -DMALLOCDEBUG when compiling to enable memory debugging, this is also + switched on by running configure with --enable-debug. + +Test Suite +========== + + Since November 2000, a test suite has evolved. It is placed in its own + subdirectory directly off the root in the curl archive tree, and it contains + a bunch of scripts and a lot of test case data. + + The main test script is runtests.pl that will invoke the two servers + httpserver.pl and ftpserver.pl before all the test cases are performed. The + test suite currently only runs on unix-like platforms. + + You'll find a complete description of the test case data files in the + tests/README file. + + The test suite automatically detects if curl was built with the memory + debugging enabled, and if it was it will detect memory leaks too. + +Building Releases +================= + + There's no magic to this. When you consider everything stable enough to be + released, run the 'maketgz' script (using 'make distcheck' will give you a + pretty good view on the status of the current sources). maketgz prompts for + version number of the client and the library before it creates a release + archive. maketgz uses 'make dist' for the actual archive building, why you + need to fill in the Makefile.am files properly for which files that should + be included in the release archives. + diff --git a/Build/source/libs/curl/docs/KNOWN_BUGS b/Build/source/libs/curl/docs/KNOWN_BUGS new file mode 100644 index 00000000000..ed389b590e7 --- /dev/null +++ b/Build/source/libs/curl/docs/KNOWN_BUGS @@ -0,0 +1,14 @@ +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! + +* curl_formadd() fails on OSF1. Why? Fix! Need help from OSF1 dudes. + https://sourceforge.net/tracker/index.php?func=detail&aid=524433&group_id=976&atid=100976 + +* 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
\ No newline at end of file diff --git a/Build/source/libs/curl/docs/MANUAL b/Build/source/libs/curl/docs/MANUAL new file mode 100644 index 00000000000..8a66d134207 --- /dev/null +++ b/Build/source/libs/curl/docs/MANUAL @@ -0,0 +1,818 @@ +LATEST VERSION + + You always find news about what's going on as well as the latest versions + from the curl web pages, located at: + + http://curl.haxx.se + +SIMPLE USAGE + + Get the main page from netscape's web-server: + + curl http://www.netscape.com/ + + Get the root README file from funet's ftp-server: + + curl ftp://ftp.funet.fi/README + + Get a web page from a server using port 8000: + + curl http://www.weirdserver.com:8000/ + + Get a list of the root directory of an FTP site: + + curl ftp://cool.haxx.se/ + + Get a gopher document from funet's gopher server: + + curl gopher://gopher.funet.fi + + Get the definition of curl from a dictionary: + + curl dict://dict.org/m:curl + + Fetch two documents at once: + + curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/ + +DOWNLOAD TO A FILE + + Get a web page and store in a local file: + + curl -o thatpage.html http://www.netscape.com/ + + Get a web page and store in a local file, make the local file get the name + of the remote document (if no file name part is specified in the URL, this + will fail): + + curl -O http://www.netscape.com/index.html + + Fetch two files and store them with their remote names: + + curl -O www.haxx.se/index.html -O curl.haxx.se/download.html + +USING PASSWORDS + + FTP + + To ftp files using name+passwd, include them in the URL like: + + curl ftp://name:passwd@machine.domain:port/full/path/to/file + + or specify them with the -u flag like + + curl -u name:passwd ftp://machine.domain:port/full/path/to/file + + HTTP + + The HTTP URL doesn't support user and password in the URL string. Curl + does support that anyway to provide a ftp-style interface and thus you can + pick a file like: + + curl http://name:passwd@machine.domain/full/path/to/file + + or specify user and password separately like in + + curl -u name:passwd http://machine.domain/full/path/to/file + + NOTE! Since HTTP URLs don't support user and password, you can't use that + style when using Curl via a proxy. You _must_ use the -u style fetch + during such circumstances. + + HTTPS + + Probably most commonly used with private certificates, as explained below. + + GOPHER + + Curl features no password support for gopher. + +PROXY + + Get an ftp file using a proxy named my-proxy that uses port 888: + + curl -x my-proxy:888 ftp://ftp.leachsite.com/README + + Get a file from a HTTP server that requires user and password, using the + same proxy as above: + + curl -u user:passwd -x my-proxy:888 http://www.get.this/ + + Some proxies require special authentication. Specify by using -U as above: + + curl -U user:passwd -x my-proxy:888 http://www.get.this/ + + See also the environment variables Curl support that offer further proxy + control. + +RANGES + + With HTTP 1.1 byte-ranges were introduced. Using this, a client can request + to get only one or more subparts of a specified document. Curl supports + this with the -r flag. + + Get the first 100 bytes of a document: + + curl -r 0-99 http://www.get.this/ + + Get the last 500 bytes of a document: + + curl -r -500 http://www.get.this/ + + Curl also supports simple ranges for FTP files as well. Then you can only + specify start and stop position. + + Get the first 100 bytes of a document using FTP: + + curl -r 0-99 ftp://www.get.this/README + +UPLOADING + + FTP + + Upload all data on stdin to a specified ftp site: + + curl -T - ftp://ftp.upload.com/myfile + + Upload data from a specified file, login with user and password: + + curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile + + Upload a local file to the remote site, and use the local file name remote + too: + + curl -T uploadfile -u user:passwd ftp://ftp.upload.com/ + + Upload a local file to get appended to the remote file using ftp: + + curl -T localfile -a ftp://ftp.upload.com/remotefile + + Curl also supports ftp upload through a proxy, but only if the proxy is + configured to allow that kind of tunneling. If it does, you can run curl in + a fashion similar to: + + curl --proxytunnel -x proxy:port -T localfile ftp.upload.com + + HTTP + + Upload all data on stdin to a specified http site: + + curl -T - http://www.upload.com/myfile + + Note that the http server must've been configured to accept PUT before this + can be done successfully. + + For other ways to do http data upload, see the POST section below. + +VERBOSE / DEBUG + + If curl fails where it isn't supposed to, if the servers don't let you + in, if you can't understand the responses: use the -v flag to get VERBOSE + fetching. Curl will output lots of info and all data it sends and + receives in order to let the user see all client-server interaction. + + curl -v ftp://ftp.upload.com/ + +DETAILED INFORMATION + + Different protocols provide different ways of getting detailed information + about specific files/documents. To get curl to show detailed information + about a single file, you should use -I/--head option. It displays all + available info on a single file for HTTP and FTP. The HTTP information is a + lot more extensive. + + For HTTP, you can get the header information (the same as -I would show) + shown before the data by using -i/--include. Curl understands the + -D/--dump-header option when getting files from both FTP and HTTP, and it + will then store the headers in the specified file. + + Store the HTTP headers in a separate file (headers.txt in the example): + + curl --dump-header headers.txt curl.haxx.se + + Note that headers stored in a separate file can be very useful at a later + time if you want curl to use cookies sent by the server. More about that in + the cookies section. + +POST (HTTP) + + It's easy to post data using curl. This is done using the -d <data> + option. The post data must be urlencoded. + + Post a simple "name" and "phone" guestbook. + + curl -d "name=Rafael%20Sagula&phone=3320780" \ + http://www.where.com/guest.cgi + + How to post a form with curl, lesson #1: + + Dig out all the <input> tags in the form that you want to fill in. (There's + a perl program called formfind.pl on the curl site that helps with this). + + If there's a "normal" post, you use -d to post. -d takes a full "post + string", which is in the format + + <variable1>=<data1>&<variable2>=<data2>&... + + The 'variable' names are the names set with "name=" in the <input> tags, and + the data is the contents you want to fill in for the inputs. The data *must* + be properly URL encoded. That means you replace space with + and that you + write weird letters with %XX where XX is the hexadecimal representation of + the letter's ASCII code. + + Example: + + (page located at http://www.formpost.com/getthis/ + + <form action="post.cgi" method="post"> + <input name=user size=10> + <input name=pass type=password size=10> + <input name=id type=hidden value="blablabla"> + <input name=ding value="submit"> + </form> + + We want to enter user 'foobar' with password '12345'. + + To post to this, you enter a curl command line like: + + curl -d "user=foobar&pass=12345&id=blablabla&dig=submit" (continues) + http://www.formpost.com/getthis/post.cgi + + + While -d uses the application/x-www-form-urlencoded mime-type, generally + understood by CGI's and similar, curl also supports the more capable + multipart/form-data type. This latter type supports things like file upload. + + -F accepts parameters like -F "name=contents". If you want the contents to + be read from a file, use <@filename> as contents. When specifying a file, + you can also specify the file content type by appending ';type=<mime type>' + to the file name. You can also post the contents of several files in one + field. For example, the field name 'coolfiles' is used to send three files, + with different content types using the following syntax: + + curl -F "coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html" \ + http://www.post.com/postit.cgi + + If the content-type is not specified, curl will try to guess from the file + extension (it only knows a few), or use the previously specified type (from + an earlier file if several files are specified in a list) or else it will + using the default type 'text/plain'. + + Emulate a fill-in form with -F. Let's say you fill in three fields in a + form. One field is a file name which to post, one field is your name and one + field is a file description. We want to post the file we have written named + "cooltext.txt". To let curl do the posting of this data instead of your + favourite browser, you have to read the HTML source of the form page and + find the names of the input fields. In our example, the input field names + are 'file', 'yourname' and 'filedescription'. + + curl -F "file=@cooltext.txt" -F "yourname=Daniel" \ + -F "filedescription=Cool text file with cool text inside" \ + http://www.post.com/postit.cgi + + To send two files in one post you can do it in two ways: + + 1. Send multiple files in a single "field" with a single field name: + + curl -F "pictures=@dog.gif,cat.gif" + + 2. Send two fields with two field names: + + curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif" + +REFERRER + + A HTTP request has the option to include information about which address + that referred to actual page. Curl allows you to specify the + referrer to be used on the command line. It is especially useful to + fool or trick stupid servers or CGI scripts that rely on that information + being available or contain certain data. + + curl -e www.coolsite.com http://www.showme.com/ + + NOTE: The referer field is defined in the HTTP spec to be a full URL. + +USER AGENT + + A HTTP request has the option to include information about the browser + that generated the request. Curl allows it to be specified on the command + line. It is especially useful to fool or trick stupid servers or CGI + scripts that only accept certain browsers. + + Example: + + curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/ + + Other common strings: + 'Mozilla/3.0 (Win95; I)' Netscape Version 3 for Windows 95 + 'Mozilla/3.04 (Win95; U)' Netscape Version 3 for Windows 95 + 'Mozilla/2.02 (OS/2; U)' Netscape Version 2 for OS/2 + 'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)' NS for AIX + 'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)' NS for Linux + + Note that Internet Explorer tries hard to be compatible in every way: + 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)' MSIE for W95 + + Mozilla is not the only possible User-Agent name: + 'Konqueror/1.0' KDE File Manager desktop client + 'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser + +COOKIES + + Cookies are generally used by web servers to keep state information at the + client's side. The server sets cookies by sending a response line in the + headers that looks like 'Set-Cookie: <data>' where the data part then + typically contains a set of NAME=VALUE pairs (separated by semicolons ';' + like "NAME1=VALUE1; NAME2=VALUE2;"). The server can also specify for what + path the "cookie" should be used for (by specifying "path=value"), when the + cookie should expire ("expire=DATE"), for what domain to use it + ("domain=NAME") and if it should be used on secure connections only + ("secure"). + + If you've received a page from a server that contains a header like: + Set-Cookie: sessionid=boo123; path="/foo"; + + it means the server wants that first pair passed on when we get anything in + a path beginning with "/foo". + + Example, get a page that wants my name passed in a cookie: + + curl -b "name=Daniel" www.sillypage.com + + Curl also has the ability to use previously received cookies in following + sessions. If you get cookies from a server and store them in a file in a + manner similar to: + + curl --dump-header headers www.example.com + + ... you can then in a second connect to that (or another) site, use the + cookies from the 'headers' file like: + + curl -b headers www.example.com + + Note that by specifying -b you enable the "cookie awareness" and with -L + you can make curl follow a location: (which often is used in combination + with cookies). So that if a site sends cookies and a location, you can + use a non-existing file to trigger the cookie awareness like: + + curl -L -b empty.txt www.example.com + + The file to read cookies from must be formatted using plain HTTP headers OR + as netscape's cookie file. Curl will determine what kind it is based on the + file contents. In the above command, curl will parse the header and store + the cookies received from www.example.com. curl will send to the server the + stored cookies which match the request as it follows the location. The + file "empty.txt" may be a non-existant file. + + +PROGRESS METER + + The progress meter exists to show a user that something actually is + happening. The different fields in the output have the following meaning: + + % Total % Received % Xferd Average Speed Time Curr. + Dload Upload Total Current Left Speed + 0 151M 0 38608 0 0 9406 0 4:41:43 0:00:04 4:41:39 9287 + + From left-to-right: + % - percentage completed of the whole transfer + Total - total size of the whole expected transfer + % - percentage completed of the download + Received - currently downloaded amount of bytes + % - percentage completed of the upload + Xferd - currently uploaded amount of bytes + Average Speed + Dload - the average transfer speed of the download + Average Speed + Upload - the average transfer speed of the upload + Time Total - expected time to complete the operation + Time Current - time passed since the invoke + Time Left - expected time left to completetion + Curr.Speed - the average transfer speed the last 5 seconds (the first + 5 seconds of a transfer is based on less time of course.) + + The -# option will display a totally different progress bar that doesn't + need much explanation! + +SPEED LIMIT + + Curl allows the user to set the transfer speed conditions that must be met + to let the transfer keep going. By using the switch -y and -Y you + can make curl abort transfers if the transfer speed is below the specified + lowest limit for a specified time. + + To 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 + + 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 + +CONFIG FILE + + Curl automatically tries to read the .curlrc file (or _curlrc file on win32 + systems) from the user's home dir on startup. + + The config file could be made up with normal command line switches, but you + can also specify the long options without the dashes to make it more + readable. You can separate the options and the parameter with spaces, or + with = or :. Comments can be used within the file. If the first letter on a + line is a '#'-letter the rest of the line is treated as a comment. + + If you want the parameter to contain spaces, you must inclose the entire + parameter within double quotes ("). Within those quotes, you specify a + quote as \". + + NOTE: You must specify options and their arguments on the same line. + + Example, set default time out and proxy in a config file: + + # We want a 30 minute timeout: + -m 1800 + # ... and we use a proxy for all accesses: + proxy = proxy.our.domain.com:8080 + + White spaces ARE significant at the end of lines, but all white spaces + leading up to the first characters of each line are ignored. + + Prevent curl from reading the default file by using -q as the first command + line parameter, like: + + curl -q www.thatsite.com + + Force curl to get and display a local help page in case it is invoked + without URL by making a config file similar to: + + # default url to get + url = "http://help.with.curl.com/curlhelp.html" + + You can specify another config file to be read by using the -K/--config + flag. If you set config file name to "-" it'll read the config from stdin, + which can be handy if you want to hide options from being visible in process + tables etc: + + echo "user = user:passwd" | curl -K - http://that.secret.site.com + +EXTRA HEADERS + + When using curl in your own very special programs, you may end up needing + to pass on your own custom headers when getting a web page. You can do + this by using the -H flag. + + Example, send the header "X-you-and-me: yes" to the server when getting a + page: + + curl -H "X-you-and-me: yes" www.love.com + + This can also be useful in case you want curl to send a different text in a + header than it normally does. The -H header you specify then replaces the + header curl would normally send. If you replace an internal header with an + empty one, you prevent that header from being sent. To prevent the Host: + header from being used: + + curl -H "Host:" www.server.com + +FTP and PATH NAMES + + Do note that when getting files with the ftp:// URL, the given path is + relative the directory you enter. To get the file 'README' from your home + directory at your ftp site, do: + + curl ftp://user:passwd@my.site.com/README + + But if you want the README file from the root directory of that very same + site, you need to specify the absolute file name: + + curl ftp://user:passwd@my.site.com//README + + (I.e with an extra slash in front of the file name.) + +FTP and firewalls + + The FTP protocol requires one of the involved parties to open a second + connction as soon as data is about to get transfered. There are two ways to + do this. + + The default way for curl is to issue the PASV command which causes the + server to open another port and await another connection performed by the + client. This is good if the client is behind a firewall that don't allow + incoming connections. + + curl ftp.download.com + + If the server for example, is behind a firewall that don't allow connections + on other ports than 21 (or if it just doesn't support the PASV command), the + other way to do it is to use the PORT command and instruct the server to + connect to the client on the given (as parameters to the PORT command) IP + number and port. + + The -P flag to curl supports a few different options. Your machine may have + several IP-addresses and/or network interfaces and curl allows you to select + which of them to use. Default address can also be used: + + curl -P - ftp.download.com + + Download with PORT but use the IP address of our 'le0' interface (this does + not work on windows): + + curl -P le0 ftp.download.com + + Download with PORT but use 192.168.0.10 as our IP address to use: + + curl -P 192.168.0.10 ftp.download.com + +NETWORK INTERFACE + + Get a web page from a server using a specified port for the interface: + + curl --interface eth0:1 http://www.netscape.com/ + + or + + curl --interface 192.168.1.10 http://www.netscape.com/ + +HTTPS + + Secure HTTP requires SSL libraries to be installed and used when curl is + built. If that is done, curl is capable of retrieving and posting documents + using the HTTPS procotol. + + Example: + + curl https://www.secure-site.com + + Curl is also capable of using your personal certificates to get/post files + 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 + 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 + included in recent versions of OpenSSL, and for older versions Dr Stephen + N. Henson has written a patch for SSLeay that adds this functionality. You + can get his patch (that requires an SSLeay installation) from his site at: + http://www.drh-consultancy.demon.co.uk/ + + Example on how to automatically retrieve a document using a certificate with + a personal password: + + curl -E /path/to/cert.pem:password https://secure.site.com/ + + If you neglect to specify the password on the command line, you will be + prompted for the correct password before any data can be received. + + 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: + + curl -2 https://secure.site.com/ + + Otherwise, curl will first attempt to use v3 and then v2. + + To use OpenSSL to convert your favourite browser's certificate into a PEM + formatted one that curl can use, do something like this (assuming netscape, + but IE is likely to work similarly): + + You start with hitting the 'security' menu button in netscape. + + Select 'certificates->yours' and then pick a certificate in the list + + Press the 'export' button + + enter your PIN code for the certs + + select a proper place to save it + + Run the 'openssl' application to convert the certificate. If you cd to the + openssl installation, you can do it like: + + # ./apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile] + + +RESUMING FILE TRANSFERS + + To continue a file transfer where it was previously aborted, curl supports + resume on http(s) downloads as well as ftp uploads and downloads. + + Continue downloading a document: + + curl -C - -o file ftp://ftp.server.com/path/file + + Continue uploading a document(*1): + + curl -C - -T file ftp://ftp.server.com/path/file + + Continue downloading a document from a web server(*2): + + curl -C - -o file http://www.server.com/ + + (*1) = This requires that the ftp server supports the non-standard command + SIZE. If it doesn't, curl will say so. + + (*2) = This requires that the web server supports at least HTTP/1.1. If it + doesn't, curl will say so. + +TIME CONDITIONS + + HTTP allows a client to specify a time condition for the document it + requests. It is If-Modified-Since or If-Unmodified-Since. Curl allow you to + specify them with the -z/--time-cond flag. + + For example, you can easily make a download that only gets performed if the + remote file is newer than a local copy. It would be made like: + + curl -z local.html http://remote.server.com/remote.html + + Or you can download a file only if the local file is newer than the remote + one. Do this by prepending the date string with a '-', as in: + + curl -z -local.html http://remote.server.com/remote.html + + You can specify a "free text" date as condition. Tell curl to only download + the file if it was updated since yesterday: + + curl -z yesterday http://remote.server.com/remote.html + + Curl will then accept a wide range of date formats. You always make the date + check the other way around by prepending it with a dash '-'. + +DICT + + For fun try + + curl dict://dict.org/m:curl + curl dict://dict.org/d:heisenbug:jargon + curl dict://dict.org/d:daniel:web1913 + + Aliases for 'm' are 'match' and 'find', and aliases for 'd' are 'define' + and 'lookup'. For example, + + curl dict://dict.org/find:curl + + Commands that break the URL description of the RFC (but not the DICT + protocol) are + + curl dict://dict.org/show:db + curl dict://dict.org/show:strat + + Authentication is still missing (but this is not required by the RFC) + +LDAP + + If you have installed the OpenLDAP library, curl can take advantage of it + 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. 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: + + curl -B "ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se" + + If I want the same info in HTML format, I can get it by not using the -B + (enforce ASCII) flag. + +ENVIRONMENT VARIABLES + + Curl reads and understands the following environment variables: + + HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY + + They should be set for protocol-specific proxies. General proxy should be + set with + + ALL_PROXY + + A comma-separated list of host names that shouldn't go through any proxy is + set in (only an asterisk, '*' matches all hosts) + + NO_PROXY + + If a tail substring of the domain-path for a host matches one of these + strings, transactions with that node will not be proxied. + + + The usage of the -x/--proxy flag overrides the environment variables. + +NETRC + + Unix introduced the .netrc concept a long time ago. It is a way for a user + to specify name and password for commonly visited ftp sites in a file so + that you don't have to type them in each time you visit those sites. You + realize this is a big security risk if someone else gets hold of your + 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. + + A very simple .netrc file could look something like: + + machine curl.haxx.se login iamdaniel password mysecret + +CUSTOM OUTPUT + + To better allow script programmers to get to know about the progress of + curl, the -w/--write-out option was introduced. Using this, you can specify + what information from the previous transfer you want to extract. + + To display the amount of bytes downloaded together with some text and an + ending newline: + + curl -w 'We downloaded %{size_download} bytes\n' www.download.com + +KERBEROS4 FTP TRANSFER + + Curl supports kerberos4 for FTP transfers. You need the kerberos package + installed and used at curl build time for it to be used. + + First, get the krb-ticket the normal way, like with the kauth tool. Then use + curl in way similar to: + + curl --krb4 private ftp://krb4site.com -u username:fakepwd + + There's no use for a password on the -u switch, but a blank one will make + curl ask for one and you already entered the real password to kauth. + +TELNET + + The curl telnet support is basic and very easy to use. Curl passes all data + passed to it on stdin to the remote server. Connect to a remote telnet + server using a command line similar to: + + curl telnet://remote.server.com + + And enter the data to pass to the server on stdin. The result will be sent + to stdout or to the file you specify with -o. + + You might want the -N/--no-buffer option to switch off the buffered output + for slow connections or similar. + + Pass options to the telnet protocol negotiation, by using the -t option. To + tell the server we use a vt100 terminal, try something like: + + curl -tTTYPE=vt100 telnet://remote.server.com + + Other interesting options for it -t include: + + - XDISPLOC=<X display> Sets the X display location. + + - NEW_ENV=<var,val> Sets an environment variable. + + NOTE: the telnet protocol does not specify any way to login with a specified + user and password so curl can't do that automatically. To do that, you need + to track when the login prompt is received and send the username and + password accordingly. + +PERSISTANT CONNECTIONS + + Specifying multiple files on a single command line will make curl transfer + all of them, one after the other in the specified order. + + libcurl will attempt to use persistant connections for the transfers so that + the second transfer to the same host can use the same connection that was + already initiated and was left open in the previous transfer. This greatly + decreases connection time for all but the first transfer and it makes a far + better use of the network. + + Note that curl cannot use persistant connections for transfers that are used + in subsequence curl invokes. Try to stuff as many URLs as possible on the + same command line if they are using the same host, as that'll make the + transfers faster. If you use a http proxy for file transfers, practicly + all transfers will be persistant. + + Persistant connections were introduced in curl 7.7. + +MAILING LISTS + + For your convenience, we have several open mailing lists to discuss curl, + its development and things relevant to this. + + To subscribe to the main curl list, mail curl-request@contactor.se with + "subscribe <fill in your email address>" in the body. + + To subscribe to the curl-library users/deverlopers list, follow the + instructions at http://curl.haxx.se/mail/ + + To subscribe to the curl-announce list, to only get information about new + releases, follow the instructions at http://curl.haxx.se/mail/ + + 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/ + + Please direct curl questions, feature requests and trouble reports to one of + these mailing lists instead of mailing any individual. diff --git a/Build/source/libs/curl/docs/Makefile.am b/Build/source/libs/curl/docs/Makefile.am new file mode 100644 index 00000000000..fd477dabb80 --- /dev/null +++ b/Build/source/libs/curl/docs/Makefile.am @@ -0,0 +1,32 @@ +# +# $Id: Makefile.am,v 1.19 2002/03/07 08:29:24 bagder Exp $ +# + +AUTOMAKE_OPTIONS = foreign no-dependencies + +man_MANS = \ + curl.1 \ + curl-config.1 + +HTMLPAGES = \ + curl.html \ + curl-config.html + +SUBDIRS = examples libcurl + +EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS \ + README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS \ + VERSIONS KNOWN_BUGS $(man_MANS) $(HTMLPAGES) + +MAN2HTML= gnroff -man $< | man2html >$@ + +SUFFIXES = .1 .3 .html + +html: $(HTMLPAGES) + cd libcurl; make html + +.3.html: + $(MAN2HTML) + +.1.html: + $(MAN2HTML) diff --git a/Build/source/libs/curl/docs/Makefile.in b/Build/source/libs/curl/docs/Makefile.in new file mode 100644 index 00000000000..0616c5b883e --- /dev/null +++ b/Build/source/libs/curl/docs/Makefile.in @@ -0,0 +1,430 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# $Id: Makefile.am,v 1.19 2002/03/07 08:29:24 bagder Exp $ +# + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IPV6_ENABLED = @IPV6_ENABLED@ +KRB4_ENABLED = @KRB4_ENABLED@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +NROFF = @NROFF@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENSSL_ENABLED = @OPENSSL_ENABLED@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKGADD_NAME = @PKGADD_NAME@ +PKGADD_PKG = @PKGADD_PKG@ +PKGADD_VENDOR = @PKGADD_VENDOR@ +RANDOM_FILE = @RANDOM_FILE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VERSIONNUM = @VERSIONNUM@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +AUTOMAKE_OPTIONS = foreign no-dependencies + +man_MANS = \ + curl.1 \ + curl-config.1 + + +HTMLPAGES = \ + curl.html \ + curl-config.html + + +SUBDIRS = examples libcurl + +EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS \ + README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS \ + VERSIONS KNOWN_BUGS $(man_MANS) $(HTMLPAGES) + + +MAN2HTML = gnroff -man $< | man2html >$@ + +SUFFIXES = .1 .3 .html +subdir = docs +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/lib/config.h \ + $(top_builddir)/src/config.h \ + $(top_builddir)/tests/server/config.h +CONFIG_CLEAN_FILES = +depcomp = +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = + +NROFF = nroff +MANS = $(man_MANS) + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = INSTALL Makefile.am Makefile.in THANKS TODO +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .1 .3 .html + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign docs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(MANS) +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-recursive + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-info: uninstall-info-recursive + +uninstall-man: uninstall-man1 + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive distclean \ + distclean-generic distclean-libtool distclean-recursive \ + distclean-tags distdir dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-man1 \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-man uninstall-man1 \ + uninstall-recursive + + +html: $(HTMLPAGES) + cd libcurl; make html + +.3.html: + $(MAN2HTML) + +.1.html: + $(MAN2HTML) +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Build/source/libs/curl/docs/README.win32 b/Build/source/libs/curl/docs/README.win32 new file mode 100644 index 00000000000..5b6db308775 --- /dev/null +++ b/Build/source/libs/curl/docs/README.win32 @@ -0,0 +1,22 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +README.win32 + + Read the README file first. + + Curl has been compiled, built and run on all sorts of Windows and win32 + systems. While not being the main develop target, a fair share of curl users + are win32-based. + + The unix-style man pages are tricky to read on windows, so therefore are all + those pages also converted to HTML and those are also included in the + release archives. + + The main curl.1 man page is also "built-in" in the command line tool. Use a + command line similar to this in order to extract a separate text file: + + curl -M >manual.txt diff --git a/Build/source/libs/curl/docs/RESOURCES b/Build/source/libs/curl/docs/RESOURCES new file mode 100644 index 00000000000..05cef4228d2 --- /dev/null +++ b/Build/source/libs/curl/docs/RESOURCES @@ -0,0 +1,125 @@ + _ _ ____ _ + Project ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + + +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. + +Standards +--------- + + RFC 959 - Defines how FTP works + + RFC 1635 - How to Use Anonymous FTP + + RFC 1738 - Uniform Resource Locators + + RFC 1777 - defines the LDAP protocol + + RFC 1808 - Relative Uniform Resource Locators + + RFC 1867 - Form-based File Upload in HTML + + RFC 1950 - ZLIB Compressed Data Format Specification + + RFC 1951 - DEFLATE Compressed Data Format Specification + + RFC 1952 - gzip compression format + + RFC 1959 - LDAP URL syntax + + RFC 2045-2049 - Everything you need to know about MIME! (needed for form + based upload) + + RFC 2068 - HTTP 1.1 (obsoleted by RFC 2616) + + RFC 2109 - HTTP State Management Mechanism (cookie stuff) + - Also, read Netscape's specification at + http://curl.haxx.se/rfc/cookie_spec.html + + RFC 2183 - The Content-Disposition Header Field + + RFC 2229 - A Dictionary Server Protocol + + RFC 2255 - Newer LDAP URL syntax document. + + RFC 2231 - MIME Parameter Value and Encoded Word Extensions: + Character Sets, Languages, and Continuations + + RFC 2388 - "Returning Values from Forms: multipart/form-data" + Use this as an addition to the RFC1867 + + RFC 2396 - "Uniform Resource Identifiers: Generic Syntax and Semantics" This + one obsoletes RFC 1738, but since RFC 1738 is often mentioned + I've left it in this list. + + RFC 2428 - FTP Extensions for IPv6 and NATs + + RFC 2577 - FTP Security Considerations + + RFC 2616 - HTTP 1.1, the latest + + RFC 2617 - HTTP Authentication + + RFC 2718 - Guidelines for new URL Schemes + + RFC 2732 - Format for Literal IPv6 Addresses in URL's + + RFC 2818 - HTTP Over TLS (TLS is the successor to SSL) + + RFC 2964 - Use of HTTP State Management + + RFC 2965 - HTTP State Management Mechanism. Cookies. Obsoletes RFC2109 + +Compilers +--------- + MingW32 - http://www.mingw.org/ + + gcc - http://www.gnu.org/software/gcc/gcc.html + +Software +-------- + OpenSSL - http://www.openssl.org/ + + OpenLDAP - http://www.openldap.org/ + + zlib - http://www.cdrom.com/pub/infozip/zlib/ + +Similar Tools +------------- + wget - http://sunsite.dk/wget/ + + snarf - http://www.xach.com/snarf/ + + lynx - http://lynx.browser.org/ (well at least when -dump is used) + + swebget - http://www.uni-hildesheim.de/~smol0075/swebget/ + + Kermit - http://www.columbia.edu/kermit/ftpclient + + Pavuk - http://www.idata.sk/~ondrej/pavuk/ + + httpr - http://zwolak.dhs.org/httpr/ + + puf - http://www.inf.tu-dresden.de/~ob6/sw/puf.html + +Related Software +---------------- + ftpparse - http://cr.yp.to/ftpparse.html parses FTP LIST responses + + autoconf - http://www.gnu.org/software/autoconf/autoconf.html + + automake - http://www.gnu.org/software/automake/automake.html + + bison - http://www.gnu.org/software/bison/bison.html + + gzip - http://www.gnu.org/software/gzip/gzip.html + + tar - http://www.gnu.org/software/tar/tar.html + + libtool - http://www.gnu.org/software/libtool/libtool.html diff --git a/Build/source/libs/curl/docs/THANKS b/Build/source/libs/curl/docs/THANKS new file mode 100644 index 00000000000..f2e84fc57b4 --- /dev/null +++ b/Build/source/libs/curl/docs/THANKS @@ -0,0 +1,81 @@ +This project has been alive for several years. Countless people have provided +feedback that have improved curl. Here follows a (incomplete) list of people +that have contributed with non-trivial parts: + + - Daniel Stenberg <daniel@haxx.se> + - Rafael Sagula <sagula@inf.ufrgs.br> + - Sampo Kellomaki <sampo@iki.fi> + - Linas Vepstas <linas@linas.org> + - Bjorn Reese <breese@mail1.stofanet.dk> + - Johan Anderson <johan@homemail.com> + - Kjell Ericson <Kjell.Ericson@haxx.se> + - Troy Engel <tengel@sonic.net> + - Ryan Nelson <ryan@inch.com> + - Björn Stenberg <bjorn@haxx.se> + - Angus Mackay <amackay@gus.ml.org> + - Eric Young <eay@cryptsoft.com> + - Simon Dick <simond@totally.irrelevant.org> + - Oren Tirosh <oren@monty.hishome.net> + - Steven G. Johnson <stevenj@alum.mit.edu> + - Gilbert Ramirez Jr. <gram@verdict.uthscsa.edu> + - Andrés García <ornalux@redestb.es> + - Douglas E. Wegscheid <wegscd@whirlpool.com> + - Mark Butler <butlerm@xmission.com> + - Eric Thelin <eric@generation-i.com> + - Marc Boucher <marc@mbsi.ca> + - Greg Onufer <Greg.Onufer@Eng.Sun.COM> + - Doug Kaufman <dkaufman@rahul.net> + - David Eriksson <david@2good.com> + - Ralph Beckmann <rabe@uni-paderborn.de> + - T. Yamada <tai@imasy.or.jp> + - Lars J. Aas <larsa@sim.no> + - Jörn Hartroth <Joern.Hartroth@computer.org> + - Matthew Clarke <clamat@van.maves.ca> + - Linus Nielsen Feltzing <linus@haxx.se> + - Felix von Leitner <felix@convergence.de> + - Dan Zitter <dzitter@zitter.net> + - Jongki Suwandi <Jongki.Suwandi@eng.sun.com> + - Chris Maltby <chris@aurema.com> + - Ron Zapp <rzapper@yahoo.com> + - Paul Marquis <pmarquis@iname.com> + - Ellis Pritchard <ellis@citria.com> + - Damien Adant <dams@usa.net> + - Chris <cbayliss@csc.come> + - Marco G. Salvagno <mgs@whiz.cjb.net> + - Paul Marquis <pmarquis@iname.com> + - David LeBlanc <dleblanc@qnx.com> + - Rich Gray at Plus Technologies + - Luong Dinh Dung <u8luong@lhsystems.hu> + - Torsten Foertsch <torsten.foertsch@gmx.net> + - Kristian Köhntopp <kris@koehntopp.de> + - Fred Noz <FNoz@siac.com> + - Caolan McNamara <caolan@csn.ul.ie> + - Albert Chin-A-Young <china@thewrittenword.com> + - Stephen Kick <skick@epicrealm.com> + - Martin Hedenfalk <mhe@stacken.kth.se> + - Richard Prescott <rip at step.polymtl.ca> + - Jason S. Priebe <priebe@wral-tv.com> + - T. Bharath <TBharath@responsenetworks.com> + - Alexander Kourakos <awk@users.sourceforge.net> + - James Griffiths <griffiths_james@yahoo.com> + - Loic Dachary <loic@senga.org> + - Robert Weaver <robert.weaver@sabre.com> + - Ingo Ralf Blum <ingoralfblum@ingoralfblum.com> + - Jun-ichiro itojun Hagino <itojun@iijlab.net> + - Frederic Lepied <flepied@mandrakesoft.com> + - Georg Horn <horn@koblenz-net.de> + - Cris Bailiff <c.bailiff@awayweb.com> + - Sterling Hughes <sterling@designmultimedia.com> + - S. Moonesamy + - Ingo Wilken <iw@WWW.Ecce-Terram.DE> + - Pawel A. Gajda <mis@k2.net.pl> + - Patrick Bihan-Faou + - Nico Baggus <Nico.Baggus@mail.ing.nl> + - Sergio Ballestrero + - Andrew Francis <locust@familyhealth.com.au> + - Tomasz Lacki <Tomasz.Lacki@primark.pl> + - Georg Huettenegger <georg@ist.org> + - John Lask <johnlask@hotmail.com> + - Eric Lavigne <erlavigne@wanadoo.fr> + - Marcus Webster <marcus.webster@phocis.com> + - Götz Babin-Ebell <babinebell@trustcenter.de> diff --git a/Build/source/libs/curl/docs/TODO b/Build/source/libs/curl/docs/TODO new file mode 100644 index 00000000000..53bbc154704 --- /dev/null +++ b/Build/source/libs/curl/docs/TODO @@ -0,0 +1,204 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +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. + + LIBCURL + + * Consider an interface to libcurl that allows applications to easier get to + know what cookies that are sent back in the response headers. + + * 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/lxr/source/lib/multi.h] + + * 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://curl.haxx.se/dev/async-resolver.txt + This should be made to work on most of the supported platforms, or + otherwise it isn't really interesting. + + * Data sharing. Tell which easy handles within a multi handle that should + share cookies, connection cache, dns cache, ssl session cache. + + * 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. + + * No-faster-then-this transfers. Many people have limited bandwidth and they + want the ability to make sure their transfers never use more bandwith than + they think is good. + + * Set the SO_KEEPALIVE socket option to make libcurl notice and disconnect + very long time idle connections. + + * Make sure we don't ever loop because of non-blocking sockets return + EWOULDBLOCK or similar. This concerns the HTTP request sending (and + especially regular HTTP POST), the FTP command sending etc. + + * Go through the code and verify that libcurl deals with big files >2GB and + >4GB all over. Bug reports indicate that it doesn't currently work + properly. + + DOCUMENTATION + + * Document all CURLcode error codes, why they happen and what most likely + will make them not happen again. In a libcurl point of view. + + FTP + + * FTP ASCII upload does not follow RFC959 section 3.1.1.1: "The sender + converts the data from an internal character representation to the standard + 8-bit NVT-ASCII representation (see the Telnet specification). The + receiver will convert the data from the standard form to his own internal + form." + + * 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. + + * Add FTPS support with SSL for the data connection too. + + HTTP + + * Make it possible to supply normal POST data through the ordinary read data + callback. + + * 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. + + * 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. + + * "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. + + * Authentication: NTLM. Support for that MS crap called NTLM + authentication. MS proxies and servers sometime require that. Since that + protocol is a proprietary one, it involves reverse engineering and network + sniffing. This should however be a library-based functionality. There are a + few different efforts "out there" to make open source HTTP clients support + this and it should be possible to take advantage of other people's hard + work. http://modntlm.sourceforge.net/ is one. There's a web page at + http://www.innovation.ch/java/ntlm.html that contains detailed reverse- + engineered info. + + * RFC2617 compliance, "Digest Access Authentication" A valid test page seem + to exist at: http://hopf.math.nwu.edu/testpage/digest/ And some friendly + person's server source code is available at + http://hopf.math.nwu.edu/digestauth/index.html Then there's the Apache + mod_digest source code too of course. It seems as if Netscape doesn't + support this, and not many servers do. Although this is a lot better + authentication method than the more common "Basic". Basic sends the + password in cleartext over the network, this "Digest" method uses a + challange-response protocol which increases security quite a lot. + + * Pipelining. Sending multiple requests before the previous one(s) are done. + This could possibly be implemented using the multi interface to queue + requests and the response data. + + TELNET + + * Make TELNET work on windows98! + + * Reading input (to send to the remote server) on stdin is a crappy solution + for library purposes. We need to invent a good way for the application to + be able to provide the data to send. + + * Move the telnet support's network select() loop go away and merge the code + into the main transfer loop. Until this is done, the multi interface won't + work for telnet. + + SSL + + * If you really want to improve the SSL situation, you should probably have a + look at SSL cafile loading as well - quick traces look to me like these are + done on every request as well, when they should only be necessary once per + ssl context (or once per handle). Even better would be to support the SSL + CAdir option - instead of loading all of the root CA certs for every + request, this option allows you to only read the CA chain that is actually + required (into the cache)... + + * Add an interface to libcurl that enables "session IDs" to get + exported/imported. Cris Bailiff said: "OpenSSL has functions which can + serialise the current SSL state to a buffer of your choice, and + recover/reset the state from such a buffer at a later date - this is used + by mod_ssl for apache to implement and SSL session ID cache". This whole + idea might become moot if we enable the 'data sharing' as mentioned in the + LIBCURL label above. + + * OpenSSL supports a callback for customised verification of the peer + certificate, but this doesn't seem to be exposed in the libcurl APIs. Could + it be? There's so much that could be done if it were! (brought by Chris + Clark) + + * Make curl's SSL layer option capable of using other free SSL libraries. + Such as the Mozilla Security Services + (http://www.mozilla.org/projects/security/pki/nss/) and GNUTLS + (http://gnutls.hellug.gr/) + + LDAP + + * Look over the implementation. The looping will have to "go away" from the + lib/ldap.c source file and get moved to the main network code so that the + multi interface and friends will work for LDAP as well. + + CLIENT + + * "curl ftp://site.com/*.txt" + + * Several URLs can be specified to get downloaded. We should be able to use + the same syntax to specify several files to get uploaded (using the same + persistant connection), using -T. + + * When the multi interface has been implemented and proved to work, the + client could be told to use maximum N simultaneous transfers and then just + make sure that happens. It should of course not make more than one + connection to the same remote host. + + * Extending the capabilities of the multipart formposting. How about leaving + the ';type=foo' syntax as it is and adding an extra tag (headers) which + works like this: curl -F "coolfiles=@fil1.txt;headers=@fil1.hdr" where + fil1.hdr contains extra headers like + + Content-Type: text/plain; charset=KOI8-R" + Content-Transfer-Encoding: base64 + X-User-Comment: Please don't use browser specific HTML code + + which should overwrite the program reasonable defaults (plain/text, + 8bit...) (Idea brough to us by kromJx) + + TEST SUITE + + * Extend the test suite to include more protocols. The telnet could just do + ftp or http operations (for which we have test servers). + + * Make the test suite work on more platforms. OpenBSD and Mac OS. Remove + fork()s and it should become even more portable. + + * Introduce a test suite that tests libcurl better and more explicitly. diff --git a/Build/source/libs/curl/docs/TheArtOfHttpScripting b/Build/source/libs/curl/docs/TheArtOfHttpScripting new file mode 100644 index 00000000000..c85fe9220b5 --- /dev/null +++ b/Build/source/libs/curl/docs/TheArtOfHttpScripting @@ -0,0 +1,378 @@ +Online: http://curl.haxx.se/docs/httpscripting.shtml +Author: Daniel Stenberg <daniel@haxx.se> +Date: October 31, 2001 +Version: 0.5 + + The Art Of Scripting HTTP Requests Using Curl + ============================================= + + This document will assume that you're familiar with HTML and general + networking. + + The possibility to write scripts is essential to make a good computer + system. Unix' capability to be extended by shell scripts and various tools to + run various automated commands and scripts is one reason why it has succeeded + so well. + + The increasing amount of applications moving to the web has made "HTTP + Scripting" more frequently requested and wanted. To be able to automatically + extract information from the web, to fake users, to post or upload data to + web servers are all important tasks today. + + Curl is a command line tool for doing all sorts of URL manipulations and + transfers, but this particular document will focus on how to use it when + doing HTTP requests for fun and profit. I'll assume that you know how to + invoke 'curl --help' or 'curl --manual' to get basic information about it. + + Curl is not written to do everything for you. It makes the requests, it gets + the data, it sends data and it retrieves the information. You probably need + to glue everything together using some kind of script language or repeated + manual invokes. + +1. The HTTP Protocol + + HTTP is the protocol used to fetch data from web servers. It is a very simple + protocol that is built upon TCP/IP. The protocol also allows information to + get sent to the server from the client using a few different methods, as will + be shown here. + + HTTP is plain ASCII text lines being sent by the client to a server to + request a particular action, and then the server replies a few text lines + before the actual requested content is sent to the client. + + Using curl's option -v will display what kind of commands curl sends to the + server, as well as a few other informational texts. -v is the single most + useful option when it comes to debug or even understand the curl<->server + interaction. + +2. URL + + The Uniform Resource Locator format is how you specify the address of a + particular resource on the Internet. You know these, you've seen URLs like + http://curl.haxx.se or https://yourbank.com a million times. + +3. GET a page + + The simplest and most common request/operation made using HTTP is to get a + URL. The URL could itself refer to a web page, an image or a file. The client + issues a GET request to the server and receives the document it asked for. + If you issue the command line + + curl http://curl.haxx.se + + you get a web page returned in your terminal window. The entire HTML document + that that URL holds. + + All HTTP replies contain a set of headers that are normally hidden, use + curl's -i option to display them as well as the rest of the document. You can + also ask the remote server for ONLY the headers by using the -I option. + +4. Forms + + Forms are the general way a web site can present a HTML page with fields for + the user to enter data in, and then press some kind of 'OK' or 'submit' + button to get that data sent to the server. The server then typically uses + the posted data to decide how to act. Like using the entered words to search + in a database, or to add the info in a bug track system, display the entered + address on a map or using the info as a login-prompt verifying that the user + is allowed to see what it is about to see. + + Of course there has to be some kind of program in the server end to receive + the data you send. You cannot just invent something out of the air. + + 4.1 GET + + A GET-form uses the method GET, as specified in HTML like: + + <form method="GET" action="junk.cgi"> + <input type=text name="birthyear"> + <input type=submit name=press value="OK"> + </form> + + In your favorite browser, this form will appear with a text box to fill in + and a press-button labeled "OK". If you fill in '1905' and press the OK + button, your browser will then create a new URL to get for you. The URL will + get "junk.cgi?birthyear=1905&press=OK" appended to the path part of the + previous URL. + + If the original form was seen on the page "www.hotmail.com/when/birth.html", + the second page you'll get will become + "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK". + + Most search engines work this way. + + To make curl do the GET form post for you, just enter the expected created + URL: + + curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK" + + 4.2 POST + + The GET method makes all input field names get displayed in the URL field of + your browser. That's generally a good thing when you want to be able to + bookmark that page with your given data, but it is an obvious disadvantage + if you entered secret information in one of the fields or if there are a + large amount of fields creating a very long and unreadable URL. + + The HTTP protocol then offers the POST method. This way the client sends the + data separated from the URL and thus you won't see any of it in the URL + address field. + + The form would look very similar to the previous one: + + <form method="POST" action="junk.cgi"> + <input type=text name="birthyear"> + <input type=submit name=press value="OK"> + </form> + + And to use curl to post this form with the same data filled in as before, we + could do it like: + + curl -d "birthyear=1905&press=OK" www.hotmail.com/when/junk.cgi + + This kind of POST will use the Content-Type + application/x-www-form-urlencoded and is the most widely used POST kind. + + 4.3 FILE UPLOAD POST + + Back in late 1995 they defined a new way to post data over HTTP. It was + documented in the RFC 1867, why this method sometimes is referred to as + a RFC1867-posting. + + This method is mainly designed to better support file uploads. A form that + allows a user to upload a file could be written like this in HTML: + + <form method="POST" enctype='multipart/form-data' action="upload.cgi"> + <input type=file name=upload> + <input type=submit name=press value="OK"> + </form> + + This clearly shows that the Content-Type about to be sent is + multipart/form-data. + + To post to a form like this with curl, you enter a command line like: + + curl -F upload=@localfilename -F press=OK [URL] + + 4.4 HIDDEN FIELDS + + A very common way for HTML based application to pass state information + between pages is to add hidden fields to the forms. Hidden fields are + already filled in, they aren't displayed to the user and they get passed + along just as all the other fields. + + A similar example form with one visible field, one hidden field and one + submit button could look like: + + <form method="POST" action="foobar.cgi"> + <input type=text name="birthyear"> + <input type=hidden name="person" value="daniel"> + <input type=submit name="press" value="OK"> + </form> + + To post this with curl, you won't have to think about if the fields are + hidden or not. To curl they're all the same: + + curl -d "birthyear=1905&press=OK&person=daniel" [URL] + + 4.5 FIGURE OUT WHAT A POST LOOKS LIKE + + When you're about fill in a form and send to a server by using curl instead + of a browser, you're of course very interested in sending a POST exactly the + way your browser does. + + An easy way to get to see this, is to save the HTML page with the form on + your local disk, modify the 'method' to a GET, and press the submit button + (you could also change the action URL if you want to). + + You will then clearly see the data get appended to the URL, separated with a + '?'-letter as GET forms are supposed to. + +5. PUT + + The perhaps best way to upload data to a HTTP server is to use PUT. Then + again, this of course requires that someone put a program or script on the + server end that knows how to receive a HTTP PUT stream. + + Put a file to a HTTP server with curl: + + curl -T uploadfile www.uploadhttp.com/receive.cgi + +6. AUTHENTICATION + + Authentication is the ability to tell the server your username and password + so that it can verify that you're allowed to do the request you're doing. The + basic authentication used in HTTP is *plain* *text* based, which means it + sends username and password only slightly obfuscated, but still fully + readable by anyone that sniffs on the network between you and the remote + server. + + To tell curl to use a user and password for authentication: + + curl -u name:password www.secrets.com + + Sometimes your HTTP access is only available through the use of a HTTP + proxy. This seems to be especially common at various companies. A HTTP proxy + may require its own user and password to allow the client to get through to + the Internet. To specify those with curl, run something like: + + curl -U proxyuser:proxypassword curl.haxx.se + + If you use any one these user+password options but leave out the password + part, curl will prompt for the password interactively. + + Do note that when a program is run, its parameters are possible to see when + listing the running processes of the system. Thus, other users may be able to + watch your passwords if you pass them as plain command line options. There + are ways to circumvent this. + +7. REFERER + + A HTTP request may include a 'referer' field, which can be used to tell from + which URL the client got to this particular resource. Some programs/scripts + check the referer field of requests to verify that this wasn't arriving from + an external site or an unknown page. While this is a stupid way to check + something so easily forged, many scripts still do it. Using curl, you can put + anything you want in the referer-field and thus more easily be able to fool + the server into serving your request. + + Use curl to set the referer field with: + + curl -e http://curl.haxx.se daniel.haxx.se + +8. USER AGENT + + Very similar to the referer field, all HTTP requests may set the User-Agent + field. It names what user agent (client) that is being used. Many + applications use this information to decide how to display pages. Silly web + programmers try to make different pages for users of different browsers to + make them look the best possible for their particular browsers. They usually + also do different kinds of javascript, vbscript etc. + + At times, you will see that getting a page with curl will not return the same + page that you see when getting the page with your browser. Then you know it + is time to set the User Agent field to fool the server into thinking you're + one of those browsers. + + To make curl look like Internet Explorer on a Windows 2000 box: + + curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL] + + Or why not look like you're using Netscape 4.73 on a Linux (PIII) box: + + curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL] + +9. REDIRECTS + + When a resource is requested from a server, the reply from the server may + include a hint about where the browser should go next to find this page, or a + new page keeping newly generated output. The header that tells the browser + to redirect is Location:. + + Curl does not follow Location: headers by default, but will simply display + such pages in the same manner it display all HTTP replies. It does however + feature an option that will make it attempt to follow the Location: pointers. + + To tell curl to follow a Location: + + curl -L www.sitethatredirects.com + + If you use curl to POST to a site that immediately redirects you to another + page, you can safely use -L and -d/-F together. Curl will only use POST in + the first request, and then revert to GET in the following operations. + +10. COOKIES + + The way the web browsers do "client side state control" is by using + cookies. Cookies are just names with associated contents. The cookies are + sent to the client by the server. The server tells the client for what path + and host name it wants the cookie sent back, and it also sends an expiration + date and a few more properties. + + When a client communicates with a server with a name and path as previously + specified in a received cookie, the client sends back the cookies and their + contents to the server, unless of course they are expired. + + Many applications and servers use this method to connect a series of requests + into a single logical session. To be able to use curl in such occasions, we + must be able to record and send back cookies the way the web application + expects them. The same way browsers deal with them. + + The simplest way to send a few cookies to the server when getting a page with + curl is to add them on the command line like: + + curl -b "name=Daniel" www.cookiesite.com + + Cookies are sent as common HTTP headers. This is practical as it allows curl + to record cookies simply by recording headers. Record cookies with curl by + using the -D option like: + + curl -D headers_and_cookies www.cookiesite.com + + Curl has a full blown cookie parsing engine built-in that comes to use if you + want to reconnect to a server and use cookies that were stored from a + previous connection (or handicrafted manually to fool the server into + believing you had a previous connection). To use previously stored cookies, + you run curl like: + + curl -b stored_cookies_in_file www.cookiesite.com + + Curl's "cookie engine" gets enabled when you use the -b option. If you only + want curl to understand received cookies, use -b with a file that doesn't + exist. Example, if you want to let curl understand cookies from a page and + follow a location (and thus possibly send back cookies it received), you can + invoke it like: + + curl -b nada -L www.cookiesite.com + + Curl has the ability to read and write cookie files that use the same file + format that Netscape and Mozilla do. It is a convenient way to share cookies + between browsers and automatic scripts. The -b switch automatically detects + if a given file is such a cookie file and parses it, and by using the + -c/--cookie-jar option you'll make curl write a new cookie file at the end of + an operation: + + curl -b cookies.txt -c newcookies.txt www.cookiesite.com + +11. HTTPS + + There are a few ways to do secure HTTP transfers. The by far most common + protocol for doing this is what is generally known as HTTPS, HTTP over + SSL. SSL encrypts all the data that is sent and received over the network and + thus makes it harder for attackers to spy on sensitive information. + + SSL (or TLS as the latest version of the standard is called) offers a + truckload of advanced features to allow all those encryptions and key + infrastructure mechanisms encrypted HTTP requires. + + Curl supports encrypted fetches thanks to the freely available OpenSSL + libraries. To get a page from a HTTPS server, simply run curl like: + + curl https://that.secure.server.com + + 11.1 CERTIFICATES + + In the HTTPS world, you use certificates to validate that you are the one + you you claim to be, as an addition to normal passwords. Curl supports + client-side certificates. All certificates are locked with a PIN-code, why + you need to enter the unlock-code before the certificate can be used by + curl. The PIN-code can be specified on the command line or if not, entered + interactively when curl queries for it. Use a certificate with curl on a + HTTPS server like: + + curl -E mycert.pem https://that.secure.server.com + +12. REFERENCES + + RFC 2616 is a must to read if you want in-depth understanding of the HTTP + protocol. + + RFC 2396 explains the URL syntax. + + RFC 2109 defines how cookies are supposed to work. + + RFC 1867 defines the HTTP post upload format. + + http://www.openssl.org is the home of the OpenSSL project + + http://curl.haxx.se is the home of the cURL project diff --git a/Build/source/libs/curl/docs/VERSIONS b/Build/source/libs/curl/docs/VERSIONS new file mode 100644 index 00000000000..01455717e89 --- /dev/null +++ b/Build/source/libs/curl/docs/VERSIONS @@ -0,0 +1,64 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +Version Numbers and Releases + + Curl is not only curl. Curl is also libcurl. They're actually individually + versioned, but they mostly follow each other rather closely. + + The version numbering is always built up using the same system: + + X.Y[.Z][-preN] + + Where + X is main version number + Y is release number + Z is patch number + N is pre-release number + + One of these numbers will get bumped in each new release. The numbers to the + right of a bumped number will be reset to zero. If Z is zero, it is not + included in the version number. The pre release number is only included in + pre releases (they're never used in public, official, releases). + + The main version number will get bumped when *really* big, world colliding + changes are made. The release number is bumped when big changes are + performed. The patch number is bumped when the changes are mere bugfixes and + only minor feature changes. The pre-release is a counter, to identify which + pre-release a certain release is. + + When reaching the end of a pre-release period, the version without the + pre-release part will be released as a public release. + + It means that after release 1.2.3, we can release 2.0 if something really big + has been made, 1.3 if not that big changes were made or 1.2.4 if mostly bugs + were fixed. Before 1.2.4 is released, we might release a 1.2.4-pre1 release + for the brave people to try before the actual release. + + Bumping, as in increasing the number with 1, is unconditionally only + affecting one of the numbers (except the ones to the right of it, that may be + set to zero). 1 becomes 2, 3 becomes 4, 9 becomes 10, 88 becomes 89 and 99 + becomes 100. So, after 1.2.9 comes 1.2.10. After 3.99.3, 3.100 might come. + + All original curl source release archives are named according to the libcurl + version (not according to the curl client version that, as said before, might + differ). + + As a service to any application that might want to support new libcurl + features while still being able to build with older versions, all releases + have the libcurl version stored in the curl/curl.h file using a static + numbering scheme that can be used for comparison. The version number is + defined as: + + #define LIBCURL_VERSION_NUM 0xXXYYZZ + + Where XX, YY and ZZ are the main version, release and patch numbers in + hexadecimal. All three numbers are always represented using two digits. 1.2 + would appear as "0x010200" while version 9.11.7 appears as "0x090b07". + + This 6-digit hexadecimal number does not show pre-release number, and it is + always a greater number in a more recent release. It makes comparisons with + greater than and less than work. diff --git a/Build/source/libs/curl/docs/curl-config.1 b/Build/source/libs/curl/docs/curl-config.1 new file mode 100644 index 00000000000..5533abf15aa --- /dev/null +++ b/Build/source/libs/curl/docs/curl-config.1 @@ -0,0 +1,62 @@ +.\" You can view this file with: +.\" nroff -man curl-config.1 +.\" Written by Daniel Stenberg +.\" +.TH curl-config 1 "21 January 2002" "Curl 7.9.3" "curl-config manual" +.SH NAME +curl-config \- Get information about a libcurl installation +.SH SYNOPSIS +.B curl-config [options] +.SH DESCRIPTION +.B curl-config +displays information about a previous curl and libcurl installation. +.SH OPTIONS +.IP "--cc" +Displays the compiler used to build libcurl. +.IP "--cflags" +Set of compiler options (CFLAGS) to use when compiling files that use +libcurl. Currently that is only thw include path to the curl include files. +.IP "--feature" +Lists what particular main features the installed libcurl was built with. At +the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume +any particular order. The keywords will be separated by newlines. There may be +none, one or several keywords in the list. +.IP "--help" +Displays the available options. +.IP "--libs" +Shows the complete set of libs and other linker options you will need in order +to link your application with libcurl. +.IP "--prefix" +This is the prefix used when libcurl was installed. Libcurl is then installed +in $prefix/lib and its header files are installed in $prefix/include and so +on. The prefix is set with "configure --prefix". +.IP "--version" +Outputs version information about the installed libcurl. +.IP "--vernum" +Outputs version information about the installed libcurl, in numerical mode. +This outputs the version number, in hexadecimal, with 8 bits for each part; +major, minor, patch. So that libcurl 7.7.4 would appear as 070704 and libcurl +12.13.14 would appear as 0c0d0e... +.SH "EXAMPLES" +What linker options do I need when I link with libcurl? + + $ curl-config --libs + +What compiler options do I need when I compile using libcurl functions? + + $ curl-config --cflags + +How do I know if libcurl was built with SSL support? + + $ curl-config --feature | grep SSL + +What's the installed libcurl version? + + $ curl-config --version + +How do I build a single file with a one-line command? + + $ `curl-config --cc --cflags --libs` -o example example.c + +.SH "SEE ALSO" +.BR curl (1) diff --git a/Build/source/libs/curl/docs/curl-config.html b/Build/source/libs/curl/docs/curl-config.html new file mode 100644 index 00000000000..7f20fd51f1f --- /dev/null +++ b/Build/source/libs/curl/docs/curl-config.html @@ -0,0 +1,128 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl-config - Get information about a libcurl installation + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>curl-config</B> <B>[options]</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + <B>curl-config</B> displays information about a previous curl and + libcurl installation. + + +</PRE> +<H2>OPTIONS</H2><PRE> + --cc Displays the compiler used to build libcurl. + + --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. + + --feature + Lists what particular main features the installed + libcurl was built with. At the time of writing, this + list may include SSL, KRB4 or IPv6. Do not assume any + particular order. The keywords will be separated by + newlines. There may be none, one or several keywords in + the list. + + --help + Displays the available options. + + --libs + Shows the complete set of libs and other linker options + you will need in order to link your application with + libcurl. + + --prefix + This is the prefix used when libcurl was installed. + Libcurl is then installed in $prefix/lib and its header + files are installed in $prefix/include and so on. The + prefix is set with "configure --prefix". + + --version + Outputs version information about the installed + libcurl. + + --vernum + Outputs version information about the installed + libcurl, in numerical mode. This outputs the version + number, in hexadecimal, with 8 bits for each part; + major, minor, patch. So that libcurl 7.7.4 would appear + as 070704 and libcurl 12.13.14 would appear as + 0c0d0e... + + +</PRE> +<H2>EXAMPLES</H2><PRE> + What linker options do I need when I link with libcurl? + + $ curl-config --libs + + What compiler options do I need when I compile using libcurl + functions? + + $ curl-config --cflags + + How do I know if libcurl was built with SSL support? + + $ curl-config --feature | grep SSL + + What's the installed libcurl version? + + $ curl-config --version + + How do I build a single file with a one-line command? + + $ `curl-config --cc --cflags --libs` -o example example.c + + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl(1)</B> + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/curl.1 b/Build/source/libs/curl/docs/curl.1 new file mode 100644 index 00000000000..574db94c271 --- /dev/null +++ b/Build/source/libs/curl/docs/curl.1 @@ -0,0 +1,820 @@ +.\" You can view this file with: +.\" nroff -man curl.1 +.\" Written by Daniel Stenberg +.\" +.TH curl 1 "25 Feb 2002" "Curl 7.9.5" "Curl Manual" +.SH NAME +curl \- transfer a URL +.SH SYNOPSIS +.B curl [options] +.I [URL...] +.SH DESCRIPTION +.B curl +is a client to get documents/files from or send documents to a server, using +any of the supported protocols (HTTP, HTTPS, FTP, GOPHER, DICT, TELNET, LDAP +or FILE). The command is designed to work without user interaction or any kind +of interactivity. + +curl offers a busload of useful tricks like proxy support, user +authentication, ftp upload, HTTP post, SSL (https:) connections, cookies, file +transfer resume and more. +.SH URL +The URL syntax is protocol dependent. You'll find a detailed description in +RFC 2396. + +You can specify multiple URLs or parts of URLs by writing part sets within +braces as in: + + http://site.{one,two,three}.com + +or you can get sequences of alphanumeric series by using [] as in: + + ftp://ftp.numericals.com/file[1-100].txt + ftp://ftp.numericals.com/file[001-100].txt (with leading zeros) + ftp://ftp.letters.com/file[a-z].txt + +It is possible to specify up to 9 sets or series for a URL, but no nesting is +supported at the moment: + + http://www.any.org/archive[1996-1999]/volume[1-4]part{a,b,c,index}.html + +You can specify any amount of URLs on the command line. They will be fetched +in a sequential manner in the specified order. + +Curl will attempt to re-use connections for multiple file transfers, so that +getting many files from the same server will not do multiple connects / +handshakes. This improves speed. Of course this is only done on files +specified on a single command line and cannot be used between separate curl +invokes. +.SH OPTIONS +.IP "-a/--append" +(FTP) +When used in a ftp upload, this will tell curl to append to the target +file instead of overwriting it. If the file doesn't exist, it will +be created. + +If this option is used twice, the second one will disable append mode again. +.IP "-A/--user-agent <agent string>" +(HTTP) +Specify the User-Agent string to send to the HTTP server. Some badly done CGIs +fail if its not set to "Mozilla/4.0". To encode blanks in the string, +surround the string with single quote marks. This can also be set with the +-H/--header flag of course. + +If this option is set more than once, the last one will be the one that's +used. +.IP "-b/--cookie <name=data>" +(HTTP) +Pass the data to the HTTP server as a cookie. It is supposedly the +data previously received from the server in a "Set-Cookie:" line. +The data should be in the format "NAME1=VALUE1; NAME2=VALUE2". + +If no '=' letter is used in the line, it is treated as a filename to use to +read previously stored cookie lines from, which should be used in this session +if they match. Using this method also activates the "cookie parser" which will +make curl record incoming cookies too, which may be handy if you're using this +in combination with the -L/--location option. The file format of the file to +read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie +file format. + +.B NOTE +that the file specified with -b/--cookie is only used as input. No cookies +will be stored in the file. To store cookies, save the HTTP headers to a file +using -D/--dump-header! + +If this option is set more than once, the last one will be the one that's +used. +.IP "-B/--use-ascii" +Use ASCII transfer when getting an FTP file or LDAP info. For FTP, this can +also be enforced by using an URL that ends with ";type=A". This option causes +data sent to stdout to be in text mode for win32 systems. + +If this option is used twice, the second one will disable ASCII usage. +.IP "--ciphers <list of ciphers>" +(SSL) Specifies which ciphers to use in the connection. The list of ciphers +must be using valid ciphers. Read up on SSL cipher list details on this URL: +.I http://www.openssl.org/docs/apps/ciphers.html (Option added in curl 7.9) + +If this option is used severl 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. + +If this option is used several times, the last one will be used. +.IP "-c/--cookie-jar <file name>" +Specify to which file you want curl to write all cookies after a completed +operation. Curl writes all cookies previously read from a specified file as +well as all cookies received from remote server(s). If no cookies are known, +no file will be written. The file will be written using the Netscape cookie +file format. If you set the file name to a single dash, "-", the cookies will +be written to stdout. (Option added in curl 7.9) + +If this option is used several times, the last specfied file name will be +used. +.IP "-C/--continue-at <offset>" +Continue/Resume a previous file transfer at the given offset. The given offset +is the exact number of bytes that will be skipped counted from the beginning +of the source file before it is transfered to the destination. If used with +uploads, the ftp server command SIZE will not be used by curl. + +Use "-C -" to tell curl to automatically find out where/how to resume the +transfer. It then uses the given output/input files to figure that out. + +If this option is used several times, the last one will be used. +.IP "-d/--data <data>" +(HTTP) Sends the specified data in a POST request to the HTTP server, in a way +that can emulate as if a user has filled in a HTML form and pressed the submit +button. Note that the data is sent exactly as specified with no extra +processing (with all newlines cut off). The data is expected to be +"url-encoded". This will cause curl to pass the data to the server using the +content-type application/x-www-form-urlencoded. Compare to -F. If more than +one -d/--data option is used on the same command line, the data pieces +specified will be merged together with a separating &-letter. Thus, using '-d +name=daniel -d skill=lousy' would generate a post chunk that looks like +\&'name=daniel&skill=lousy'. + +If you start the data with the letter @, the rest should be a file name to +read the data from, or - if you want curl to read the data from stdin. The +contents of the file must already be url-encoded. Multiple files can also be +specified. Posting data from a file named 'foobar' would thus be done with +"--data @foobar". + +To post data purely binary, you should instead use the --data-binary option. + +-d/--data is the same as --data-ascii. + +If this option is used several times, the ones following the first will +append data. +.IP "--data-ascii <data>" +(HTTP) This is an alias for the -d/--data option. + +If this option is used several times, the ones following the first will +append data. +.IP "--data-binary <data>" +(HTTP) This posts data in a similar manner as --data-ascii does, although when +using this option the entire context of the posted data is kept as-is. If you +want to post a binary file without the strip-newlines feature of the +--data-ascii option, this is for you. + +If this option is used several times, the ones following the first will +append data. +.IP "--disable-epsv" +(FTP) Tell curl to disable the use of the EPSV command when doing passive FTP +downloads. Curl will normally always first attempt to use EPSV before PASV, +but with this option, it will not try using EPSV. + +IF this option is used several times, each occurrence will toggle this on/off. +.IP "-D/--dump-header <file>" +(HTTP/FTP) +Write the HTTP headers to this file. Write the FTP file info to this +file if -I/--head is used. + +This option is handy to use when you want to store the cookies that a HTTP +site sends to you. The cookies could then be read in a second curl invoke by +using the -b/--cookie option! + +If this option is used several times, the last one will be used. +.IP "-e/--referer <URL>" +(HTTP) Sends the "Referer Page" information to the HTTP server. This can also +be set with the -H/--header flag of course. When used with +.I -L/--location +you can append ";auto" to the referer URL to make curl automatically set the +previous URL when it follows a Location: header. The ";auto" string can be +used alone, even if you don't set an initial referer. + +If this option is used several times, the last one will be used. +.IP "--egd-file <file>" +(HTTPS) Specify the path name to the Entropy Gathering Daemon socket. The +socket is used to seed the random engine for SSL connections. See also the +.I "--random-file" +option. +.IP "-E/--cert <certificate[:password]>" +(HTTPS) +Tells curl to use the specified certificate file when getting a file +with HTTPS. The certificate must be in PEM format. +If the optional password isn't specified, it will be queried for on +the terminal. Note that this certificate is the private key and the private +certificate concatenated! + +If this option is used several times, the last one will be used. +.IP "--cacert <CA certificate>" +(HTTPS) Tells curl to use the specified certificate file to verify the +peer. The certificate must be in PEM format. + +If this option is used several times, the last one will be used. +.IP "-f/--fail" +(HTTP) +Fail silently (no output at all) on server errors. This is mostly done +like this to better enable scripts etc to better deal with failed +attempts. In normal cases when a HTTP server fails to deliver a +document, it returns a HTML document stating so (which often also +describes why and more). This flag will prevent curl from +outputting that and fail silently instead. + +If this option is used twice, the second will again disable silent failure. +.IP "-F/--form <name=content>" +(HTTP) This lets curl emulate a filled in form in which a user has pressed the +submit button. This causes curl to POST data using the content-type +multipart/form-data according to RFC1867. This enables uploading of binary +files etc. To force the 'content' part to be be a file, prefix the file name +with an @ sign. To just get the content part from a file, prefix the file name +with the letter <. The difference between @ and < is then that @ makes a file +get attached in the post as a file upload, while the < makes a text field and +just get the contents for that text field from a file. + +Example, to send your password file to the server, where +\&'password' is the name of the form-field to which /etc/passwd will be the +input: + +.B curl +-F password=@/etc/passwd www.mypasswords.com + +To read the file's content from stdin insted of a file, use - where the file +name should've been. This goes for both @ and < constructs. + +This option can be used multiple times. +.IP "-g/--globoff" +This option switches off the "URL globbing parser". When you set this option, +you can specify URLs that contain the letters {}[] without having them being +interpreted by curl itself. Note that these letters are not normal legal URL +contents but they should be encoded according to the URI standard. (Option +added in curl 7.6) +.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) +.IP "-h/--help" +Usage help. +.IP "-H/--header <header>" +(HTTP) Extra header to use when getting a web page. You may specify any number +of extra headers. Note that if you should add a custom header that has the +same name as one of the internal ones curl would use, your externally set +header will be used instead of the internal one. This allows you to make even +trickier stuff than curl would normally do. You should not replace internally +set headers without knowing perfectly well what you're doing. Replacing an +internal header with one without content on the right side of the colon will +prevent that header from appearing. + +This option can be used multiple times. +.IP "-i/--include" +(HTTP) +Include the HTTP-header in the output. The HTTP-header includes things +like server-name, date of the document, HTTP-version and more... + +If this option is used twice, the second will again disable header include. +.IP "--interface <name>" +Perform an operation using a specified interface. You can enter interface +name, IP address or host name. An example could look like: + +.B "curl --interface eth0:1 http://www.netscape.com/" + +If this option is used several times, the last one will be used. +.IP "-I/--head" +(HTTP/FTP) +Fetch the HTTP-header only! HTTP-servers feature the command HEAD +which this uses to get nothing but the header of a document. When used +on a FTP file, curl displays the file size only. + +If this option is used twice, the second will again disable header only. +.IP "--krb4 <level>" +(FTP) Enable kerberos4 authentication and use. The level must be entered and +should be one of 'clear', 'safe', 'confidential' or 'private'. Should you use +a level that is not one of these, 'private' will instead be used. + +If this option is used several times, the last one will be used. +.IP "-K/--config <config file>" +Specify which config file to read curl arguments from. The config file is a +text file in which command line arguments can be written which then will be +used as if they were written on the actual command line. Options and their +parameters must be specified on the same config file line. If the parameter is +to contain white spaces, the parameter must be inclosed within quotes. If the +first column of a config line is a '#' character, the rest of the line will be +treated as a comment. + +Specify the filename as '-' to make curl read the file from stdin. + +This option can be used multiple times. +.IP "-l/--list-only" +(FTP) +When listing an FTP directory, this switch forces a name-only view. +Especially useful if you want to machine-parse the contents of an FTP +directory since the normal directory view doesn't use a standard look +or format. + +If this option is used twice, the second will again disable list only. +.IP "-L/--location" +(HTTP/HTTPS) If the server reports that the requested page has a different +location (indicated with the header line Location:) this flag will let curl +attempt to reattempt the get on the new place. If used together with -i or -I, +headers from all requested pages will be shown. If this flag is used when +making a HTTP POST, curl will automatically switch to GET after the initial +POST has been done. + +If this option is used twice, the second will again disable location following. +.IP "-m/--max-time <seconds>" +Maximum time in seconds that you allow the whole operation to take. This is +useful for preventing your batch jobs from hanging for hours due to slow +networks or links going down. This doesn't work fully in win32 systems. +See also the +.I "--connect-timeout" +option. + +If this option is used several times, the last one will be used. +.IP "-M/--manual" +Manual. Display the huge help text. +.IP "-n/--netrc" +Makes curl scan the +.I .netrc +file in the user's home directory for login name and password. This is +typically used for ftp on unix. If used with http, curl will enable user +authentication. See +.BR netrc(4) +or +.BR ftp(1) +for details on the file format. Curl will not complain if that file +hasn't the right permissions (it should not be world nor group +readable). The environment variable "HOME" is used to find the home +directory. + +A quick and very simple example of how to setup a +.I .netrc +to allow curl to ftp to the machine host.domain.com with user name +\&'myself' and password 'secret' should look similar to: + +.B "machine host.domain.com login myself password secret" + +If this option is used twice, the second will again disable netrc usage. +.IP "-N/--no-buffer" +Disables the buffering of the output stream. In normal work situations, curl +will use a standard buffered output stream that will have the effect that it +will output the data in chunks, not necessarily exactly when the data arrives. +Using this option will disable that buffering. + +If this option is used twice, the second will again switch on buffering. +.IP "-o/--output <file>" +Write output to <file> instead of stdout. If you are using {} or [] to fetch +multiple documents, you can use '#' followed by a number in the <file> +specifier. That variable will be replaced with the current string for the URL +being fetched. Like in: + + curl http://{one,two}.site.com -o "file_#1.txt" + +or use several variables like: + + curl http://{site,host}.host[1-5].com -o "#1_#2" + +You may use this option as many times as you have number of URLs. +.IP "-O/--remote-name" +Write output to a local file named like the remote file we get. (Only +the file part of the remote file is used, the path is cut off.) + +You may use this option as many times as you have number of URLs. +.IP "-p/--proxytunnel" +When an HTTP proxy is used, this option will cause non-HTTP protocols to +attempt to tunnel through the proxy instead of merely using it to do HTTP-like +operations. The tunnel approach is made with the HTTP proxy CONNECT request +and requires that the proxy allows direct connect to the remote port number +curl wants to tunnel through to. + +If this option is used twice, the second will again disable proxy tunnel. +.IP "-P/--ftpport <address>" +(FTP) +Reverses the initiator/listener roles when connecting with ftp. This +switch makes Curl use the PORT command instead of PASV. In +practice, PORT tells the server to connect to the client's specified +address and port, while PASV asks the server for an ip address and +port to connect to. <address> should be one of: +.RS +.TP 12 +.B interface +i.e "eth0" to specify which interface's IP address you want to use (Unix only) +.TP +.B "IP address" +i.e "192.168.10.1" to specify exact IP number +.TP +.B "host name" +i.e "my.host.domain" to specify machine +.TP +.B "-" +(any single-letter string) to make it pick the machine's default +.RE + +If this option is used several times, the last one will be used. +.IP "-q" +If used as the first parameter on the command line, the +.I $HOME/.curlrc +file will not be read and used as a config file. +.IP "-Q/--quote <comand>" +(FTP) Send an arbitrary command to the remote FTP server, by using the QUOTE +command of the server. Not all servers support this command, and the set of +QUOTE commands are server specific! Quote commands are sent BEFORE the +transfer is taking place. To make commands take place after a successful +transfer, prefix them with a dash '-'. You may specify any amount of commands +to be run before and after the transfer. If the server returns failure for one +of the commands, the entire operation will be aborted. + +This option can be used multiple times. +.IP "--random-file <file>" +(HTTPS) Specify the path name to file containing what will be considered as +random data. The data is used to seed the random engine for SSL connections. +See also the +.I "--edg-file" +option. +.IP "-r/--range <range>" +(HTTP/FTP) +Retrieve a byte range (i.e a partial document) from a HTTP/1.1 or FTP +server. Ranges can be specified in a number of ways. +.RS +.TP 10 +.B 0-499 +specifies the first 500 bytes +.TP +.B 500-999 +specifies the second 500 bytes +.TP +.B -500 +specifies the last 500 bytes +.TP +.B 9500 +specifies the bytes from offset 9500 and forward +.TP +.B 0-0,-1 +specifies the first and last byte only(*)(H) +.TP +.B 500-700,600-799 +specifies 300 bytes from offset 500(H) +.TP +.B 100-199,500-599 +specifies two separate 100 bytes ranges(*)(H) +.RE + +(*) = NOTE that this will cause the server to reply with a multipart +response! + +You should also be aware that many HTTP/1.1 servers do not have this feature +enabled, so that when you attempt to get a range, you'll instead get the whole +document. + +FTP range downloads only support the simple syntax 'start-stop' (optionally +with one of the numbers omitted). It depends on the non-RFC command SIZE. + +If this option is used several times, the last one will be used. +.IP "-R/--remote-time" +When used, this will make libcurl attempt to figure out the timestamp of the +remote file, and if that is available make the local file get that same +timestamp. + +If this option is used twice, the second time disables this again. +.IP "-s/--silent" +Silent mode. Don't show progress meter or error messages. Makes +Curl mute. + +If this option is used twice, the second will again disable mute. +.IP "-S/--show-error" +When used with -s it makes curl show error message if it fails. + +If this option is used twice, the second will again disable show error. +.IP "-t/--telnet-option <OPT=val>" +Pass options to the telnet protocol. Supported options are: + +TTYPE=<term> Sets the terminal type. + +XDISPLOC=<X display> Sets the X display location. + +NEW_ENV=<var,val> Sets an environment variable. +.IP "-T/--upload-file <file>" +This transfers the specified local file to the remote URL. If there is no file +part in the specified URL, Curl will append the local file name. NOTE that you +must use a trailing / on the last directory to really prove to Curl that there +is no file name or curl will think that your last directory name is the remote +file name to use. That will most likely cause the upload operation to fail. If +this is used on a http(s) server, the PUT command will be used. + +Use the file name "-" (a single dash) to use stdin instead of a given file. + +If this option is used several times, the last one will be used. +.IP "-u/--user <user:password>" +Specify user and password to use when fetching. See README.curl for detailed +examples of how to use this. If no password is specified, curl will +ask for it interactively. + +If this option is used several times, the last one will be used. +.IP "-U/--proxy-user <user:password>" +Specify user and password to use for Proxy authentication. If no +password is specified, curl will ask for it interactively. + +If this option is used several times, the last one will be used. +.IP "--url <URL>" +Specify a URL to fetch. This option is mostly handy when you want to specify +URL(s) in a config file. + +This option may be used any number of times. To control where this URL is written, use the +.I -o +or the +.I -O +options. +.IP "-v/--verbose" +Makes the fetching more verbose/talkative. Mostly usable for +debugging. Lines starting with '>' means data sent by curl, '<' +means data received by curl that is hidden in normal cases and lines +starting with '*' means additional info provided by curl. + +If this option is used twice, the second will again disable verbose. +.IP "-V/--version" +Displays the full version of curl, libcurl and other 3rd party libraries +linked with the executable. +.IP "-w/--write-out <format>" +Defines what to display after a completed and successful operation. The format +is a string that may contain plain text mixed with any number of variables. The +string can be specified as "string", to get read from a particular file you +specify it "@filename" and to tell curl to read the format from stdin you +write "@-". + +The variables present in the output format will be substituted by the value or +text that curl thinks fit, as described below. All variables are specified +like %{variable_name} and to output a normal % you just write them like +%%. You can output a newline by using \\n, a carriage return with \\r and a tab +space with \\t. + +.B NOTE: +The %-letter is a special letter in the win32-environment, where all +occurrences of % must be doubled when using this option. + +Available variables are at this point: +.RS +.TP 15 +.B url_effective +The URL that was fetched last. This is mostly meaningful if you've told curl +to follow location: headers. +.TP +.B http_code +The numerical code that was found in the last retrieved HTTP(S) page. +.TP +.B time_total +The total time, in seconds, that the full operation lasted. The time will be +displayed with millisecond resolution. +.TP +.B time_namelookup +The time, in seconds, it took from the start until the name resolving was +completed. +.TP +.B time_connect +The time, in seconds, it took from the start until the connect to the remote +host (or proxy) was completed. +.TP +.B time_pretransfer +The time, in seconds, it took from the start until the file transfer is just +about to begin. This includes all pre-transfer commands and negotiations that +are specific to the particular protocol(s) involved. +.TP +.B time_starttransfer +The time, in seconds, it took from the start until the first byte is just about +to be transfered. This includes time_pretransfer and also the time the +server needs to calculate the result. +.TP +.B size_download +The total amount of bytes that were downloaded. +.TP +.B size_upload +The total amount of bytes that were uploaded. +.TP +.B size_header +The total amount of bytes of the downloaded headers. +.TP +.B size_request +The total amount of bytes that were sent in the HTTP request. +.TP +.B speed_download +The average download speed that curl measured for the complete download. +.TP +.B speed_upload +The average upload speed that curl measured for the complete upload. +.TP +.B content_type +The Content-Type of the requested document, if there was any. (Added in 7.9.5) +.RE + +If this option is used several times, the last one will be used. +.IP "-x/--proxy <proxyhost[:port]>" +Use specified HTTP proxy. If the port number is not specified, it is assumed +at port 1080. + +\fBNote\fP that all operations that are performed over a HTTP proxy will +transparantly be converted to HTTP. It means that certain protocol specific +operations might not be available. This is not the case if you can tunnel +through the proxy, as done with the \fI-p/--proxytunnel\fP option. + +If this option is used several times, the last one will be used. +.IP "-X/--request <command>" +(HTTP) +Specifies a custom request to use when communicating with the HTTP server. +The specified request will be used instead of the standard GET. Read the +HTTP 1.1 specification for details and explanations. + +(FTP) +Specifies a custom FTP command to use instead of LIST when doing file lists +with ftp. + +If this option is used several times, the last one will be used. +.IP "-y/--speed-time <time>" +If a download is slower than speed-limit bytes per second during a speed-time +period, the download gets aborted. If speed-time is used, the default +speed-limit will be 1 unless set with -y. + +If this option is used several times, the last one will be used. +.IP "-Y/--speed-limit <speed>" +If a download is slower than this given speed, in bytes per second, for +speed-time seconds it gets aborted. speed-time is set with -Y and is 30 if +not set. + +If this option is used several times, the last one will be used. +.IP "-z/--time-cond <date expression>" +(HTTP) +Request to get a file that has been modified later than the given time and +date, or one that has been modified before that time. The date expression can +be all sorts of date strings or if it doesn't match any internal ones, it +tries to get the time from a given file name instead! See the +.BR "GNU date(1)" +or +.BR "curl_getdate(3)" +man pages for date expression details. + +Start the date expression with a dash (-) to make it request for a document +that is older than the given date/time, default is a document that is newer +than the specified date/time. + +If this option is used several times, the last one will be used. +.IP "-3/--sslv3" +(HTTPS) +Forces curl to use SSL version 3 when negotiating with a remote SSL server. +.IP "-2/--sslv2" +(HTTPS) +Forces curl to use SSL version 2 when negotiating with a remote SSL server. +.IP "-0/--http1.0" +(HTTP) Forces curl to issue its requests using HTTP 1.0 instead of using its +internally preferred: HTTP 1.1. +.IP "-#/--progress-bar" +Make curl display progress information as a progress bar instead of the +default statistics. + +If this option is used twice, the second will again disable the progress bar. +.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 +Default config file. + +.SH ENVIRONMENT +.IP "http_proxy [protocol://]<host>[:port]" +Sets proxy server to use for HTTP. +.IP "HTTPS_PROXY [protocol://]<host>[:port]" +Sets proxy server to use for HTTPS. +.IP "FTP_PROXY [protocol://]<host>[:port]" +Sets proxy server to use for FTP. +.IP "GOPHER_PROXY [protocol://]<host>[:port]" +Sets proxy server to use for GOPHER. +.IP "ALL_PROXY [protocol://]<host>[:port]" +Sets proxy server to use if no protocol-specific proxy is set. +.IP "NO_PROXY <comma-separated list of hosts>" +list of host names that shouldn't go through any proxy. If set to a asterisk +'*' only, it matches all hosts. +.SH EXIT CODES +There exists a bunch of different error codes and their corresponding error +messages that may appear during bad conditions. At the time of this writing, +the exit codes are: +.IP 1 +Unsupported protocol. This build of curl has no support for this protocol. +.IP 2 +Failed to initialize. +.IP 3 +URL malformat. The syntax was not correct. +.IP 4 +URL user malformatted. The user-part of the URL syntax was not correct. +.IP 5 +Couldn't resolve proxy. The given proxy host could not be resolved. +.IP 6 +Couldn't resolve host. The given remote host was not resolved. +.IP 7 +Failed to connect to host. +.IP 8 +FTP weird server reply. The server sent data curl couldn't parse. +.IP 9 +FTP access denied. The server denied login. +.IP 10 +FTP user/password incorrect. Either one or both were not accepted by the +server. +.IP 11 +FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request. +.IP 12 +FTP weird USER reply. Curl couldn't parse the reply sent to the USER request. +.IP 13 +FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request. +.IP 14 +FTP weird 227 format. Curl couldn't parse the 227-line the server sent. +.IP 15 +FTP can't get host. Couldn't resolve the host IP we got in the 227-line. +.IP 16 +FTP can't reconnect. Couldn't connect to the host we got in the 227-line. +.IP 17 +FTP couldn't set binary. Couldn't change transfer method to binary. +.IP 18 +Partial file. Only a part of the file was transfered. +.IP 19 +FTP couldn't RETR file. The RETR command failed. +.IP 20 +FTP write error. The transfer was reported bad by the server. +.IP 21 +FTP quote error. A quote command returned error from the server. +.IP 22 +HTTP not found. The requested page was not found. This return code only +appears if --fail is used. +.IP 23 +Write error. Curl couldn't write data to a local filesystem or similar. +.IP 24 +Malformat user. User name badly specified. +.IP 25 +FTP couldn't STOR file. The server denied the STOR operation. +.IP 26 +Read error. Various reading problems. +.IP 27 +Out of memory. A memory allocation request failed. +.IP 28 +Operation timeout. The specified time-out period was reached according to the +conditions. +.IP 29 +FTP couldn't set ASCII. The server returned an unknown reply. +.IP 30 +FTP PORT failed. The PORT command failed. +.IP 31 +FTP couldn't use REST. The REST command failed. +.IP 32 +FTP couldn't use SIZE. The SIZE command failed. The command is an extension +to the original FTP spec RFC 959. +.IP 33 +HTTP range error. The range "command" didn't work. +.IP 34 +HTTP post error. Internal post-request generation error. +.IP 35 +SSL connect error. The SSL handshaking failed. +.IP 36 +FTP bad download resume. Couldn't continue an earlier aborted download. +.IP 37 +FILE couldn't read file. Failed to open the file. Permissions? +.IP 38 +LDAP cannot bind. LDAP bind operation failed. +.IP 39 +LDAP search failed. +.IP 40 +Library not found. The LDAP library was not found. +.IP 41 +Function not found. A required LDAP function was not found. +.IP 42 +Aborted by callback. An application told curl to abort the operation. +.IP 43 +Internal error. A function was called with a bad parameter. +.IP 44 +Internal error. A function was called in a bad order. +.IP 45 +Interface error. A specified outgoing interface could not be used. +.IP 46 +Bad password entered. An error was signaled when the password was entered. +.IP 47 +Too many redirects. When following redirects, curl hit the maximum amount. +.IP 48 +Unknown TELNET option specified. +.IP 49 +Malformed telnet option. +.IP 51 +The remote peer's SSL certificate wasn't ok +.IP 52 +The server didn't reply anything, which here is considered an error. +.IP XX +There will appear more error codes here in future releases. The existing ones +are meant to never change. +.SH BUGS +If you do find bugs, mail them to curl-bug@haxx.se. +.SH AUTHORS / CONTRIBUTORS +Daniel Stenberg is the main author, but the whole list of contributors is +found in the separate THANKS file. +.SH WWW +http://curl.haxx.se +.SH FTP +ftp://ftp.sunet.se/pub/www/utilities/curl/ +.SH "SEE ALSO" +.BR ftp (1), +.BR wget (1), +.BR snarf (1) diff --git a/Build/source/libs/curl/docs/curl.html b/Build/source/libs/curl/docs/curl.html new file mode 100644 index 00000000000..49833d6b531 --- /dev/null +++ b/Build/source/libs/curl/docs/curl.html @@ -0,0 +1,1082 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl - transfer a URL + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>curl</B> <B>[options]</B> <I>[URL...]</I> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + <B>curl</B> is a client to get documents/files from or send docu + ments to a server, using any of the supported protocols + (HTTP, HTTPS, FTP, GOPHER, DICT, TELNET, LDAP or FILE). The + command is designed to work without user interaction or any + kind of interactivity. + + curl offers a busload of useful tricks like proxy support, + user authentication, ftp upload, HTTP post, SSL (https:) + connections, cookies, file transfer resume and more. + + +</PRE> +<H2>URL</H2><PRE> + The URL syntax is protocol dependent. You'll find a detailed + description in RFC 2396. + + You can specify multiple URLs or parts of URLs by writing + part sets within braces as in: + + http://site.{one,two,three}.com + + or you can get sequences of alphanumeric series by using [] + as in: + + ftp://ftp.numericals.com/file[1-100].txt + ftp://ftp.numericals.com/file[001-100].txt (with leading + zeros) + ftp://ftp.letters.com/file[a-z].txt + + It is possible to specify up to 9 sets or series for a URL, + but no nesting is supported at the moment: + + http://www.any.org/archive[1996-1999]/vol + ume[1-4]part{a,b,c,index}.html + + You can specify any amount of URLs on the command line. They + will be fetched in a sequential manner in the specified + order. + + Curl will attempt to re-use connections for multiple file + transfers, so that getting many files from the same server + will not do multiple connects / handshakes. This improves + speed. Of course this is only done on files specified on a + single command line and cannot be used between separate curl + invokes. + + + +</PRE> +<H2>OPTIONS</H2><PRE> + -a/--append + (FTP) When used in a ftp upload, this will tell curl to + append to the target file instead of overwriting it. If + the file doesn't exist, it will be created. + + If this option is used twice, the second one will dis + able append mode again. + + -A/--user-agent <agent string> + (HTTP) Specify the User-Agent string to send to the + HTTP server. Some badly done CGIs fail if its not set + to "Mozilla/4.0". To encode blanks in the string, sur + round the string with single quote marks. This can + also be set with the -H/--header flag of course. + + If this option is set more than once, the last one will + be the one that's used. + + -b/--cookie <name=data> + (HTTP) Pass the data to the HTTP server as a cookie. It + is supposedly the data previously received from the + server in a "Set-Cookie:" line. The data should be in + the format "NAME1=VALUE1; NAME2=VALUE2". + + If no '=' letter is used in the line, it is treated as + a filename to use to read previously stored cookie + lines from, which should be used in this session if + they match. Using this method also activates the + "cookie parser" which will make curl record incoming + cookies too, which may be handy if you're using this in + combination with the -L/--location option. The file + format of the file to read cookies from should be plain + HTTP headers or the Netscape/Mozilla cookie file for + mat. + + <B>NOTE</B> that the file specified with -b/--cookie is only + used as input. No cookies will be stored in the file. + To store cookies, save the HTTP headers to a file using + -D/--dump-header! + + If this option is set more than once, the last one will + be the one that's used. + + -B/--use-ascii + Use ASCII transfer when getting an FTP file or LDAP + info. For FTP, this can also be enforced by using an + URL that ends with ";type=A". This option causes data + sent to stdout to be in text mode for win32 systems. + + If this option is used twice, the second one will dis + able ASCII usage. + + --ciphers <list of ciphers> + (SSL) Specifies which ciphers to use in the connection. + The list of ciphers must be using valid ciphers. Read + up on SSL cipher list details on this URL: + <I>http://www.openssl.org/docs/apps/ciphers.html</I> <I>(Option</I> + <I>added</I> <I>in</I> <I>curl</I> <I>7.9)</I> + + If this option is used severl times, the last one will + override the others. + + --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</I> option. + + If this option is used several times, the last one will + be used. + + -c/--cookie-jar <file name> + Specify to which file you want curl to write all cook + ies after a completed operation. Curl writes all cook + ies previously read from a specified file as well as + all cookies received from remote server(s). If no cook + ies are known, no file will be written. The file will + be written using the Netscape cookie file format. If + you set the file name to a single dash, "-", the cook + ies will be written to stdout. (Option added in curl + 7.9) + + If this option is used several times, the last specfied + file name will be used. + + -C/--continue-at <offset> + Continue/Resume a previous file transfer at the given + offset. The given offset is the exact number of bytes + that will be skipped counted from the beginning of the + source file before it is transfered to the destination. + If used with uploads, the ftp server command SIZE will + not be used by curl. + + Use "-C -" to tell curl to automatically find out + where/how to resume the transfer. It then uses the + given output/input files to figure that out. + + If this option is used several times, the last one will + be used. + + -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 but + ton. Note that the data is sent exactly as specified + with no extra processing (with all newlines cut off). + The data is expected to be "url-encoded". This will + cause curl to pass the data to the server using the + content-type application/x-www-form-urlencoded. Compare + to -F. If more than one -d/--data option is used on the + same command line, the data pieces specified will be + merged together with a separating &-letter. Thus, using + '-d name=daniel -d skill=lousy' would generate a post + chunk that looks like 'name=daniel&skill=lousy'. + + If you start the data with the letter @, the rest + should be a file name to read the data from, or - if + you want curl to read the data from stdin. The con + tents of the file must already be url-encoded. Multiple + files can also be specified. Posting data from a file + named 'foobar' would thus be done with "--data @foo + bar". + + To post data purely binary, you should instead use the + --data-binary option. + + -d/--data is the same as --data-ascii. + + If this option is used several times, the ones follow + ing the first will append data. + + --data-ascii <data> + (HTTP) This is an alias for the -d/--data option. + + If this option is used several times, the ones follow + ing the first will append data. + + --data-binary <data> + (HTTP) This posts data in a similar manner as --data- + ascii does, although when using this option the entire + context of the posted data is kept as-is. If you want + to post a binary file without the strip-newlines fea + ture of the --data-ascii option, this is for you. + + If this option is used several times, the ones follow + ing the first will append data. + + --disable-epsv + (FTP) Tell curl to disable the use of the EPSV command + when doing passive FTP downloads. Curl will normally + always first attempt to use EPSV before PASV, but with + this option, it will not try using EPSV. + + IF this option is used several times, each occurrence + will toggle this on/off. + + -D/--dump-header <file> + (HTTP/FTP) Write the HTTP headers to this file. Write + the FTP file info to this file if -I/--head is used. + + This option is handy to use when you want to store the + cookies that a HTTP site sends to you. The cookies + could then be read in a second curl invoke by using the + -b/--cookie option! + + If this option is used several times, the last one will + be used. + + -e/--referer <URL> + (HTTP) Sends the "Referer Page" information to the HTTP + server. This can also be set with the -H/--header flag + of course. When used with <I>-L/--location</I> you can append + ";auto" to the referer URL to make curl automatically + set the previous URL when it follows a Location: + header. The ";auto" string can be used alone, even if + you don't set an initial referer. + + If this option is used several times, the last one will + be used. + + --egd-file <file> + (HTTPS) Specify the path name to the Entropy Gathering + Daemon socket. The socket is used to seed the random + engine for SSL connections. See also the <I>--random-file</I> + option. + + -E/--cert <certificate[:password]> + (HTTPS) Tells curl to use the specified certificate + file when getting a file with HTTPS. The certificate + must be in PEM format. If the optional password isn't + specified, it will be queried for on the terminal. Note + that this certificate is the private key and the pri + vate certificate concatenated! + + If this option is used several times, the last one will + be used. + + --cacert <CA certificate> + (HTTPS) Tells curl to use the specified certificate + file to verify the peer. The certificate must be in PEM + format. + + If this option is used several times, the last one will + be used. + + -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 doc + ument, it returns a HTML document stating so (which + often also describes why and more). This flag will pre + vent curl from outputting that and fail silently + instead. + + If this option is used twice, the second will again + disable silent failure. + + -F/--form <name=content> + (HTTP) This lets curl emulate a filled in form in which + a user has pressed the submit button. This causes curl + to POST data using the content-type multipart/form-data + according to RFC1867. This enables uploading of binary + files etc. To force the 'content' part to be be a file, + prefix the file name with an @ sign. To just get the + content part from a file, prefix the file name with the + letter <. The difference between @ and < is then that @ + makes a file get attached in the post as a file upload, + while the < makes a text field and just get the con + tents for that text field from a file. + + Example, to send your password file to the server, + where 'password' is the name of the form-field to which + /etc/passwd will be the input: + + <B>curl</B> -F password=@/etc/passwd www.mypasswords.com + + To read the file's content from stdin insted of a file, + use - where the file name should've been. This goes for + both @ and < constructs. + + This option can be used multiple times. + + -g/--globoff + This option switches off the "URL globbing parser". + When you set this option, you can specify URLs that + contain the letters {}[] without having them being + interpreted by curl itself. Note that these letters are + not normal legal URL contents but they should be + encoded according to the URI standard. (Option added in + curl 7.6) + + -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) + + -h/--help + Usage help. + + -H/--header <header> + (HTTP) Extra header to use when getting a web page. You + may specify any number of extra headers. Note that if + you should add a custom header that has the same name + as one of the internal ones curl would use, your exter + nally set header will be used instead of the internal + one. This allows you to make even trickier stuff than + curl would normally do. You should not replace inter + nally 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. + + -i/--include + (HTTP) Include the HTTP-header in the output. The HTTP- + header includes things like server-name, date of the + document, HTTP-version and more... + + If this option is used twice, the second will again + disable header include. + + --interface <name> + Perform an operation using a specified interface. You + can enter interface name, IP address or host name. An + example could look like: + + <B>curl</B> <B>--interface</B> <B>eth0:1</B> <B>http://www.netscape.com/</B> + + If this option is used several times, the last one will + be used. + + -I/--head + (HTTP/FTP) Fetch the HTTP-header only! HTTP-servers + feature the command HEAD which this uses to get nothing + but the header of a document. When used on a FTP file, + curl displays the file size only. + + If this option is used twice, the second will again + disable header only. + + --krb4 <level> + (FTP) Enable kerberos4 authentication and use. The + level must be entered and should be one of 'clear', + 'safe', 'confidential' or 'private'. Should you use a + level that is not one of these, 'private' will instead + be used. + + If this option is used several times, the last one will + be used. + + -K/--config <config file> + Specify which config file to read curl arguments from. + The config file is a text file in which command line + arguments can be written which then will be used as if + they were written on the actual command line. Options + and their parameters must be specified on the same con + fig file line. If the parameter is to contain white + spaces, the parameter must be inclosed within quotes. + If the first column of a config line is a '#' charac + ter, the rest of the line will be treated as a comment. + + Specify the filename as '-' to make curl read the file + from stdin. + + This option can be used multiple times. + + -l/--list-only + (FTP) When listing an FTP directory, this switch forces + a name-only view. Especially useful if you want to + machine-parse the contents of an FTP directory since + the normal directory view doesn't use a standard look + or format. + + If this option is used twice, the second will again + disable list only. + + -L/--location + (HTTP/HTTPS) If the server reports that the requested + page has a different location (indicated with the + header line Location:) this flag will let curl attempt + to reattempt the get on the new place. If used together + with -i or -I, headers from all requested pages will be + shown. If this flag is used when making a HTTP POST, + curl will automatically switch to GET after the initial + POST has been done. + + If this option is used twice, the second will again + disable location following. + + -m/--max-time <seconds> + Maximum time in seconds that you allow the whole opera + tion 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</I> option. + + If this option is used several times, the last one will + be used. + + -M/--manual + Manual. Display the huge help text. + + -n/--netrc + Makes curl scan the <I>.netrc</I> file in the user's home + directory for login name and password. This is typi + cally used for ftp on unix. If used with http, curl + will enable user authentication. See <B>netrc(4)</B> or <B>ftp(1)</B> + for details on the file format. Curl will not complain + if that file hasn't the right permissions (it should + not be world nor group readable). The environment vari + able "HOME" is used to find the home directory. + + A quick and very simple example of how to setup a + <I>.netrc</I> to allow curl to ftp to the machine + host.domain.com with user name 'myself' and password + 'secret' should look similar to: + + <B>machine</B> <B>host.domain.com</B> <B>login</B> <B>myself</B> <B>password</B> <B>secret</B> + + If this option is used twice, the second will again + disable netrc usage. + + -N/--no-buffer + Disables the buffering of the output stream. In normal + work situations, curl will use a standard buffered out + put stream that will have the effect that it will out + put the data in chunks, not necessarily exactly when + the data arrives. Using this option will disable that + buffering. + + If this option is used twice, the second will again + switch on buffering. + + -o/--output <file> + Write output to <file> instead of stdout. If you are + using {} or [] to fetch multiple documents, you can use + '#' followed by a number in the <file> specifier. That + variable will be replaced with the current string for + the URL being fetched. Like in: + + curl http://{one,two}.site.com -o "file_#1.txt" + + or use several variables like: + + curl http://{site,host}.host[1-5].com -o "#1_#2" + + You may use this option as many times as you have num + ber of URLs. + + -O/--remote-name + Write output to a local file named like the remote file + we get. (Only the file part of the remote file is used, + the path is cut off.) + + You may use this option as many times as you have num + ber of URLs. + + -p/--proxytunnel + When an HTTP proxy is used, this option will cause non- + HTTP protocols to attempt to tunnel through the proxy + instead of merely using it to do HTTP-like operations. + The tunnel approach is made with the HTTP proxy CONNECT + request and requires that the proxy allows direct con + nect to the remote port number curl wants to tunnel + through to. + + If this option is used twice, the second will again + disable proxy tunnel. + + -P/--ftpport <address> + (FTP) Reverses the initiator/listener roles when con + necting with ftp. This switch makes Curl use the PORT + command instead of PASV. In practice, PORT tells the + server to connect to the client's specified address and + port, while PASV asks the server for an ip address and + port to connect to. <address> should be one of: + + <B>interface</B> i.e "eth0" to specify which interface's IP + address you want to use (Unix only) + + <B>IP</B> <B>address</B> i.e "192.168.10.1" to specify exact IP num + ber + + <B>host</B> <B>name</B> i.e "my.host.domain" to specify machine + + <B>-</B> (any single-letter string) to make it pick + the machine's default + + If this option is used several times, the last one will be + used. + + -q If used as the first parameter on the command line, the + <I>$HOME/.curlrc</I> file will not be read and used as a con + fig file. + + -Q/--quote <comand> + (FTP) Send an arbitrary command to the remote FTP + server, by using the QUOTE command of the server. Not + all servers support this command, and the set of QUOTE + commands are server specific! Quote commands are sent + BEFORE the transfer is taking place. To make commands + take place after a successful transfer, prefix them + with a dash '-'. You may specify any amount of commands + to be run before and after the transfer. If the server + returns failure for one of the commands, the entire + operation will be aborted. + + This option can be used multiple times. + + --random-file <file> + (HTTPS) Specify the path name to file containing what + will be considered as random data. The data is used to + seed the random engine for SSL connections. See also + the <I>--edg-file</I> option. + + -r/--range <range> + (HTTP/FTP) Retrieve a byte range (i.e a partial docu + ment) from a HTTP/1.1 or FTP server. Ranges can be + specified in a number of ways. + + <B>0-499</B> specifies the first 500 bytes + + <B>500-999</B> specifies the second 500 bytes + + <B>-500</B> specifies the last 500 bytes + + <B>9500</B> specifies the bytes from offset 9500 and for + ward + + <B>0-0,-1</B> specifies the first and last byte only(*)(H) + + <B>500-700,600-799</B> + specifies 300 bytes from offset 500(H) + + <B>100-199,500-599</B> + specifies two separate 100 bytes ranges(*)(H) + + (*) = NOTE that this will cause the server to reply with a + multipart response! + + You should also be aware that many HTTP/1.1 servers do not + have this feature enabled, so that when you attempt to get a + range, you'll instead get the whole document. + + FTP range downloads only support the simple syntax 'start- + stop' (optionally with one of the numbers omitted). It + depends on the non-RFC command SIZE. + + If this option is used several times, the last one will be + used. + + -R/--remote-time + When used, this will make libcurl attempt to figure out + the timestamp of the remote file, and if that is avail + able make the local file get that same timestamp. + + If this option is used twice, the second time disables + this again. + + -s/--silent + Silent mode. Don't show progress meter or error mes + sages. Makes Curl mute. + + If this option is used twice, the second will again + disable mute. + + -S/--show-error + When used with -s it makes curl show error message if + it fails. + + If this option is used twice, the second will again + disable show error. + + -t/--telnet-option <OPT=val> + Pass options to the telnet protocol. Supported options + are: + + TTYPE=<term> Sets the terminal type. + + XDISPLOC=<X display> Sets the X display location. + + NEW_ENV=<var,val> Sets an environment variable. + + -T/--upload-file <file> + This transfers the specified local file to the remote + URL. If there is no file part in the specified URL, + Curl will append the local file name. NOTE that you + must use a trailing / on the last directory to really + prove to Curl that there is no file name or curl will + think that your last directory name is the remote file + name to use. That will most likely cause the upload + operation to fail. If this is used on a http(s) server, + the PUT command will be used. + + Use the file name "-" (a single dash) to use stdin + instead of a given file. + + If this option is used several times, the last one will + be used. + + -u/--user <user:password> + Specify user and password to use when fetching. See + README.curl for detailed examples of how to use this. + If no password is specified, curl will ask for it + interactively. + + If this option is used several times, the last one will + be used. + + -U/--proxy-user <user:password> + Specify user and password to use for Proxy authentica + tion. If no password is specified, curl will ask for it + interactively. + + If this option is used several times, the last one will + be used. + + --url <URL> + Specify a URL to fetch. This option is mostly handy + when you want to specify URL(s) in a config file. + + This option may be used any number of times. To control + where this URL is written, use the <I>-o</I> or the <I>-O</I> + options. + + -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. + + If this option is used twice, the second will again + disable verbose. + + -V/--version + Displays the full version of curl, libcurl and other + 3rd party libraries linked with the executable. + + -w/--write-out <format> + Defines what to display after a completed and success + ful operation. The format is a string that may contain + plain text mixed with any number of variables. The + string can be specified as "string", to get read from a + particular file you specify it "@filename" and to tell + curl to read the format from stdin you write "@-". + + The variables present in the output format will be sub + stituted by the value or text that curl thinks fit, as + described below. All variables are specified like + %{variable_name} and to output a normal % you just + write them like %%. You can output a newline by using + \n, a carriage return with \r and a tab space with \t. + + <B>NOTE:</B> The %-letter is a special letter in the + win32-environment, where all occurrences of % must be + doubled when using this option. + + Available variables are at this point: + + <B>url_effective</B> The URL that was fetched last. This is + mostly meaningful if you've told curl to + follow location: headers. + + <B>http_code</B> The numerical code that was found in the + last retrieved HTTP(S) page. + + <B>time_total</B> The total time, in seconds, that the + full operation lasted. The time will be + displayed with millisecond resolution. + + <B>time_namelookup</B> + The time, in seconds, it took from the + start until the name resolving was com + pleted. + + <B>time_connect</B> The time, in seconds, it took from the + start until the connect to the remote + host (or proxy) was completed. + + <B>time_pretransfer</B> + The time, in seconds, it took from the + start until the file transfer is just + about to begin. This includes all pre- + transfer commands and negotiations that + are specific to the particular proto + col(s) involved. + + <B>time_starttransfer</B> + The time, in seconds, it took from the + start until the first byte is just about + to be transfered. This includes + time_pretransfer and also the time the + server needs to calculate the result. + + <B>size_download</B> The total amount of bytes that were + downloaded. + + <B>size_upload</B> The total amount of bytes that were + uploaded. + + <B>size_header</B> The total amount of bytes of the down + loaded headers. + + <B>size_request</B> The total amount of bytes that were sent + in the HTTP request. + + <B>speed_download</B> The average download speed that curl + measured for the complete download. + + <B>speed_upload</B> The average upload speed that curl mea + sured for the complete upload. + + <B>content_type</B> The Content-Type of the requested docu + ment, if there was any. (Added in 7.9.5) + + If this option is used several times, the last one will be + used. + + -x/--proxy <proxyhost[:port]> + Use specified HTTP proxy. If the port number is not + specified, it is assumed at port 1080. + + <B>Note</B> that all operations that are performed over a HTTP + proxy will transparantly be converted to HTTP. It means + that certain protocol specific operations might not be + available. This is not the case if you can tunnel + through the proxy, as done with the <I>-p/--proxytunnel</I> + option. + + If this option is used several times, the last one will + be used. + + -X/--request <command> + (HTTP) Specifies a custom request to use when communi + cating with the HTTP server. The specified request + will be used instead of the standard GET. Read the HTTP + 1.1 specification for details and explanations. + + (FTP) Specifies a custom FTP command to use instead of + LIST when doing file lists with ftp. + + If this option is used several times, the last one will + be used. + + -y/--speed-time <time> + If a download is slower than speed-limit bytes per sec + ond 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. + + If this option is used several times, the last one will + be used. + + -Y/--speed-limit <speed> + If a download is slower than this given speed, in bytes + per second, for speed-time seconds it gets aborted. + speed-time is set with -Y and is 30 if not set. + + If this option is used several times, the last one will + be used. + + -z/--time-cond <date expression> + (HTTP) Request to get a file that has been modified + later than the given time and date, or one that has + been modified before that time. The date expression can + be all sorts of date strings or if it doesn't match any + internal ones, it tries to get the time from a given + file name instead! See the <B>GNU</B> <B>date(1)</B> or <B>curl_get</B> + <B>date(3)</B> man pages for date expression details. + + Start the date expression with a dash (-) to make it + request for a document that is older than the given + date/time, default is a document that is newer than the + specified date/time. + + If this option is used several times, the last one will + be used. + + -3/--sslv3 + (HTTPS) Forces curl to use SSL version 3 when negotiat + ing with a remote SSL server. + + -2/--sslv2 + (HTTPS) Forces curl to use SSL version 2 when negotiat + ing with a remote SSL server. + + -0/--http1.0 + (HTTP) Forces curl to issue its requests using HTTP 1.0 + instead of using its internally preferred: HTTP 1.1. + + -#/--progress-bar + Make curl display progress information as a progress + bar instead of the default statistics. + + If this option is used twice, the second will again + disable the progress bar. + + --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. + + --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. + + +</PRE> +<H2>FILES</H2><PRE> + <I>~/.curlrc</I> + Default config file. + + +</PRE> +<H2>ENVIRONMENT</H2><PRE> + http_proxy [protocol://]<host>[:port] + Sets proxy server to use for HTTP. + + HTTPS_PROXY [protocol://]<host>[:port] + Sets proxy server to use for HTTPS. + + FTP_PROXY [protocol://]<host>[:port] + Sets proxy server to use for FTP. + + GOPHER_PROXY [protocol://]<host>[:port] + Sets proxy server to use for GOPHER. + + ALL_PROXY [protocol://]<host>[:port] + Sets proxy server to use if no protocol-specific proxy + is set. + + NO_PROXY <comma-separated list of hosts> + list of host names that shouldn't go through any proxy. + If set to a asterisk + + +</PRE> +<H2>EXIT CODES</H2><PRE> + There exists a bunch of different error codes and their cor + responding error messages that may appear during bad condi + tions. At the time of this writing, the exit codes are: + + 1 Unsupported protocol. This build of curl has no support + for this protocol. + + 2 Failed to initialize. + + 3 URL malformat. The syntax was not correct. + + 4 URL user malformatted. The user-part of the URL syntax + was not correct. + + 5 Couldn't resolve proxy. The given proxy host could not + be resolved. + + 6 Couldn't resolve host. The given remote host was not + resolved. + + 7 Failed to connect to host. + + 8 FTP weird server reply. The server sent data curl + couldn't parse. + + 9 FTP access denied. The server denied login. + + 10 FTP user/password incorrect. Either one or both were + not accepted by the server. + + 11 FTP weird PASS reply. Curl couldn't parse the reply + sent to the PASS request. + + 12 FTP weird USER reply. Curl couldn't parse the reply + sent to the USER request. + + 13 FTP weird PASV reply, Curl couldn't parse the reply + sent to the PASV request. + + 14 FTP weird 227 format. Curl couldn't parse the 227-line + the server sent. + + 15 FTP can't get host. Couldn't resolve the host IP we got + in the 227-line. + + 16 FTP can't reconnect. Couldn't connect to the host we + got in the 227-line. + + 17 FTP couldn't set binary. Couldn't change transfer + method to binary. + + 18 Partial file. Only a part of the file was transfered. + + 19 FTP couldn't RETR file. The RETR command failed. + + 20 FTP write error. The transfer was reported bad by the + server. + + 21 FTP quote error. A quote command returned error from + the server. + + 22 HTTP not found. The requested page was not found. This + return code only appears if --fail is used. + + 23 Write error. Curl couldn't write data to a local + filesystem or similar. + + 24 Malformat user. User name badly specified. + + 25 FTP couldn't STOR file. The server denied the STOR + operation. + + 26 Read error. Various reading problems. + + 27 Out of memory. A memory allocation request failed. + + 28 Operation timeout. The specified time-out period was + reached according to the conditions. + + 29 FTP couldn't set ASCII. The server returned an unknown + reply. + + 30 FTP PORT failed. The PORT command failed. + + 31 FTP couldn't use REST. The REST command failed. + + 32 FTP couldn't use SIZE. The SIZE command failed. The + command is an extension to the original FTP spec RFC + 959. + + 33 HTTP range error. The range "command" didn't work. + + 34 HTTP post error. Internal post-request generation + error. + + 35 SSL connect error. The SSL handshaking failed. + + 36 FTP bad download resume. Couldn't continue an earlier + aborted download. + + 37 FILE couldn't read file. Failed to open the file. Per + missions? + + 38 LDAP cannot bind. LDAP bind operation failed. + + 39 LDAP search failed. + + 40 Library not found. The LDAP library was not found. + + 41 Function not found. A required LDAP function was not + found. + + 42 Aborted by callback. An application told curl to abort + the operation. + + 43 Internal error. A function was called with a bad param + eter. + + 44 Internal error. A function was called in a bad order. + + 45 Interface error. A specified outgoing interface could + not be used. + + 46 Bad password entered. An error was signaled when the + password was entered. + + 47 Too many redirects. When following redirects, curl hit + the maximum amount. + + 48 Unknown TELNET option specified. + + 49 Malformed telnet option. + + 51 The remote peer's SSL certificate wasn't ok + 52 The server didn't reply anything, which here is consid + ered an error. + + XX There will appear more error codes here in future + releases. The existing ones are meant to never change. + + +</PRE> +<H2>BUGS</H2><PRE> + If you do find bugs, mail them to curl-bug@haxx.se. + + +</PRE> +<H2>AUTHORS / CONTRIBUTORS</H2><PRE> + Daniel Stenberg is the main author, but the whole list of + contributors is found in the separate THANKS file. + + +</PRE> +<H2>WWW</H2><PRE> + http://curl.haxx.se + + +</PRE> +<H2>FTP</H2><PRE> + ftp://ftp.sunet.se/pub/www/utilities/curl/ + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>ftp(1)</B>, <B>wget(1)</B>, <B>snarf(1)</B> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/examples/Makefile.am b/Build/source/libs/curl/docs/examples/Makefile.am new file mode 100644 index 00000000000..9f641b58288 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/Makefile.am @@ -0,0 +1,13 @@ +# +# $Id: Makefile.am,v 1.17 2002/01/25 10:07:07 bagder Exp $ +# + +AUTOMAKE_OPTIONS = foreign no-dependencies + +EXTRA_DIST = README curlgtk.c sepheaders.c simple.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 + +all: + @echo "done" diff --git a/Build/source/libs/curl/docs/examples/Makefile.example b/Build/source/libs/curl/docs/examples/Makefile.example new file mode 100644 index 00000000000..97ef1cb984c --- /dev/null +++ b/Build/source/libs/curl/docs/examples/Makefile.example @@ -0,0 +1,42 @@ +############################################################################# +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# $Id: Makefile.example,v 1.2 2001/05/15 12:56:38 bagder Exp $ +# + +# What to call the final executable +TARGET = example + +# Which object files that the executable consists of +OBJS= ftpget.o + +# What compiler to use +CC = gcc + +# Compiler flags, -g for debug, -c to make an object file +CFLAGS = -c -g + +# This should point to a directory that holds libcurl, if it isn't +# in the system's standard lib dir +# We also set a -L to include the directory where we have the openssl +# libraries +LDFLAGS = -L/home/dast/lib -L/usr/local/ssl/lib + +# We need -lcurl for the curl stuff +# We need -lsocket and -lnsl when on Solaris +# We need -lssl and -lcrypto when using libcurl with SSL support +# We need -ldl for dlopen() if that is in libdl +# We need -lpthread for the pthread example +LIBS = -lcurl -lsocket -lnsl -lssl -lcrypto -dl + +# Link the target with all objects and libraries +$(TARGET) : $(OBJS) + $(CC) $(LDFLAGS) $(LIBS) -o $(TARGET) $(OBJS) + +# Compile the source files into object files +ftpget.o : ftpget.c + $(CC) $(CFLAGS) $< diff --git a/Build/source/libs/curl/docs/examples/Makefile.in b/Build/source/libs/curl/docs/examples/Makefile.in new file mode 100644 index 00000000000..19cbc8c39f3 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/Makefile.in @@ -0,0 +1,236 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# $Id: Makefile.am,v 1.17 2002/01/25 10:07:07 bagder Exp $ +# + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IPV6_ENABLED = @IPV6_ENABLED@ +KRB4_ENABLED = @KRB4_ENABLED@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +NROFF = @NROFF@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENSSL_ENABLED = @OPENSSL_ENABLED@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKGADD_NAME = @PKGADD_NAME@ +PKGADD_PKG = @PKGADD_PKG@ +PKGADD_VENDOR = @PKGADD_VENDOR@ +RANDOM_FILE = @RANDOM_FILE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VERSIONNUM = @VERSIONNUM@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +AUTOMAKE_OPTIONS = foreign no-dependencies + +EXTRA_DIST = README curlgtk.c sepheaders.c simple.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 + +subdir = docs/examples +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/lib/config.h \ + $(top_builddir)/src/config.h \ + $(top_builddir)/tests/server/config.h +CONFIG_CLEAN_FILES = +depcomp = +DIST_SOURCES = +DIST_COMMON = README Makefile.am Makefile.in +all: all-am + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign docs/examples/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: +tags: TAGS +TAGS: + + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool uninstall uninstall-am uninstall-info-am + + +all: + @echo "done" +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Build/source/libs/curl/docs/examples/README b/Build/source/libs/curl/docs/examples/README new file mode 100644 index 00000000000..46f7321fb99 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/README @@ -0,0 +1,22 @@ +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 +advantage of libcurl. + +If you end up with other small but still useful example sources, please mail +them for submission in future packages and on the web site. + +The Makefile.example is an example makefile that could be used to build these +examples. Just edit the file according to your system and requirements first. + +Most examples should build fine using a command line like this: + + $ gcc `curl-config --cflags` `curl-config --libs` -o example example.c + +Try the php/examples/ directory for PHP programming snippets! + + *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. diff --git a/Build/source/libs/curl/docs/examples/curlgtk.c b/Build/source/libs/curl/docs/examples/curlgtk.c new file mode 100644 index 00000000000..f3574e5401a --- /dev/null +++ b/Build/source/libs/curl/docs/examples/curlgtk.c @@ -0,0 +1,95 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: curlgtk.c,v 1.2 2001/02/20 13:56:39 bagder Exp $ + */ +/* Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft */ +/* an attempt to use the curl library in concert with a gtk-threaded application */ + +#include <stdio.h> +#include <gtk/gtk.h> + +#include <curl/curl.h> +#include <curl/types.h> /* new for v7 */ +#include <curl/easy.h> /* new for v7 */ + +#include <pthread.h> + +GtkWidget *Bar; + +size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream) +{ + return fread(ptr, size, nmemb, stream); +} + +int my_progress_func(GtkWidget *Bar, int t, int d) +{ +/* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/ + gdk_threads_enter(); + gtk_progress_set_value(GTK_PROGRESS(Bar), d*100.0/t); + gdk_threads_leave(); + return 0; +} + +void *curl_thread(void *ptr) +{ + CURL *curl; + CURLcode res; + FILE *outfile; + gchar *url = ptr; + + curl = curl_easy_init(); + if(curl) + { + outfile = fopen("/tmp/test.curl", "w"); + + curl_easy_setopt(curl, CURLOPT_URL, url); + curl_easy_setopt(curl, CURLOPT_FILE, outfile); + curl_easy_setopt(curl, CURLOPT_READFUNCTION, my_read_func); + curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func); + curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, Bar); + + res = curl_easy_perform(curl); + + fclose(outfile); + /* always cleanup */ + curl_easy_cleanup(curl); + } + return NULL; +} + +int main(int argc, char **argv) +{ + GtkWidget *Window, *Frame, *Frame2; + GtkAdjustment *adj; + pthread_t curl_tid; + + /* Init thread */ + g_thread_init(NULL); + + gtk_init(&argc, &argv); + Window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + Frame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(Frame), GTK_SHADOW_OUT); + gtk_container_add(GTK_CONTAINER(Window), Frame); + Frame2 = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(Frame2), GTK_SHADOW_IN); + gtk_container_add(GTK_CONTAINER(Frame), Frame2); + gtk_container_set_border_width(GTK_CONTAINER(Frame2), 5); + adj = (GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0); + Bar = gtk_progress_bar_new_with_adjustment(adj); + gtk_container_add(GTK_CONTAINER(Frame2), Bar); + gtk_widget_show_all(Window); + + pthread_create(&curl_tid, NULL, curl_thread, argv[1]); + + gdk_threads_enter(); + gtk_main(); + gdk_threads_leave(); + return 0; +} + diff --git a/Build/source/libs/curl/docs/examples/ftpget.c b/Build/source/libs/curl/docs/examples/ftpget.c new file mode 100644 index 00000000000..f453bf03756 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/ftpget.c @@ -0,0 +1,83 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: ftpget.c,v 1.2 2002/01/08 13:05:44 bagder Exp $ + */ + +#include <stdio.h> + +#include <curl/curl.h> +#include <curl/types.h> +#include <curl/easy.h> + +/* + * This is an example showing how to get a single file from an FTP server. + * It delays the actual destination file creation until the first write + * callback so that it won't create an empty file in case the remote file + * doesn't exist or something else fails. + */ + +struct FtpFile { + char *filename; + FILE *stream; +}; + +int my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream) +{ + struct FtpFile *out=(struct FtpFile *)stream; + if(out && !out->stream) { + /* open file for writing */ + out->stream=fopen(out->filename, "wb"); + if(!out->stream) + return -1; /* failure, can't open file to write */ + } + return fwrite(buffer, size, nmemb, out->stream); +} + + +int main(void) +{ + CURL *curl; + CURLcode res; + struct FtpFile ftpfile={ + "curl.tar.gz", /* name to store the file as if succesful */ + NULL + }; + + curl_global_init(CURL_GLOBAL_DEFAULT); + + curl = curl_easy_init(); + if(curl) { + /* Get curl 7.9.2 from sunet.se's FTP site: */ + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://ftp.sunet.se/pub/www/utilities/curl/curl-7.9.2.tar.gz"); + /* Define our callback to get called when there's data to be written */ + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite); + /* Set a pointer to our struct to pass to the callback */ + curl_easy_setopt(curl, CURLOPT_FILE, &ftpfile); + + /* Switch on full protocol/debug output */ + curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE); + + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + + if(CURLE_OK != res) { + /* we failed */ + fprintf(stderr, "curl told us %d\n", res); + } + } + + if(ftpfile.stream) + fclose(ftpfile.stream); /* close the local file */ + + curl_global_cleanup(); + + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/ftpgetresp.c b/Build/source/libs/curl/docs/examples/ftpgetresp.c new file mode 100644 index 00000000000..923fe617cae --- /dev/null +++ b/Build/source/libs/curl/docs/examples/ftpgetresp.c @@ -0,0 +1,61 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: ftpgetresp.c,v 1.1 2002/01/08 08:25:44 bagder Exp $ + */ + +#include <stdio.h> + +#include <curl/curl.h> +#include <curl/types.h> +#include <curl/easy.h> + +/* + * Similar to ftpget.c but this also stores the received response-lines + * in a separate file using our own callback! + * + * This functionality was introduced in libcurl 7.9.3. + */ + +size_t +write_response(void *ptr, size_t size, size_t nmemb, void *data) +{ + FILE *writehere = (FILE *)data; + return fwrite(ptr, size, nmemb, writehere); +} + +int main(int argc, char **argv) +{ + CURL *curl; + CURLcode res; + FILE *ftpfile; + FILE *respfile; + + /* local file name to store the file as */ + ftpfile = fopen("ftp-list", "wb"); /* b is binary, needed on win32 */ + + /* local file name to store the FTP server's response lines in */ + respfile = fopen("ftp-responses", "wb"); /* b is binary, needed on win32 */ + + curl = curl_easy_init(); + if(curl) { + /* Get a file listing from sunet */ + curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.sunet.se/"); + curl_easy_setopt(curl, CURLOPT_FILE, ftpfile); + curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response); + curl_easy_setopt(curl, CURLOPT_WRITEHEADER, respfile); + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + + fclose(ftpfile); /* close the local file */ + fclose(respfile); /* close the response file */ + + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/ftpupload.c b/Build/source/libs/curl/docs/examples/ftpupload.c new file mode 100644 index 00000000000..0014104b818 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/ftpupload.c @@ -0,0 +1,88 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: ftpupload.c,v 1.1 2001/08/29 07:12:04 bagder Exp $ + */ + +#include <stdio.h> + +#include <curl/curl.h> + +/* + * This example shows an FTP upload, with a rename of the file just after + * a successful upload. + * + * Example based on source code provided by Erick Nuwendam. Thanks! + */ + +#define LOCAL_FILE "/tmp/uploadthis.txt" +#define UPLOAD_FILE_AS "while-uploading.txt" +#define REMOTE_URL "ftp://localhost/" UPLOAD_FILE_AS +#define RENAME_FILE_TO "renamed-and-fine.txt" + +int main(int argc, char **argv) +{ + CURL *curl; + CURLcode res; + FILE *ftpfile; + FILE * hd_src ; + int hd ; + struct stat file_info; + + struct curl_slist *headerlist=NULL; + char buf_1 [] = "RNFR " UPLOAD_FILE_AS; + char buf_2 [] = "RNTO " RENAME_FILE_TO; + + /* get the file size of the local file */ + hd = open(LOCAL_FILE, O_RDONLY) ; + fstat(hd, &file_info); + close(hd) ; + + /* get a FILE * of the same file, could also be made with + fdopen() from the previous descriptor, but hey this is just + an example! */ + hd_src = fopen(LOCAL_FILE, "rb"); + + /* In windows, this will init the winsock stuff */ + curl_global_init(CURL_GLOBAL_ALL); + + /* get a curl handle */ + curl = curl_easy_init(); + if(curl) { + /* build a list of commands to pass to libcurl */ + headerlist = curl_slist_append(headerlist, buf_1); + headerlist = curl_slist_append(headerlist, buf_2); + + /* enable uploading */ + curl_easy_setopt(curl, CURLOPT_UPLOAD, TRUE) ; + + /* specify target */ + curl_easy_setopt(curl,CURLOPT_URL, REMOTE_URL); + + /* pass in that last of FTP commands to run after the transfer */ + curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist); + + /* now specify which file to upload */ + curl_easy_setopt(curl, CURLOPT_INFILE, hd_src); + + /* and give the size of the upload (optional) */ + curl_easy_setopt(curl, CURLOPT_INFILESIZE, file_info.st_size); + + /* Now run off and do what you've been told! */ + res = curl_easy_perform(curl); + + /* clean up the FTP commands list */ + curl_slist_free_all (headerlist); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + fclose(hd_src); /* close the local file */ + + curl_global_cleanup(); + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/getinmemory.c b/Build/source/libs/curl/docs/examples/getinmemory.c new file mode 100644 index 00000000000..8d65a39f88d --- /dev/null +++ b/Build/source/libs/curl/docs/examples/getinmemory.c @@ -0,0 +1,80 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: getinmemory.c,v 1.2 2001/05/15 13:04:53 bagder Exp $ + * + * Example source code to show how the callback function can be used to + * download data into a chunk of memory instead of storing it in a file. + * + * This exact source code has not been verified to work. + */ + +/* to make this work under windows, use the win32-functions from the + win32socket.c file as well */ + +#include <stdio.h> + +#include <curl/curl.h> +#include <curl/types.h> +#include <curl/easy.h> + +struct MemoryStruct { + char *memory; + size_t size; +}; + +size_t +WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) +{ + register int realsize = size * nmemb; + struct MemoryStruct *mem = (struct MemoryStruct *)data; + + mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1); + if (mem->memory) { + memcpy(&(mem->memory[mem->size]), ptr, realsize); + mem->size += realsize; + mem->memory[mem->size] = 0; + } + return realsize; +} + +int main(int argc, char **argv) +{ + CURL *curl_handle; + + struct MemoryStruct chunk; + + chunk.memory=NULL; /* we expect realloc(NULL, size) to work */ + chunk.size = 0; /* no data at this point */ + + /* init the curl session */ + curl_handle = curl_easy_init(); + + /* specify URL to get */ + curl_easy_setopt(curl_handle, CURLOPT_URL, "http://cool.haxx.se/"); + + /* send all data to this function */ + curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); + + /* we pass our 'chunk' struct to the callback function */ + curl_easy_setopt(curl_handle, CURLOPT_FILE, (void *)&chunk); + + /* get it! */ + curl_easy_perform(curl_handle); + + /* cleanup curl stuff */ + curl_easy_cleanup(curl_handle); + + /* + * Now, our chunk.memory points to a memory block that is chunk.size + * bytes big and contains the remote file. + * + * Do something nice with it! + */ + + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/http-post.c b/Build/source/libs/curl/docs/examples/http-post.c new file mode 100644 index 00000000000..e8ec969b5a5 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/http-post.c @@ -0,0 +1,35 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: http-post.c,v 1.1 2002/01/10 09:00:02 bagder Exp $ + */ + +#include <stdio.h> +#include <curl/curl.h> + +int main(void) +{ + CURL *curl; + CURLcode res; + + curl = curl_easy_init(); + if(curl) { + /* First set the URL that is about to receive our POST. This URL can + just as well be a https:// URL if that is what should receive the + data. */ + curl_easy_setopt(curl, CURLOPT_URL, "http://postit.example.com/moo.cgi"); + /* Now specify the POST data */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl"); + + /* Perform the request, res will get the return code */ + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/httpput.c b/Build/source/libs/curl/docs/examples/httpput.c new file mode 100644 index 00000000000..82a932eca83 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/httpput.c @@ -0,0 +1,100 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: httpput.c,v 1.1 2001/09/25 05:55:56 bagder Exp $ + */ + +#include <stdio.h> +#include <fcntl.h> +#include <sys/stat.h> + +#include <curl/curl.h> + +/* + * This example shows a HTTP PUT operation. PUTs a file given as a command + * line argument to the URL also given on the command line. + * + * This example also uses its own read callback. + */ + +size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream) +{ + size_t retcode; + + /* in real-world cases, this would probably get this data differently + as this fread() stuff is exactly what the library already would do + by default internally */ + retcode = fread(ptr, size, nmemb, stream); + + fprintf(stderr, "*** We read %d bytes from file\n", retcode); + + return retcode; +} + +int main(int argc, char **argv) +{ + CURL *curl; + CURLcode res; + FILE *ftpfile; + FILE * hd_src ; + int hd ; + struct stat file_info; + + char *file; + char *url; + + if(argc < 3) + return 1; + + file= argv[1]; + url = argv[2]; + + /* get the file size of the local file */ + hd = open(file, O_RDONLY) ; + fstat(hd, &file_info); + close(hd) ; + + /* get a FILE * of the same file, could also be made with + fdopen() from the previous descriptor, but hey this is just + an example! */ + hd_src = fopen(file, "rb"); + + /* In windows, this will init the winsock stuff */ + curl_global_init(CURL_GLOBAL_ALL); + + /* get a curl handle */ + curl = curl_easy_init(); + if(curl) { + /* we want to use our own read function */ + curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); + + /* enable uploading */ + curl_easy_setopt(curl, CURLOPT_UPLOAD, TRUE) ; + + /* HTTP PUT please */ + curl_easy_setopt(curl, CURLOPT_PUT, TRUE); + + /* specify target */ + curl_easy_setopt(curl,CURLOPT_URL, url); + + /* now specify which file to upload */ + curl_easy_setopt(curl, CURLOPT_INFILE, hd_src); + + /* and give the size of the upload (optional) */ + curl_easy_setopt(curl, CURLOPT_INFILESIZE, file_info.st_size); + + /* Now run off and do what you've been told! */ + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + fclose(hd_src); /* close the local file */ + + curl_global_cleanup(); + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/multithread.c b/Build/source/libs/curl/docs/examples/multithread.c new file mode 100644 index 00000000000..5d704f6838c --- /dev/null +++ b/Build/source/libs/curl/docs/examples/multithread.c @@ -0,0 +1,70 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: multithread.c,v 1.1 2001/05/04 09:35:43 bagder Exp $ + */ + +/* A multi-threaded example that uses pthreads extensively to fetch + * X remote files at once */ + +#include <stdio.h> +#include <pthread.h> +#include <curl/curl.h> + +/* silly list of test-URLs */ +char *urls[]= { + "http://curl.haxx.se/", + "ftp://cool.haxx.se/", + "http://www.contactor.se/", + "www.haxx.se" +}; + +void *pull_one_url(void *url) +{ + CURL *curl; + + curl = curl_easy_init(); + + curl_easy_setopt(curl, CURLOPT_URL, url); + curl_easy_perform(curl); + + curl_easy_cleanup(curl); + + return NULL; +} + + +/* + int pthread_create(pthread_t *new_thread_ID, + const pthread_attr_t *attr, + void * (*start_func)(void *), void *arg); +*/ + +int main(int argc, char **argv) +{ + pthread_t tid[4]; + int i; + int error; + for(i=0; i< 4; i++) { + error = pthread_create(&tid[i], + NULL, /* default attributes please */ + pull_one_url, + urls[i]); + if(0 != error) + fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error); + else + fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]); + } + + /* now wait for all threads to terminate */ + for(i=0; i< 4; i++) { + error = pthread_join(tid[i], NULL); + fprintf(stderr, "Thread %d terminated\n", i); + } + + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/persistant.c b/Build/source/libs/curl/docs/examples/persistant.c new file mode 100644 index 00000000000..db36b529481 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/persistant.c @@ -0,0 +1,53 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: persistant.c,v 1.1 2001/03/05 16:56:10 bagder Exp $ + */ + +#include <stdio.h> +#include <unistd.h> + +#include <curl/curl.h> + +/* to make this work under windows, use the win32-functions from the + docs/examples/win32socket.c file as well */ + +/* This example REQUIRES libcurl 7.7 or later */ +#if (LIBCURL_VERSION_NUM < 0x070700) +#error Too old libcurl version, upgrade or stay away. +#endif + +int main(int argc, char **argv) +{ + CURL *curl; + CURLcode res; + +#ifdef MALLOCDEBUG + /* this sends all memory debug messages to a specified logfile */ + curl_memdebug("memdump"); +#endif + + curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); + curl_easy_setopt(curl, CURLOPT_HEADER, 1); + + /* get the first document */ + curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/"); + res = curl_easy_perform(curl); + + /* get another document from the same server using the same + connection */ + curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/docs/"); + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/postit2.c b/Build/source/libs/curl/docs/examples/postit2.c new file mode 100644 index 00000000000..d7def6c76fb --- /dev/null +++ b/Build/source/libs/curl/docs/examples/postit2.c @@ -0,0 +1,92 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: postit2.c,v 1.1 2001/08/23 08:45:20 bagder Exp $ + * + * Example code that uploads a file name 'foo' to a remote script that accepts + * "HTML form based" (as described in RFC1738) uploads using HTTP POST. + * + * The imaginary form we'll fill in looks like: + * + * <form method="post" enctype="multipart/form-data" action="examplepost.cgi"> + * Enter file: <input type="file" name="sendfile" size="40"> + * Enter file name: <input type="text" name="filename" size="30"> + * <input type="submit" value="send" name="submit"> + * </form> + * + * This exact source code has not been verified to work. + */ + +/* to make this work under windows, use the win32-functions from the + win32socket.c file as well */ + +#include <stdio.h> +#include <string.h> + +#include <curl/curl.h> +#include <curl/types.h> +#include <curl/easy.h> + +#if LIBCURL_VERSION_NUM < 0x070900 +#error "curl_formadd() is not introduced until libcurl 7.9 and later" +#endif + +int main(int argc, char *argv[]) +{ + CURL *curl; + CURLcode res; + + struct HttpPost *formpost=NULL; + struct HttpPost *lastptr=NULL; + struct curl_slist *headerlist=NULL; + char buf[] = "Expect:"; + + /* Fill in the file upload field */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "sendfile", + CURLFORM_FILE, "postit2.c", + CURLFORM_END); + + /* Fill in the filename field */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "filename", + CURLFORM_COPYCONTENTS, "postit2.c", + CURLFORM_END); + + + /* Fill in the submit field too, even if this is rarely needed */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "submit", + CURLFORM_COPYCONTENTS, "send", + CURLFORM_END); + + curl = curl_easy_init(); + /* initalize custom header list (stating that Expect: 100-continue is not + wanted */ + headerlist = curl_slist_append(headerlist, buf); + if(curl) { + /* what URL that receives this POST */ + curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/examplepost.cgi"); + if ( (argc == 2) && (!strcmp(argv[1], "noexpectheader")) ) + /* only disable 100-continue header if explicitly requested */ + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist); + curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + + /* then cleanup the formpost chain */ + curl_formfree(formpost); + /* free slist */ + curl_slist_free_all (headerlist); + } + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/sepheaders.c b/Build/source/libs/curl/docs/examples/sepheaders.c new file mode 100644 index 00000000000..9156389bb94 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/sepheaders.c @@ -0,0 +1,76 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: sepheaders.c,v 1.3 2001/05/15 12:55:35 bagder Exp $ + */ + +/* to make this work under windows, use the win32-functions from the + win32socket.c file as well */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include <curl/curl.h> +#include <curl/types.h> +#include <curl/easy.h> + +size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream) +{ + written = fwrite(ptr, size, nmemb, (FILE *)stream); + return written; +} + +int main(int argc, char **argv) +{ + CURL *curl_handle; + char *headerfilename = "head.out"; + FILE *headerfile; + char *bodyfilename = "body.out"; + FILE *bodyfile; + + /* init the curl session */ + curl_handle = curl_easy_init(); + + /* set URL to get */ + curl_easy_setopt(curl_handle, CURLOPT_URL, "http://curl.haxx.se"); + + /* no progress meter please */ + curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1); + + /* shut up completely */ + curl_easy_setopt(curl_handle, CURLOPT_MUTE, 1); + + /* send all data to this function */ + curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data); + + /* open the files */ + headerfile = fopen(headerfilename,"w"); + if (headerfile == NULL) { + curl_easy_cleanup(curl_handle); + return -1; + } + bodyfile = fopen(bodyfilename,"w"); + if (bodyfile == NULL) { + curl_easy_cleanup(curl_handle); + return -1; + } + + /* we want the headers to this file handle */ + curl_easy_setopt(curl_handle, CURLOPT_WRITEHEADER ,headerfile); + + /* get it! */ + curl_easy_perform(curl_handle); + + /* close the header file */ + fclose(headerfile); + + /* cleanup curl stuff */ + curl_easy_cleanup(curl_handle); + + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/simple.c b/Build/source/libs/curl/docs/examples/simple.c new file mode 100644 index 00000000000..023fbf51c09 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/simple.c @@ -0,0 +1,28 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: simple.c,v 1.5 2002/01/09 13:23:01 bagder Exp $ + */ + +#include <stdio.h> +#include <curl/curl.h> + +int main(void) +{ + CURL *curl; + CURLcode res; + + curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se"); + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/simplessl.c b/Build/source/libs/curl/docs/examples/simplessl.c new file mode 100644 index 00000000000..30c10ef73e0 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/simplessl.c @@ -0,0 +1,118 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * $Id: simplessl.c,v 1.3 2002/01/17 13:45:19 bagder Exp $ + */ + +#include <stdio.h> + +#include <curl/curl.h> +#include <curl/types.h> +#include <curl/easy.h> + + +/* some requirements for this to work: + 1. set pCertFile to the file with the client certificate + 2. if the key is passphrase protected, set pPassphrase to the + passphrase you use + 3. if you are using a crypto engine: + 3.1. set a #define USE_ENGINE + 3.2. set pEngine to the name of the crypto engine you use + 3.3. set pKeyName to the key identifier you want to use + 4. if you don't use a crypto engine: + 4.1. set pKeyName to the file name of your client key + 4.2. if the format of the key file is DER, set pKeyType to "DER" + + !! verify of the server certificate is not implemented here !! + + **** This example only works with libcurl 7.9.3 and later! **** + +*/ + +int main(int argc, char **argv) +{ + CURL *curl; + CURLcode res; + FILE *headerfile; + + const char *pCertFile = "testcert.pem"; + const char *pCACertFile="cacert.pem" + + const char *pKeyName; + const char *pKeyType; + + const char *pEngine; + +#if USE_ENGINE + pKeyName = "rsa_test"; + pKeyType = "ENG"; + pEngine = "chil"; /* for nChiper HSM... */ +#else + pKeyName = "testkey.pem"; + pKeyType = "PEM"; + pEngine = NULL; +#endif + + const char *pPassphrase = NULL; + + headerfile = fopen("dumpit", "w"); + + curl_global_init(CURL_GLOBAL_DEFAULT); + + curl = curl_easy_init(); + if(curl) { + /* what call to write: */ + curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://curl.haxx.se"); + curl_easy_setopt(curl, CURLOPT_WRITEHEADER, headerfile); + + while(1) /* do some ugly short cut... */ + { + if (pEngine) /* use crypto engine */ + { + if (curl_easy_setopt(curl, CURLOPT_SSLENGINE,pEngine) != CURLE_OK) + { /* load the crypto engine */ + fprintf(stderr,"can't set crypto engine\n"); + break; + } + if (curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT,1) != CURLE_OK) + { /* set the crypto engine as default */ + /* only needed for the first time you load + a engine in a curl object... */ + fprintf(stderr,"can't set crypto engine as default\n"); + break; + } + } + /* cert is stored PEM coded in file... */ + /* since PEM is default, we needn't set it for PEM */ + curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM"); + /* set the cert for client authentication */ + curl_easy_setopt(curl,CURLOPT_SSLCERT,pCertFile); + /* sorry, for engine we must set the passphrase + (if the key has one...) */ + if (pPassphrase) + curl_easy_setopt(curl,CURLOPT_SSLKEYPASSWD,pPassphrase); + /* if we use a key stored in a crypto engine, + we must set the key type to "ENG" */ + curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,pKeyType); + /* set the private key (file or ID in engine) */ + curl_easy_setopt(curl,CURLOPT_SSLKEY,pKeyName); + /* set the file with the certs vaildating the server */ + curl_easy_setopt(curl,CURLOPT_CAINFO,pCACertFile); + /* disconnect if we can't validate server's cert */ + curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,1); + + res = curl_easy_perform(curl); + break; /* we are done... */ + } + /* always cleanup */ + curl_easy_cleanup(curl); + } + + curl_global_cleanup(); + + return 0; +} diff --git a/Build/source/libs/curl/docs/examples/win32sockets.c b/Build/source/libs/curl/docs/examples/win32sockets.c new file mode 100644 index 00000000000..5f791c8b5e5 --- /dev/null +++ b/Build/source/libs/curl/docs/examples/win32sockets.c @@ -0,0 +1,49 @@ + +/* + * 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 */ +} diff --git a/Build/source/libs/curl/docs/libcurl/Makefile.am b/Build/source/libs/curl/docs/libcurl/Makefile.am new file mode 100644 index 00000000000..c799c554571 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/Makefile.am @@ -0,0 +1,68 @@ +# +# $Id: Makefile.am,v 1.1 2002/03/04 10:09:48 bagder Exp $ +# + +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_escape.3 \ + curl_unescape.3 \ + curl_strequal.3 \ + curl_strnequal.3 \ + curl_mprintf.3 \ + curl_global_init.3 \ + curl_global_cleanup.3 \ + libcurl.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_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 + +EXTRA_DIST = $(man_MANS) $(HTMLPAGES) + +MAN2HTML= gnroff -man $< | man2html >$@ + +SUFFIXES = .1 .3 .html + +html: $(HTMLPAGES) + +.3.html: + $(MAN2HTML) + +.1.html: + $(MAN2HTML) diff --git a/Build/source/libs/curl/docs/libcurl/Makefile.in b/Build/source/libs/curl/docs/libcurl/Makefile.in new file mode 100644 index 00000000000..25a2f6d2d72 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/Makefile.in @@ -0,0 +1,347 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# $Id: Makefile.am,v 1.1 2002/03/04 10:09:48 bagder Exp $ +# + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IPV6_ENABLED = @IPV6_ENABLED@ +KRB4_ENABLED = @KRB4_ENABLED@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +NROFF = @NROFF@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENSSL_ENABLED = @OPENSSL_ENABLED@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKGADD_NAME = @PKGADD_NAME@ +PKGADD_PKG = @PKGADD_PKG@ +PKGADD_VENDOR = @PKGADD_VENDOR@ +RANDOM_FILE = @RANDOM_FILE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VERSIONNUM = @VERSIONNUM@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +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_escape.3 \ + curl_unescape.3 \ + curl_strequal.3 \ + curl_strnequal.3 \ + curl_mprintf.3 \ + curl_global_init.3 \ + curl_global_cleanup.3 \ + libcurl.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_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 + + +EXTRA_DIST = $(man_MANS) $(HTMLPAGES) + +MAN2HTML = gnroff -man $< | man2html >$@ + +SUFFIXES = .1 .3 .html +subdir = docs/libcurl +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/lib/config.h \ + $(top_builddir)/src/config.h \ + $(top_builddir)/tests/server/config.h +CONFIG_CLEAN_FILES = +depcomp = +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = + +NROFF = nroff +MANS = $(man_MANS) +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +.SUFFIXES: .1 .3 .html + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign docs/libcurl/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: + +man3dir = $(mandir)/man3 +install-man3: $(man3_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man3dir) + @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.3*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst; \ + done +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.3*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man3dir)/$$inst"; \ + rm -f $(DESTDIR)$(man3dir)/$$inst; \ + done +tags: TAGS +TAGS: + + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(man3dir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man3 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man3 + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man3 install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool uninstall uninstall-am uninstall-info-am \ + uninstall-man uninstall-man3 + + +html: $(HTMLPAGES) + +.3.html: + $(MAN2HTML) + +.1.html: + $(MAN2HTML) +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_cleanup.3 b/Build/source/libs/curl/docs/libcurl/curl_easy_cleanup.3 new file mode 100644 index 00000000000..f85484eca4c --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_cleanup.3 @@ -0,0 +1,25 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_easy_cleanup.3,v 1.2 2002/03/04 13:10:15 bagder Exp $ +.\" +.TH curl_easy_cleanup 3 "4 March 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. +.SH RETURN VALUE +None +.SH "SEE ALSO" +.BR curl_easy_init "(3), " + diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_cleanup.html b/Build/source/libs/curl/docs/libcurl/curl_easy_cleanup.html new file mode 100644 index 00000000000..0365cefcf41 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_cleanup.html @@ -0,0 +1,74 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_easy_cleanup - End a libcurl easy session + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>void</B> <B>curl_easy_cleanup(CURL</B> <B>*</B><I>handle</I><B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + This function must be the last function to call for an easy + session. It is the opposite of the <I>curl</I><B>_</B><I>easy</I><B>_</B><I>init</I> function + and must be called with the same <I>handle</I> 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. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + None + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_easy_init(3)</B>, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_duphandle.3 b/Build/source/libs/curl/docs/libcurl/curl_easy_duphandle.3 new file mode 100644 index 00000000000..a7c03d5a425 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_duphandle.3 @@ -0,0 +1,37 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_easy_duphandle.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_easy_duphandle 3 "18 September 2001" "libcurl 7.9" "libcurl Manual" +.SH NAME +curl_easy_duphandle - Clone a libcurl session handle +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "CURL *curl_easy_duphandle(CURL *"handle ");" +.ad +.SH DESCRIPTION +This function will return a new curl handle, a duplicate, using all the +options previously set in the input curl \fIhandle\fP. Both handles can +subsequently be used independently and they must both be freed with +\fIcurl_easy_cleanup()\fP. + +All strings that the input handle has been told to point to (as opposed to +copy) with previous calls to \fIcurl_easy_setopt\fP using char * inputs, will +be pointed to by the new handle as well. You must therefore make sure to keep +the data around until both handles have been cleaned up. + +The new handle will \fBnot\fP inherit any state information, no connections, +no SSL sessions and no cookies. + +\fBNote\fP that even in multi-threaded programs, this function must be called +in a synchronous way, the input handle may not be in use when cloned. + +This function was added in libcurl 7.9. +.SH RETURN VALUE +If this function returns NULL, something went wrong and no valid handle was +returned. +.SH "SEE ALSO" +.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_global_init "(3) +.SH BUGS +Surely there are some, you tell me! diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_duphandle.html b/Build/source/libs/curl/docs/libcurl/curl_easy_duphandle.html new file mode 100644 index 00000000000..7f3fb9b8168 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_duphandle.html @@ -0,0 +1,76 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_easy_duphandle - Clone a libcurl session handle + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>CURL</B> <B>*curl_easy_duphandle(CURL</B> <B>*</B><I>handle</I><B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + This function will return a new curl handle, a duplicate, + using all the options previously set in the input curl <I>han</I> + <I>dle</I>. Both handles can subsequently be used independently and + they must both be freed with <I>curl</I><B>_</B><I>easy</I><B>_</B><I>cleanup()</I>. + + All strings that the input handle has been told to point to + (as opposed to copy) with previous calls to <I>curl</I><B>_</B><I>easy</I><B>_</B><I>setopt</I> + using char * inputs, will be pointed to by the new handle as + well. You must therefore make sure to keep the data around + until both handles have been cleaned up. + + The new handle will <B>not</B> inherit any state information, no + connections, no SSL sessions and no cookies. + + <B>Note</B> that even in multi-threaded programs, this function + must be called in a synchronous way, the input handle may + not be in use when cloned. + + This function was added in libcurl 7.9. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + If this function returns NULL, something went wrong and no + valid handle was returned. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_easy_init(3)</B>,<B>curl_easy_cleanup(3)</B>,<B>curl_global_init(3)</B> + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_getinfo.3 b/Build/source/libs/curl/docs/libcurl/curl_easy_getinfo.3 new file mode 100644 index 00000000000..c9cf4634bfc --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_getinfo.3 @@ -0,0 +1,114 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_easy_getinfo.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_easy_init 3 "31 Jan 2001" "libcurl 7.9.4" "libcurl Manual" +.SH NAME +curl_easy_getinfo - Extract information from a curl session (added in 7.4) +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );" +.ad +.SH DESCRIPTION +Request internal information from the curl session with this function. The +third argument +.B MUST +be a pointer to a long, a pointer to a char * or a pointer to a double (as +this documentation describes further down). The data pointed-to will be +filled in accordingly and can be relied upon only if the function returns +CURLE_OK. This function is intended to get used *AFTER* a performed transfer, +all results from this function are undefined until the transfer is completed. +.SH AVAILABLE INFORMATION +These are informations that can be extracted: +.TP 0.8i +.B CURLINFO_EFFECTIVE_URL +Pass a pointer to a 'char *' to receive the last used effective URL. +.TP +.B CURLINFO_HTTP_CODE +Pass a pointer to a long to receive the last received HTTP code. +.TP +.B CURLINFO_FILETIME +Pass a pointer to a long to receive the remote time of the retrieved +document. If you get -1, it can be because of many reasons (unknown, the +server hides it or the server doesn't support the command that tells document +time etc) and the time of the document is unknown. Note that you must tell the +server to collect this information before the transfer is made, by using the +CURLOPT_FILETIME option to \fIcurl_easy_setopt(3)\fP. (Added in 7.5) +.TP +.B CURLINFO_TOTAL_TIME +Pass a pointer to a double to receive the total transaction time in seconds +for the previous transfer. +.TP +.B CURLINFO_NAMELOOKUP_TIME +Pass a pointer to a double to receive the time, in seconds, it took from the +start until the name resolving was completed. +.TP +.B CURLINFO_CONNECT_TIME +Pass a pointer to a double to receive the time, in seconds, it took from the +start until the connect to the remote host (or proxy) was completed. +.TP +.B CURLINFO_PRETRANSFER_TIME +Pass a pointer to a double to receive the time, in seconds, it took from the +start until the file transfer is just about to begin. This includes all +pre-transfer commands and negotiations that are specific to the particular +protocol(s) involved. +.TP +.B CURLINFO_STARTTRANSFER_TIME +Pass a pointer to a double to receive the time, in seconds, it took from the +start until the first byte is just about to be transfered. This includes +CURLINFO_PRETRANSFER_TIME and also the time the server needs to calculate +the result. +.TP +.B CURLINFO_SIZE_UPLOAD +Pass a pointer to a double to receive the total amount of bytes that were +uploaded. +.TP +.B CURLINFO_SIZE_DOWNLOAD +Pass a pointer to a double to receive the total amount of bytes that were +downloaded. +.TP +.B CURLINFO_SPEED_DOWNLOAD +Pass a pointer to a double to receive the average download speed that curl +measured for the complete download. +.TP +.B CURLINFO_SPEED_UPLOAD +Pass a pointer to a double to receive the average upload speed that curl +measured for the complete upload. +.TP +.B CURLINFO_HEADER_SIZE +Pass a pointer to a long to receive the total size of all the headers +received. +.TP +.B CURLINFO_REQUEST_SIZE +Pass a pointer to a long to receive the total size of the issued +requests. This is so far only for HTTP requests. Note that this may be more +than one request if FOLLOWLOCATION is true. +.TP +.B CURLINFO_SSL_VERIFYRESULT +Pass a pointer to a long to receive the result of the certification +verification that was requested (using the CURLOPT_SSL_VERIFYPEER option to +curl_easy_setopt). (Added in 7.4.2) +.TP +.B CURLINFO_CONTENT_LENGTH_DOWNLOAD +Pass a pointer to a double to receive the content-length of the download. This +is the value read from the Content-Length: field. (Added in 7.6.1) +.TP +.B CURLINFO_CONTENT_LENGTH_UPLOAD +Pass a pointer to a double to receive the specified size of the upload. +(Added in 7.6.1) +.TP +.B CURLINFO_CONTENT_TYPE +Pass a pointer to a 'char *' to receive the content-type of the downloaded +object. This is the value read from the Content-Type: field. If you get NULL, +it means that the server didn't send a valid Content-Type header or that the +protocol used doesn't support this. (Added in 7.9.4) +.PP + +.SH RETURN VALUE +If the operation was successful, CURLE_OK is returned. Otherwise an +appropriate error code will be returned. +.SH "SEE ALSO" +.BR curl_easy_setopt "(3)" +.SH BUGS +Surely there are some, you tell me! diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_getinfo.html b/Build/source/libs/curl/docs/libcurl/curl_easy_getinfo.html new file mode 100644 index 00000000000..1aee3333d9f --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_getinfo.html @@ -0,0 +1,182 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_easy_getinfo - Extract information from a curl session + (added in 7.4) + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>CURLcode</B> <B>curl_easy_getinfo(CURL</B> <B>*curl,</B> <B>CURLINFO</B> <B>info,</B> <B>...</B> <B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + Request internal information from the curl session with this + function. The third argument <B>MUST</B> be a pointer to a long, a + pointer to a char * or a pointer to a double (as this docu + mentation describes further down). The data pointed-to will + be filled in accordingly and can be relied upon only if the + function returns CURLE_OK. This function is intended to get + used *AFTER* a performed transfer, all results from this + function are undefined until the transfer is completed. + + +</PRE> +<H2>AVAILABLE INFORMATION</H2><PRE> + These are informations that can be extracted: + + <B>CURLINFO_EFFECTIVE_URL</B> + Pass a pointer to a 'char *' to receive the last + used effective URL. + + <B>CURLINFO_HTTP_CODE</B> + Pass a pointer to a long to receive the last + received HTTP code. + + <B>CURLINFO_FILETIME</B> + Pass a pointer to a long to receive the remote time + of the retrieved document. If you get -1, it can be + because of many reasons (unknown, the server hides + it or the server doesn't support the command that + tells document time etc) and the time of the docu + ment 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 + <I>curl</I><B>_</B><I>easy</I><B>_</B><I>setopt(3)</I>. (Added in 7.5) + + <B>CURLINFO_TOTAL_TIME</B> + Pass a pointer to a double to receive the total + transaction time in seconds for the previous trans + fer. + + <B>CURLINFO_NAMELOOKUP_TIME</B> + Pass a pointer to a double to receive the time, in + seconds, it took from the start until the name + resolving was completed. + + <B>CURLINFO_CONNECT_TIME</B> + Pass a pointer to a double to receive the time, in + seconds, it took from the start until the connect to + the remote host (or proxy) was completed. + + <B>CURLINFO_PRETRANSFER_TIME</B> + Pass a pointer to a double to receive the time, in + seconds, it took from the start until the file + transfer is just about to begin. This includes all + pre-transfer commands and negotiations that are spe + cific to the particular protocol(s) involved. + + <B>CURLINFO_STARTTRANSFER_TIME</B> + Pass a pointer to a double to receive the time, in + seconds, it took from the start until the first byte + is just about to be transfered. This includes + CURLINFO_PRETRANSFER_TIME and also the time the + server needs to calculate the result. + + <B>CURLINFO_SIZE_UPLOAD</B> + Pass a pointer to a double to receive the total + amount of bytes that were uploaded. + + <B>CURLINFO_SIZE_DOWNLOAD</B> + Pass a pointer to a double to receive the total + amount of bytes that were downloaded. + + <B>CURLINFO_SPEED_DOWNLOAD</B> + Pass a pointer to a double to receive the average + download speed that curl measured for the complete + download. + + <B>CURLINFO_SPEED_UPLOAD</B> + Pass a pointer to a double to receive the average + upload speed that curl measured for the complete + upload. + + <B>CURLINFO_HEADER_SIZE</B> + Pass a pointer to a long to receive the total size + of all the headers received. + + <B>CURLINFO_REQUEST_SIZE</B> + Pass a pointer to a long to receive the total size + of the issued requests. This is so far only for HTTP + requests. Note that this may be more than one + request if FOLLOWLOCATION is true. + + <B>CURLINFO_SSL_VERIFYRESULT</B> + Pass a pointer to a long to receive the result of + the certification verification that was requested + (using the CURLOPT_SSL_VERIFYPEER option to + curl_easy_setopt). (Added in 7.4.2) + + <B>CURLINFO_CONTENT_LENGTH_DOWNLOAD</B> + Pass a pointer to a double to receive the content- + length of the download. This is the value read from + the Content-Length: field. (Added in 7.6.1) + + <B>CURLINFO_CONTENT_LENGTH_UPLOAD</B> + Pass a pointer to a double to receive the specified + size of the upload. (Added in 7.6.1) + + <B>CURLINFO_CONTENT_TYPE</B> + 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 Con + tent-Type header or that the protocol used doesn't + support this. (Added in 7.9.4) + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + If the operation was successful, CURLE_OK is returned. Oth + erwise an appropriate error code will be returned. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_easy_setopt(3)</B> + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_init.3 b/Build/source/libs/curl/docs/libcurl/curl_easy_init.3 new file mode 100644 index 00000000000..97f2d58004c --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_init.3 @@ -0,0 +1,25 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_easy_init.3,v 1.2 2002/03/04 13:06:46 bagder Exp $ +.\" +.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! diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_init.html b/Build/source/libs/curl/docs/libcurl/curl_easy_init.html new file mode 100644 index 00000000000..c53d89864c6 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_init.html @@ -0,0 +1,76 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_easy_init - Start a libcurl easy session + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>CURL</B> <B>*curl_easy_init(</B> <B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + 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 + <I>curl</I><B>_</B><I>easy</I><B>_</B><I>cleanup</I> when the operation is complete. + + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + If this function returns NULL, something went wrong and you + cannot use the other curl functions. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_easy_cleanup(3)</B>, <B>curl_global_init(3)</B> + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_perform.3 b/Build/source/libs/curl/docs/libcurl/curl_easy_perform.3 new file mode 100644 index 00000000000..5d131bd762c --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_perform.3 @@ -0,0 +1,46 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_easy_perform.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_easy_perform 3 "5 Mar 2001" "libcurl 7.7" "libcurl Manual" +.SH NAME +curl_easy_perform - Perform a file transfer +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "CURLcode curl_easy_perform(CURL *" handle "); +.ad +.SH DESCRIPTION +This function is called after the init and all the curl_easy_setopt() calls +are made, and will perform the transfer as described in the options. +It must be called with the same +.I handle +as input as the curl_easy_init call returned. + +libcurl version 7.7 or later (for older versions see below): You can do any +amount of calls to curl_easy_perform() while using the same handle. If you +intend to transfer more than one file, you are even encouraged to do +so. libcurl will then attempt to re-use the same connection for the following +transfers, thus making the operations faster, less CPU intense and using less +network resources. Just note that you will have to use +.I curl_easy_setopt +between the invokes to set options for the following curl_easy_perform. + +You must never call this function simultaneously from two places using the +same handle. Let the function return first before invoking it another time. If +you want parallel transfers, you must use several curl handles. + +Before libcurl version 7.7: You are only allowed to call this function once +using the same handle. If you want to do repeated calls, you must call +curl_easy_cleanup and curl_easy_init again first. +.SH RETURN VALUE +0 means everything was ok, non-zero means an error occurred as +.I <curl/curl.h> +defines. If the CURLOPT_ERRORBUFFER was set with +.I curl_easy_setopt +there will be a readable error message in the error buffer when non-zero is +returned. +.SH "SEE ALSO" +.BR curl_easy_init "(3), " curl_easy_setopt "(3), " +.SH BUGS +Surely there are some, you tell me! diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_perform.html b/Build/source/libs/curl/docs/libcurl/curl_easy_perform.html new file mode 100644 index 00000000000..2c2dd6999f4 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_perform.html @@ -0,0 +1,76 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_easy_perform - Perform a file transfer + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>CURLcode</B> <B>curl_easy_perform(CURL</B> <B>*</B><I>handle</I><B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + This function is called after the init and all the + curl_easy_setopt() calls are made, and will perform the + transfer as described in the options. It must be called + with the same <I>handle</I> as input as the curl_easy_init call + returned. + + libcurl version 7.7 or later (for older versions see below): + You can do any amount of calls to curl_easy_perform() while + using the same handle. If you intend to transfer more than + one file, you are even encouraged to do so. libcurl will + then attempt to re-use the same connection for the following + transfers, thus making the operations faster, less CPU + intense and using less network resources. Just note that you + will have to use <I>curl</I><B>_</B><I>easy</I><B>_</B><I>setopt</I> between the invokes to set + options for the following curl_easy_perform. + + You must never call this function simultaneously from two + places using the same handle. Let the function return first + before invoking it another time. If you want parallel trans + fers, you must use several curl handles. + + Before libcurl version 7.7: You are only allowed to call + this function once using the same handle. If you want to do + repeated calls, you must call curl_easy_cleanup and + curl_easy_init again first. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + 0 means everything was ok, non-zero means an error occurred + as <I><curl/curl.h></I> defines. If the CURLOPT_ERRORBUFFER was set + with <I>curl</I><B>_</B><I>easy</I><B>_</B><I>setopt</I> there will be a readable error message + in the error buffer when non-zero is returned. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_easy_init(3)</B>, <B>curl_easy_setopt(3)</B>, + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_setopt.3 b/Build/source/libs/curl/docs/libcurl/curl_easy_setopt.3 new file mode 100644 index 00000000000..06fe4ae8df6 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_setopt.3 @@ -0,0 +1,627 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_easy_setopt.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_easy_setopt 3 "10 Dec 2001" "libcurl 7.9.2" "libcurl Manual" +.SH NAME +curl_easy_setopt - Set curl easy-session options +.SH SYNOPSIS +#include <curl/curl.h> + +CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter); +.ad +.SH DESCRIPTION +curl_easy_setopt() is used to tell libcurl how to behave. Most operations in +libcurl have default actions, and by using the appropriate options to +\fIcurl_easy_setopt\fP, you can change them. All options are set with the +\fIoption\fP followed by a \fIparameter\fP. That parameter can be a long, a +function pointer or an object pointer, all depending on what the specific +option expects. Read this manual carefully as bad input values may cause +libcurl to behave badly! You can only set one option in each function call. A +typical application uses many curl_easy_setopt() calls in the setup phase. + +\fBNOTE:\fP strings passed to libcurl as 'char *' arguments, will not be +copied by the library. Instead you should keep them available until libcurl no +longer needs them. Failing to do so will cause very odd behavior or even +crashes. + +\fBNOTE2:\fP options set with this function call are valid for the forthcoming +data transfers that are performed when you invoke \fIcurl_easy_perform\fP. +The options are not in any way reset between transfers, so if you want +subsequent transfers with different options, you must change them between the +transfers. + +The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or +\fIcurl_easy_duphandle(3)\fP call. +.SH OPTIONS +The options are listed in a sort of random order, but you'll figure it out! +.TP 0.8i +.B CURLOPT_FILE +Data pointer to pass to the file write function. Note that if you specify the +\fICURLOPT_WRITEFUNCTION\fP, this is the pointer you'll get as input. If you +don't use a callback, you must pass a 'FILE *' as libcurl will pass this to +fwrite() when writing data. + +\fBNOTE:\fP If you're using libcurl as a win32 DLL, you MUST use the +\fICURLOPT_WRITEFUNCTION\fP if you set this option or you will experience +crashes. +.TP +.B CURLOPT_WRITEFUNCTION +Function pointer that should match the following prototype: \fBsize_t +function( void *ptr, size_t size, size_t nmemb, void *stream);\fP This +function gets called by libcurl as soon as there is data available to pass +available that needs to be saved. The size of the data pointed to by \fIptr\fP +is \fIsize\fP multiplied with \fInmemb\fP. Return the number of bytes +actually taken care of. If that amount differs from the amount passed to your +function, it'll signal an error to the library and it will abort the transfer +and return \fICURLE_WRITE_ERROR\fP. + +Set the \fIstream\fP argument with the \fBCURLOPT_FILE\fP option. + +\fBNOTE:\fP you will be passed as much data as possible in all invokes, but +you cannot possibly make any assumptions. It may be one byte, it may be +thousands. +.TP +.B CURLOPT_INFILE +Data pointer to pass to the file read function. Note that if you specify the +\fICURLOPT_READFUNCTION\fP, this is the pointer you'll get as input. If you +don't specify a read callback, this must be a valid FILE *. + +\fBNOTE:\fP If you're using libcurl as a win32 DLL, you MUST use a +\fICURLOPT_READFUNCTION\fP if you set this option. +.TP +.B CURLOPT_READFUNCTION +Function pointer that should match the following prototype: \fBsize_t +function( void *ptr, size_t size, size_t nmemb, void *stream);\fP This +function gets called by libcurl as soon as it needs to read data in order to +send it to the peer. The data area pointed at by the pointer \fIptr\fP may be +filled with at most \fIsize\fP multiplied with \fInmemb\fP number of +bytes. Your function must return the actual number of bytes that you stored in +that memory area. Returning 0 will signal end-of-file to the library and cause +it to stop the current transfer. +.TP +.B CURLOPT_INFILESIZE +When uploading a file to a remote site, this option should be used to tell +libcurl what the expected size of the infile is. +.TP +.B CURLOPT_URL +The actual URL to deal with. The parameter should be a char * to a zero +terminated string. The string must remain present until curl no longer needs +it, as it doesn't copy the string. + +\fBNOTE:\fP this option is (the only one) required to be set before +\fIcurl_easy_perform(3)\fP is called. +.TP +.B CURLOPT_PROXY +Set HTTP proxy to use. The parameter should be a char * to a zero terminated +string holding the host name or dotted IP address. To specify port number in +this string, append :[port] to the end of the host name. The proxy string may +be prefixed with [protocol]:// since any such prefix will be ignored. The +proxy's port number may optionally be specified with the separate option +\fICURLOPT_PROXYPORT\fP. + +\fBNOTE:\fP when you tell the library to use a HTTP proxy, libcurl will +transparently convert operations to HTTP even if you specify a FTP URL +etc. This may have an impact on what other features of the library you can +use, such as CURLOPT_QUOTE and similar FTP specifics that don't work unless +you tunnel through the HTTP proxy. Such tunneling is activated with +\fICURLOPT_HTTPPROXYTUNNEL\fP. + +\fBNOTE2:\fP libcurl respects the environment variables \fBhttp_proxy\fP, +\fBftp_proxy\fP, \fBall_proxy\fP etc, if any of those is set. +.TP +.B CURLOPT_PROXYPORT +Pass a long with this option to set the proxy port to connect to unless it is +specified in the proxy string \fICURLOPT_PROXY\fP. +.TP +.B CURLOPT_HTTPPROXYTUNNEL +Set the parameter to non-zero to get the library to tunnel all operations +through a given HTTP proxy. Note that there is a big difference between using +a proxy and to tunnel through it. If you don't know what this means, you +probably don't want this tunneling option. (Added in libcurl 7.3) +.TP +.B CURLOPT_VERBOSE +Set the parameter to non-zero to get the library to display a lot of verbose +information about its operations. Very useful for libcurl and/or protocol +debugging and understanding. + +You hardly ever want this set in production use, you will almost always want +this when you debug/report problems. +.TP +.B CURLOPT_HEADER +A non-zero parameter tells the library to include the header in the body +output. This is only relevant for protocols that actually have headers +preceding the data (like HTTP). +.TP +.B CURLOPT_NOPROGRESS +A non-zero parameter tells the library to shut of the built-in progress meter +completely. + +\fBNOTE:\fP future versions of libcurl is likely to not have any built-in +progress meter at all. +.TP +.B CURLOPT_NOBODY +A non-zero parameter tells the library to not include the body-part in the +output. This is only relevant for protocols that have separate header and body +parts. +.TP +.B CURLOPT_FAILONERROR +A non-zero parameter tells the library to fail silently if the HTTP code +returned is equal to or larger than 300. The default action would be to return +the page normally, ignoring that code. +.TP +.B CURLOPT_UPLOAD +A non-zero parameter tells the library to prepare for an upload. The +CURLOPT_INFILE and CURLOPT_INFILESIZE are also interesting for uploads. +.TP +.B CURLOPT_POST +A non-zero parameter tells the library to do a regular HTTP post. This is a +normal application/x-www-form-urlencoded kind, which is the most commonly used +one by HTML forms. See the CURLOPT_POSTFIELDS option for how to specify the +data to post and CURLOPT_POSTFIELDSIZE in how to set the data size. Starting +with libcurl 7.8, this option is obsolete. Using the CURLOPT_POSTFIELDS option +will imply this option. +.TP +.B CURLOPT_FTPLISTONLY +A non-zero parameter tells the library to just list the names of an ftp +directory, instead of doing a full directory listing that would include file +sizes, dates etc. +.TP +.B CURLOPT_FTPAPPEND +A non-zero parameter tells the library to append to the remote file instead of +overwrite it. This is only useful when uploading to a ftp site. +.TP +.B CURLOPT_NETRC +A non-zero parameter tells the library to scan your \fI~/.netrc\fP file to +find user name and password for the remote site you are about to access. Only +machine name, user name and password is taken into account (init macros and +similar things aren't supported). + +\fBNote:\fP libcurl does not verify that the file has the correct properties +set (as the standard Unix ftp client does). It should only be readable by +user. +.TP +.B CURLOPT_FOLLOWLOCATION +A non-zero parameter tells the library to follow any Location: header that the +server sends as part of a HTTP header. + +\fBNOTE:\fP this means that the library will re-send the same request on the +new location and follow new Location: headers all the way until no more such +headers are returned. \fICURLOPT_MAXREDIRS\fP can be used to limit the number +of redirects libcurl will follow. +.TP +.B CURLOPT_TRANSFERTEXT +A non-zero parameter tells the library to use ASCII mode for ftp transfers, +instead of the default binary transfer. For LDAP transfers it gets the data in +plain text instead of HTML and for win32 systems it does not set the stdout to +binary mode. This option can be usable when transferring text data between +systems with different views on certain characters, such as newlines or +similar. +.TP +.B CURLOPT_PUT +A non-zero parameter tells the library to use HTTP PUT to transfer data. The +data should be set with CURLOPT_INFILE and CURLOPT_INFILESIZE. +.TP +.B CURLOPT_USERPWD +Pass a char * as parameter, which should be [user name]:[password] to use for +the connection. If the password is left out, you will be prompted for it. +\fICURLOPT_PASSWDFUNCTION\fP can be used to set your own prompt function. +.TP +.B CURLOPT_PROXYUSERPWD +Pass a char * as parameter, which should be [user name]:[password] to use for +the connection to the HTTP proxy. If the password is left out, you will be +prompted for it. \fICURLOPT_PASSWDFUNCTION\fP can be used to set your own +prompt function. +.TP +.B CURLOPT_RANGE +Pass a char * as parameter, which should contain the specified range you +want. It should be in the format "X-Y", where X or Y may be left out. HTTP +transfers also support several intervals, separated with commas as in +\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP +server to send the response document in pieces (using standard MIME separation +techniques). +.TP +.B CURLOPT_ERRORBUFFER +Pass a char * to a buffer that the libcurl may store human readable error +messages in. This may be more helpful than just the return code from the +library. The buffer must be at least CURL_ERROR_SIZE big. + +\fBNote:\fP if the library does not return an error, the buffer may not have +been touched. Do not rely on the contents in those cases. +.TP +.B CURLOPT_TIMEOUT +Pass a long as parameter containing the maximum time in seconds that you allow +the libcurl transfer operation to take. Normally, name lookups can take a +considerable time and limiting operations to less than a few minutes risk +aborting perfectly normal operations. This option will cause curl to use the +SIGALRM to enable time-outing system calls. + +\fBNOTE:\fP this does not work in Unix multi-threaded programs, as it uses +signals. +.TP +.B CURLOPT_POSTFIELDS +Pass a char * as parameter, which should be the full data to post in a HTTP +post operation. This is a normal application/x-www-form-urlencoded kind, which +is the most commonly used one by HTML forms. See also the CURLOPT_POST. Since +7.8, using CURLOPT_POSTFIELDS implies CURLOPT_POST. + +\fBNote:\fP to make multipart/formdata posts (aka rfc1867-posts), check out +the \fICURLOPT_HTTPPOST\fP option. +.TP +.B CURLOPT_POSTFIELDSIZE +If you want to post data to the server without letting libcurl do a strlen() +to measure the data size, this option must be used. When this option is used +you can post fully binary data, which otherwise is likely to fail. If this +size is set to zero, the library will use strlen() to get the size. (Added in +libcurl 7.2) +.TP +.B CURLOPT_REFERER +Pass a pointer to a zero terminated string as parameter. It will be used to +set the Referer: header in the http request sent to the remote server. This +can be used to fool servers or scripts. You can also set any custom header +with \fICURLOPT_HTTPHEADER\fP. +.TP +.B CURLOPT_USERAGENT +Pass a pointer to a zero terminated string as parameter. It will be used to +set the User-Agent: header in the http request sent to the remote server. This +can be used to fool servers or scripts. You can also set any custom header +with \fICURLOPT_HTTPHEADER\fP. +.TP +.B CURLOPT_FTPPORT +Pass a pointer to a zero terminated string as parameter. It will be used to +get the IP address to use for the ftp PORT instruction. The PORT instruction +tells the remote server to connect to our specified IP address. The string may +be a plain IP address, a host name, an network interface name (under Unix) or +just a '-' letter to let the library use your systems default IP +address. Default FTP operations are passive, and thus won't use PORT. +.TP +.B CURLOPT_LOW_SPEED_LIMIT +Pass a long as parameter. It contains the transfer speed in bytes per second +that the transfer should be below during CURLOPT_LOW_SPEED_TIME seconds for +the library to consider it too slow and abort. +.TP +.B CURLOPT_LOW_SPEED_TIME +Pass a long as parameter. It contains the time in seconds that the transfer +should be below the CURLOPT_LOW_SPEED_LIMIT for the library to consider it too +slow and abort. +.TP +.B CURLOPT_RESUME_FROM +Pass a long as parameter. It contains the offset in number of bytes that you +want the transfer to start from. +.TP +.B CURLOPT_COOKIE +Pass a pointer to a zero terminated string as parameter. It will be used to +set a cookie in the http request. The format of the string should be +[NAME]=[CONTENTS]; Where NAME is the cookie name. +.TP +.B CURLOPT_HTTPHEADER +Pass a pointer to a linked list of HTTP headers to pass to the server in your +HTTP request. The linked list should be a fully valid list of \fBstruct +curl_slist\fP structs properly filled in. Use \fIcurl_slist_append(3)\fP to +create the list and \fIcurl_slist_free_all(3)\fP to clean up an entire +list. If you add a header that is otherwise generated and used by libcurl +internally, your added one will be used instead. If you add a header with no +contents as in 'Accept:' (no data on the right side of the colon), the +internally used header will get disabled. Thus, using this option you can add +new headers, replace internal headers and remove internal headers. + +\fBNOTE:\fPThe most commonly replaced headers have "shortcuts" in the options +CURLOPT_COOKIE, CURLOPT_USERAGENT and CURLOPT_REFERER. +.TP +.B CURLOPT_HTTPPOST +Tells libcurl you want a multipart/formdata HTTP POST to be made and you +instruct what data to pass on to the server. Pass a pointer to a linked list +of HTTP post structs as parameter. The linked list should be a fully valid +list of 'struct HttpPost' structs properly filled in. The best and most +elegant way to do this, is to use \fIcurl_formadd(3)\fP as documented. The +data in this list must remained intact until you close this curl handle again +with \fIcurl_easy_cleanup(3)\fP. +.TP +.B CURLOPT_SSLCERT +Pass a pointer to a zero terminated string as parameter. The string should be +the file name of your certificate. The default format is "PEM" and can be +changed with \fICURLOPT_SSLCERTTYPE\fP. +.TP +.B CURLOPT_SSLCERTTYPE +Pass a pointer to a zero terminated string as parameter. The string should be +the format of your certificate. Supported formats are "PEM" and "DER". (Added +in 7.9.3) +.TP +.B CURLOPT_SSLCERTPASSWD +Pass a pointer to a zero terminated string as parameter. It will be used as +the password required to use the CURLOPT_SSLCERT certificate. If the password +is not supplied, you will be prompted for it. \fICURLOPT_PASSWDFUNCTION\fP can +be used to set your own prompt function. + +\fBNOTE:\fPThis option is replaced by \fICURLOPT_SSLKEYPASSWD\fP and only +cept for backward compatibility. You never needed a pass phrase to load +a certificate but you need one to load your private key. +.TP +.B CURLOPT_SSLKEY +Pass a pointer to a zero terminated string as parameter. The string should be +the file name of your private key. The default format is "PEM" and can be +changed with \fICURLOPT_SSLKEYTYPE\fP. (Added in 7.9.3) +.TP +.B CURLOPT_SSLKEYTYPE +Pass a pointer to a zero terminated string as parameter. The string should be +the format of your private key. Supported formats are "PEM", "DER" and "ENG". +(Added in 7.9.3) + +\fBNOTE:\fPThe format "ENG" enables you to load the private key from a crypto +engine. in this case \fICURLOPT_SSLKEY\fP is used as an identifier passed to +the engine. You have to set the crypto engine with \fICURLOPT_SSL_ENGINE\fP. +.TP +.B CURLOPT_SSLKEYASSWD +Pass a pointer to a zero terminated string as parameter. It will be used as +the password required to use the \fICURLOPT_SSLKEY\fP private key. If the +password is not supplied, you will be prompted for +it. \fICURLOPT_PASSWDFUNCTION\fP can be used to set your own prompt function. +(Added in 7.9.3) +.TP +.B CURLOPT_SSL_ENGINE +Pass a pointer to a zero terminated string as parameter. It will be used as +the identifier for the crypto engine you want to use for your private +key. (Added in 7.9.3) + +\fBNOTE:\fPIf the crypto device cannot be loaded, +\fICURLE_SSL_ENGINE_NOTFOUND\fP is returned. +.TP +.B CURLOPT_SSL_ENGINEDEFAULT +Sets the actual crypto engine as the default for (asymetric) crypto +operations. (Added in 7.9.3) + +\fBNOTE:\fPIf the crypto device cannot be set, +\fICURLE_SSL_ENGINE_SETFAILED\fP is returned. +.TP +.B CURLOPT_CRLF +Convert Unix newlines to CRLF newlines on FTP uploads. +.TP +.B CURLOPT_QUOTE +Pass a pointer to a linked list of FTP commands to pass to the server prior to +your ftp request. The linked list should be a fully valid list of 'struct +curl_slist' structs properly filled in. Use \fIcurl_slist_append(3)\fP to +append strings (commands) to the list, and clear the entire list afterwards +with \fIcurl_slist_free_all(3)\fP. Disable this operation again by setting a +NULL to this option. +.TP +.B CURLOPT_POSTQUOTE +Pass a pointer to a linked list of FTP commands to pass to the server after +your ftp transfer request. The linked list should be a fully valid list of +struct curl_slist structs properly filled in as described for +\fICURLOPT_QUOTE\fP. Disable this operation again by setting a NULL to this +option. +.TP +.B CURLOPT_WRITEHEADER +Pass a pointer to be used to write the header part of the received data to. If +you don't use your own callback to take care of the writing, this must be a +valid FILE *. See also the \fICURLOPT_HEADERFUNCTION\fP option below on how to set a +custom get-all-headers callback. +.TP +.B CURLOPT_HEADERFUNCTION +Function pointer that should match the following prototype: \fIsize_t +function( void *ptr, size_t size, size_t nmemb, void *stream);\fP. This +function gets called by libcurl as soon as there is received header data that +needs to be written down. The headers are guaranteed to be written one-by-one +and only complete lines are written. Parsing headers should be easy enough +using this. The size of the data pointed to by \fIptr\fP is \fIsize\fP +multiplied with \fInmemb\fP. The pointer named \fIstream\fP will be the one +you passed to libcurl with the \fICURLOPT_WRITEHEADER\fP option. Return the +number of bytes actually written or return -1 to signal error to the library +(it will cause it to abort the transfer with a \fICURLE_WRITE_ERROR\fP return +code). (Added in libcurl 7.7.2) +.TP +.B CURLOPT_COOKIEFILE +Pass a pointer to a zero terminated string as parameter. It should contain the +name of your file holding cookie data. The cookie data may be in Netscape / +Mozilla cookie data format or just regular HTTP-style headers dumped to a +file. +.TP +.B CURLOPT_SSLVERSION +Pass a long as parameter. Set what version of SSL to attempt to use, 2 or +3. By default, the SSL library will try to solve this by itself although some +servers make this difficult why you at times may have to use this option. +.TP +.B CURLOPT_TIMECONDITION +Pass a long as parameter. This defines how the CURLOPT_TIMEVALUE time value is +treated. You can set this parameter to TIMECOND_IFMODSINCE or +TIMECOND_IFUNMODSINCE. This is a HTTP-only feature. (TBD) +.TP +.B CURLOPT_TIMEVALUE +Pass a long as parameter. This should be the time in seconds since 1 jan 1970, +and the time will be used as specified in CURLOPT_TIMECONDITION or if that +isn't used, it will be TIMECOND_IFMODSINCE by default. +.TP +.B CURLOPT_CUSTOMREQUEST +Pass a pointer to a zero terminated string as parameter. It will be user +instead of GET or HEAD when doing the HTTP request. This is useful for doing +DELETE or other more or less obscure HTTP requests. Don't do this at will, +make sure your server supports the command first. +.TP +.B CURLOPT_STDERR +Pass a FILE * as parameter. This is the stream to use instead of stderr +internally when reporting errors. +.TP +.B CURLOPT_INTERFACE +Pass a char * as parameter. This set the interface name to use as outgoing +network interface. The name can be an interface name, an IP address or a host +name. (Added in libcurl 7.3) +.TP +.B CURLOPT_KRB4LEVEL +Pass a char * as parameter. Set the krb4 security level, this also enables +krb4 awareness. This is a string, 'clear', 'safe', 'confidential' or +\&'private'. If the string is set but doesn't match one of these, 'private' +will be used. Set the string to NULL to disable kerberos4. The kerberos +support only works for FTP. (Added in libcurl 7.3) +.TP +.B CURLOPT_PROGRESSFUNCTION +Function pointer that should match the \fIcurl_progress_callback\fP prototype +found in \fI<curl/curl.h>\fP. This function gets called by libcurl instead of +its internal equivalent with a frequent interval during data transfer. +Unknown/unused argument values will be set to zero (like if you only download +data, the upload size will remain 0). Returning a non-zero value from this +callback will cause libcurl to abort the transfer and return +\fICURLE_ABORTED_BY_CALLBACK\fP. +.TP +.B CURLOPT_PROGRESSDATA +Pass a pointer that will be untouched by libcurl and passed as the first +argument in the progress callback set with \fICURLOPT_PROGRESSFUNCTION\fP. +.TP +.B CURLOPT_SSL_VERIFYPEER +Pass a long that is set to a non-zero value to make curl verify the peer's +certificate. The certificate to verify against must be specified with the +CURLOPT_CAINFO option. (Added in 7.4.2) +.TP +.B CURLOPT_CAINFO +Pass a char * to a zero terminated file naming holding the certificate to +verify the peer with. This only makes sense when used in combination with the +CURLOPT_SSL_VERIFYPEER option. (Added in 7.4.2) +.TP +.B CURLOPT_PASSWDFUNCTION +Pass a pointer to a \fIcurl_passwd_callback\fP function that will be called +instead of the internal one if libcurl requests a password. The function must +match this prototype: \fBint my_getpass(void *client, char *prompt, char* +buffer, int buflen );\fP. If set to NULL, it equals to making the function +always fail. If the function returns a non-zero value, it will abort the +operation and an error (CURLE_BAD_PASSWORD_ENTERED) will be returned. +\fIclient\fP is a generic pointer, see \fICURLOPT_PASSWDDATA\fP. \fIprompt\fP +is a zero-terminated string that is text that prefixes the input request. +\fIbuffer\fP is a pointer to data where the entered password should be stored +and \fIbuflen\fP is the maximum number of bytes that may be written in the +buffer. (Added in 7.4.2) +.TP +.B CURLOPT_PASSWDDATA +Pass a void * to whatever data you want. The passed pointer will be the first +argument sent to the specifed \fICURLOPT_PASSWDFUNCTION\fP function. (Added in +7.4.2) +.TP +.B CURLOPT_FILETIME +Pass a long. If it is a non-zero value, libcurl will attempt to get the +modification date of the remote document in this operation. This requires that +the remote server sends the time or replies to a time querying command. The +\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument +can be used after a transfer to extract the received time (if any). (Added in +7.5) +.TP +.B CURLOPT_MAXREDIRS +Pass a long. The set number will be the redirection limit. If that many +redirections have been followed, the next redirect will cause an error +(\fICURLE_TOO_MANY_REDIRECTS\fP). This option only makes sense if the +\fICURLOPT_FOLLOWLOCATION\fP is used at the same time. (Added in 7.5) +.TP +.B CURLOPT_MAXCONNECTS +Pass a long. The set number will be the persistant connection cache size. The +set amount will be the maximum amount of simultaneous connections that libcurl +may cache between file transfers. Default is 5, and there isn't much point in +changing this value unless you are perfectly aware of how this work and +changes libcurl's behaviour. + +\fBNOTE:\fP if you already have performed transfers with this curl handle, +setting a smaller MAXCONNECTS than before may cause open connections to get +closed unnecessarily. (Added in 7.7) +.TP +.B CURLOPT_CLOSEPOLICY +Pass a long. This option sets what policy libcurl should use when the +connection cache is filled and one of the open connections has to be closed to +make room for a new connection. This must be one of the CURLCLOSEPOLICY_* +defines. Use \fICURLCLOSEPOLICY_LEAST_RECENTLY_USED\fP to make libcurl close +the connection that was least recently used, that connection is also least +likely to be capable of re-use. Use \fICURLCLOSEPOLICY_OLDEST\fP to make +libcurl close the oldest connection, the one that was created first among the +ones in the connection cache. The other close policies are not support +yet. (Added in 7.7) +.TP +.B CURLOPT_FRESH_CONNECT +Pass a long. Set to non-zero to make the next transfer use a new (fresh) +connection by force. If the connection cache is full before this connection, +one of the existing connections will be closed as according to the selected or +default policy. This option should be used with caution and only if you +understand what it does. Set this to 0 to have libcurl attempt re-using an +existing connection (default behavior). (Added in 7.7) +.TP +.B CURLOPT_FORBID_REUSE +Pass a long. Set to non-zero to make the next transfer explicitly close the +connection when done. Normally, libcurl keep all connections alive when done +with one transfer in case there comes a succeeding one that can re-use them. +This option should be used with caution and only if you understand what it +does. Set to 0 to have libcurl keep the connection open for possibly later +re-use (default behavior). (Added in 7.7) +.TP +.B CURLOPT_RANDOM_FILE +Pass a char * to a zero terminated file name. The file will be used to read +from to seed the random engine for SSL. The more random the specified file is, +the more secure will the SSL connection become. +.TP +.B CURLOPT_EGDSOCKET +Pass a char * to the zero terminated path name to the Entropy Gathering Daemon +socket. It will be used to seed the random engine for SSL. +.TP +.B CURLOPT_CONNECTTIMEOUT +Pass a long. It should contain the maximum time in seconds that you allow the +connection to the server to take. This only limits the connection phase, once +it has connected, this option is of no more use. Set to zero to disable +connection timeout (it will then only timeout on the system's internal +timeouts). See also the \fICURLOPT_TIMEOUT\fP option. + +\fBNOTE:\fP this does not work in unix multi-threaded programs, as it uses +signals. +.TP +.B CURLOPT_HTTPGET +Pass a long. If the long is non-zero, this forces the HTTP request to get back +to GET. Only really usable if POST, PUT or a custom request have been used +previously using the same curl handle. (Added in 7.8.1) +.TP +.B CURLOPT_SSL_VERIFYHOST +Pass a long. Set if we should verify the Common name from the peer certificate +in the SSL handshake, set 1 to check existence, 2 to ensure that it matches +the provided hostname. (Added in 7.8.1) +.TP +.B CURLOPT_COOKIEJAR +Pass a file name as char *, zero terminated. This will make libcurl dump all +internally known cookies to the specified file when \fIcurl_easy_cleanup(3)\fP +is called. If no cookies are known, no file will be created. Specify "-" to +instead have the cookies written to stdout. +.TP +.B CURLOPT_SSL_CIPHER_LIST +Pass a char *, pointing to a zero terminated string holding the list of +ciphers to use for the SSL connection. The list must be syntactly correct, it +consists of one or more cipher strings separated by colons. Commas or spaces +are also acceptable separators but colons are normally used, \!, \- and \+ can +be used as operators. Valid examples of cipher lists include 'RC4-SHA', +\'SHA1+DES\', 'TLSv1' and 'DEFAULT'. The default list is normally set when you +compile OpenSSL. + +You'll find more details about cipher lists on this URL: +\fIhttp://www.openssl.org/docs/apps/ciphers.html\fP +.TP +.B CURLOPT_HTTP_VERSION +Pass a long, set to one of the values described below. They force libcurl to +use the specific HTTP versions. This is not sensible to do unless you have a +good reason. +.RS +.TP 5 +.B CURL_HTTP_VERSION_NONE +We don't care about what version the library uses. libcurl will use whatever +it thinks fit. +.TP +.B CURL_HTTP_VERSION_1_0 +Enforce HTTP 1.0 requests. +.TP +.B CURL_HTTP_VERSION_1_1 +Enforce HTTP 1.1 requests. +.RE +.TP +.B CURLOPT_FTP_USE_EPSV +Pass a long. If the value is non-zero, it tells curl to use the EPSV command +when doing passive FTP downloads (which is always does by default). Using EPSV +means that it will first attempt to use EPSV before using PASV, but if you +pass FALSE (zero) to this option, it will not try using EPSV, only plain PASV. +.PP +.SH RETURN VALUE +CURLE_OK (zero) means that the option was set properly, non-zero means an +error occurred as \fI<curl/curl.h>\fP defines. +.SH "SEE ALSO" +.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " +.SH BUGS +If you find any bugs, or just have questions, subscribe to one of the mailing +lists and post. We won't bite. + diff --git a/Build/source/libs/curl/docs/libcurl/curl_easy_setopt.html b/Build/source/libs/curl/docs/libcurl/curl_easy_setopt.html new file mode 100644 index 00000000000..b6bce1c476a --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_easy_setopt.html @@ -0,0 +1,810 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_easy_setopt - Set curl easy-session options + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + #include <curl/curl.h> + + CURLcode curl_easy_setopt(CURL *handle, CURLoption option, + parameter); + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + curl_easy_setopt() is used to tell libcurl how to behave. + Most operations in libcurl have default actions, and by + using the appropriate options to <I>curl</I><B>_</B><I>easy</I><B>_</B><I>setopt</I>, you can + change them. All options are set with the <I>option</I> followed + by a <I>parameter</I>. That parameter can be a long, a function + pointer or an object pointer, all depending on what the spe + cific option expects. Read this manual carefully as bad + input values may cause libcurl to behave badly! You can + only set one option in each function call. A typical appli + cation uses many curl_easy_setopt() calls in the setup + phase. + + <B>NOTE:</B> strings passed to libcurl as 'char *' arguments, will + not be copied by the library. Instead you should keep them + available until libcurl no longer needs them. Failing to do + so will cause very odd behavior or even crashes. + + <B>NOTE2:</B> options set with this function call are valid for the + forthcoming data transfers that are performed when you + invoke <I>curl</I><B>_</B><I>easy</I><B>_</B><I>perform</I>. The options are not in any way + reset between transfers, so if you want subsequent transfers + with different options, you must change them between the + transfers. + + The <I>handle</I> is the return code from a <I>curl</I><B>_</B><I>easy</I><B>_</B><I>init(3)</I> or + <I>curl</I><B>_</B><I>easy</I><B>_</B><I>duphandle(3)</I> call. + + +</PRE> +<H2>OPTIONS</H2><PRE> + The options are listed in a sort of random order, but you'll + figure it out! + + <B>CURLOPT_FILE</B> + Data pointer to pass to the file write function. + Note that if you specify the <I>CURLOPT</I><B>_</B><I>WRITEFUNCTION</I>, + this is the pointer you'll get as input. If you + don't use a callback, you must pass a 'FILE *' as + libcurl will pass this to fwrite() when writing + data. + + <B>NOTE:</B> If you're using libcurl as a win32 DLL, you + MUST use the <I>CURLOPT</I><B>_</B><I>WRITEFUNCTION</I> if you set this + option or you will experience crashes. + + <B>CURLOPT_WRITEFUNCTION</B> + Function pointer that should match the following + prototype: <B>size_t</B> <B>function(</B> <B>void</B> <B>*ptr,</B> <B>size_t</B> <B>size,</B> + <B>size_t</B> <B>nmemb,</B> <B>void</B> <B>*stream);</B> This function gets + called by libcurl as soon as there is data available + to pass available that needs to be saved. The size + of the data pointed to by <I>ptr</I> is <I>size</I> multiplied + with <I>nmemb</I>. Return the number of bytes actually + taken care of. If that amount differs from the + amount passed to your function, it'll signal an + error to the library and it will abort the transfer + and return <I>CURLE</I><B>_</B><I>WRITE</I><B>_</B><I>ERROR</I>. + + Set the <I>stream</I> argument with the <B>CURLOPT_FILE</B> + option. + + <B>NOTE:</B> you will be passed as much data as possible in + all invokes, but you cannot possibly make any + assumptions. It may be one byte, it may be thou + sands. + + <B>CURLOPT_INFILE</B> + Data pointer to pass to the file read function. Note + that if you specify the <I>CURLOPT</I><B>_</B><I>READFUNCTION</I>, this + is the pointer you'll get as input. If you don't + specify a read callback, this must be a valid FILE + *. + + <B>NOTE:</B> If you're using libcurl as a win32 DLL, you + MUST use a <I>CURLOPT</I><B>_</B><I>READFUNCTION</I> if you set this + option. + + <B>CURLOPT_READFUNCTION</B> + Function pointer that should match the following + prototype: <B>size_t</B> <B>function(</B> <B>void</B> <B>*ptr,</B> <B>size_t</B> <B>size,</B> + <B>size_t</B> <B>nmemb,</B> <B>void</B> <B>*stream);</B> This function gets + called by libcurl as soon as it needs to read data + in order to send it to the peer. The data area + pointed at by the pointer <I>ptr</I> may be filled with at + most <I>size</I> multiplied with <I>nmemb</I> number of bytes. + Your function must return the actual number of bytes + that you stored in that memory area. Returning 0 + will signal end-of-file to the library and cause it + to stop the current transfer. + + <B>CURLOPT_INFILESIZE</B> + When uploading a file to a remote site, this option + should be used to tell libcurl what the expected + size of the infile is. + + <B>CURLOPT_URL</B> + The actual URL to deal with. The parameter should be + a char * to a zero terminated string. The string + must remain present until curl no longer needs it, + as it doesn't copy the string. + + <B>NOTE:</B> this option is (the only one) required to be + set before <I>curl</I><B>_</B><I>easy</I><B>_</B><I>perform(3)</I> is called. + + <B>CURLOPT_PROXY</B> + Set HTTP proxy to use. The parameter should be a + char * to a zero terminated string holding the host + name or dotted IP address. To specify port number in + this string, append :[port] to the end of the host + name. The proxy string may be prefixed with [proto + col]:// since any such prefix will be ignored. The + proxy's port number may optionally be specified with + the separate option <I>CURLOPT</I><B>_</B><I>PROXYPORT</I>. + + <B>NOTE:</B> when you tell the library to use a HTTP proxy, + libcurl will transparently convert operations to + HTTP even if you specify a FTP URL etc. This may + have an impact on what other features of the library + you can use, such as CURLOPT_QUOTE and similar FTP + specifics that don't work unless you tunnel through + the HTTP proxy. Such tunneling is activated with + <I>CURLOPT</I><B>_</B><I>HTTPPROXYTUNNEL</I>. + + <B>NOTE2:</B> libcurl respects the environment variables + <B>http_proxy</B>, <B>ftp_proxy</B>, <B>all_proxy</B> etc, if any of + those is set. + + <B>CURLOPT_PROXYPORT</B> + Pass a long with this option to set the proxy port + to connect to unless it is specified in the proxy + string <I>CURLOPT</I><B>_</B><I>PROXY</I>. + + <B>CURLOPT_HTTPPROXYTUNNEL</B> + Set the parameter to non-zero to get the library to + tunnel all operations through a given HTTP proxy. + Note that there is a big difference between using a + proxy and to tunnel through it. If you don't know + what this means, you probably don't want this tun + neling option. (Added in libcurl 7.3) + + <B>CURLOPT_VERBOSE</B> + Set the parameter to non-zero to get the library to + display a lot of verbose information about its oper + ations. Very useful for libcurl and/or protocol + debugging and understanding. + + You hardly ever want this set in production use, you + will almost always want this when you debug/report + problems. + + <B>CURLOPT_HEADER</B> + A non-zero parameter tells the library to include + the header in the body output. This is only relevant + for protocols that actually have headers preceding + the data (like HTTP). + + <B>CURLOPT_NOPROGRESS</B> + A non-zero parameter tells the library to shut of + the built-in progress meter completely. + + <B>NOTE:</B> future versions of libcurl is likely to not + have any built-in progress meter at all. + + <B>CURLOPT_NOBODY</B> + A non-zero parameter tells the library to not + include the body-part in the output. This is only + relevant for protocols that have separate header and + body parts. + + <B>CURLOPT_FAILONERROR</B> + A non-zero parameter tells the library to fail + silently if the HTTP code returned is equal to or + larger than 300. The default action would be to + return the page normally, ignoring that code. + + <B>CURLOPT_UPLOAD</B> + A non-zero parameter tells the library to prepare + for an upload. The CURLOPT_INFILE and CUR + LOPT_INFILESIZE are also interesting for uploads. + + <B>CURLOPT_POST</B> + A non-zero parameter tells the library to do a regu + lar HTTP post. This is a normal application/x-www- + form-urlencoded kind, which is the most commonly + used one by HTML forms. See the CURLOPT_POSTFIELDS + option for how to specify the data to post and CUR + LOPT_POSTFIELDSIZE in how to set the data size. + Starting with libcurl 7.8, this option is obsolete. + Using the CURLOPT_POSTFIELDS option will imply this + option. + + <B>CURLOPT_FTPLISTONLY</B> + A non-zero parameter tells the library to just list + the names of an ftp directory, instead of doing a + full directory listing that would include file + sizes, dates etc. + + <B>CURLOPT_FTPAPPEND</B> + A non-zero parameter tells the library to append to + the remote file instead of overwrite it. This is + only useful when uploading to a ftp site. + + <B>CURLOPT_NETRC</B> + A non-zero parameter tells the library to scan your + <I>~/.netrc</I> file to find user name and password for the + remote site you are about to access. Only machine + name, user name and password is taken into account + (init macros and similar things aren't supported). + + <B>Note:</B> libcurl does not verify that the file has the + correct properties set (as the standard Unix ftp + client does). It should only be readable by user. + + <B>CURLOPT_FOLLOWLOCATION</B> + A non-zero parameter tells the library to follow any + Location: header that the server sends as part of a + HTTP header. + + <B>NOTE:</B> this means that the library will re-send the + same request on the new location and follow new + Location: headers all the way until no more such + headers are returned. <I>CURLOPT</I><B>_</B><I>MAXREDIRS</I> can be used + to limit the number of redirects libcurl will fol + low. + + <B>CURLOPT_TRANSFERTEXT</B> + A non-zero parameter tells the library to use ASCII + mode for ftp transfers, instead of the default + binary transfer. For LDAP transfers it gets the data + in plain text instead of HTML and for win32 systems + it does not set the stdout to binary mode. This + option can be usable when transferring text data + between systems with different views on certain + characters, such as newlines or similar. + + <B>CURLOPT_PUT</B> + A non-zero parameter tells the library to use HTTP + PUT to transfer data. The data should be set with + CURLOPT_INFILE and CURLOPT_INFILESIZE. + + <B>CURLOPT_USERPWD</B> + Pass a char * as parameter, which should be [user + name]:[password] to use for the connection. If the + password is left out, you will be prompted for it. + <I>CURLOPT</I><B>_</B><I>PASSWDFUNCTION</I> can be used to set your own + prompt function. + + <B>CURLOPT_PROXYUSERPWD</B> + Pass a char * as parameter, which should be [user + name]:[password] to use for the connection to the + HTTP proxy. If the password is left out, you will be + prompted for it. <I>CURLOPT</I><B>_</B><I>PASSWDFUNCTION</I> can be used + to set your own prompt function. + + <B>CURLOPT_RANGE</B> + Pass a char * as parameter, which should contain the + specified range you want. It should be in the format + "X-Y", where X or Y may be left out. HTTP transfers + also support several intervals, separated with com + mas as in <I>"X-Y,N-M"</I>. Using this kind of multiple + intervals will cause the HTTP server to send the + response document in pieces (using standard MIME + separation techniques). + + <B>CURLOPT_ERRORBUFFER</B> + Pass a char * to a buffer that the libcurl may store + human readable error messages in. This may be more + helpful than just the return code from the library. + The buffer must be at least CURL_ERROR_SIZE big. + + <B>Note:</B> if the library does not return an error, the + buffer may not have been touched. Do not rely on the + contents in those cases. + + <B>CURLOPT_TIMEOUT</B> + Pass a long as parameter containing the maximum time + in seconds that you allow the libcurl transfer oper + ation to take. Normally, name lookups can take a + considerable time and limiting operations to less + than a few minutes risk aborting perfectly normal + operations. This option will cause curl to use the + SIGALRM to enable time-outing system calls. + + <B>NOTE:</B> this does not work in Unix multi-threaded pro + grams, as it uses signals. + + <B>CURLOPT_POSTFIELDS</B> + Pass a char * as parameter, which should be the full + data to post in a HTTP post operation. This is a + normal application/x-www-form-urlencoded kind, which + is the most commonly used one by HTML forms. See + also the CURLOPT_POST. Since 7.8, using CUR + LOPT_POSTFIELDS implies CURLOPT_POST. + + <B>Note:</B> to make multipart/formdata posts (aka + rfc1867-posts), check out the <I>CURLOPT</I><B>_</B><I>HTTPPOST</I> + option. + + <B>CURLOPT_POSTFIELDSIZE</B> + If you want to post data to the server without let + ting libcurl do a strlen() to measure the data size, + this option must be used. When this option is used + you can post fully binary data, which otherwise is + likely to fail. If this size is set to zero, the + library will use strlen() to get the size. (Added in + libcurl 7.2) + + <B>CURLOPT_REFERER</B> + Pass a pointer to a zero terminated string as param + eter. It will be used to set the Referer: header in + the http request sent to the remote server. This can + be used to fool servers or scripts. You can also set + any custom header with <I>CURLOPT</I><B>_</B><I>HTTPHEADER</I>. + + <B>CURLOPT_USERAGENT</B> + Pass a pointer to a zero terminated string as param + eter. It will be used to set the User-Agent: header + in the http request sent to the remote server. This + can be used to fool servers or scripts. You can also + set any custom header with <I>CURLOPT</I><B>_</B><I>HTTPHEADER</I>. + + <B>CURLOPT_FTPPORT</B> + Pass a pointer to a zero terminated string as param + eter. It will be used to get the IP address to use + for the ftp PORT instruction. The PORT instruction + tells the remote server to connect to our specified + IP address. The string may be a plain IP address, a + host name, an network interface name (under Unix) or + just a '-' letter to let the library use your sys + tems default IP address. Default FTP operations are + passive, and thus won't use PORT. + + <B>CURLOPT_LOW_SPEED_LIMIT</B> + Pass a long as parameter. It contains the transfer + speed in bytes per second that the transfer should + be below during CURLOPT_LOW_SPEED_TIME seconds for + the library to consider it too slow and abort. + + <B>CURLOPT_LOW_SPEED_TIME</B> + Pass a long as parameter. It contains the time in + seconds that the transfer should be below the CUR + LOPT_LOW_SPEED_LIMIT for the library to consider it + too slow and abort. + + <B>CURLOPT_RESUME_FROM</B> + Pass a long as parameter. It contains the offset in + number of bytes that you want the transfer to start + from. + + <B>CURLOPT_COOKIE</B> + Pass a pointer to a zero terminated string as param + eter. It will be used to set a cookie in the http + request. The format of the string should be + [NAME]=[CONTENTS]; Where NAME is the cookie name. + + <B>CURLOPT_HTTPHEADER</B> + Pass a pointer to a linked list of HTTP headers to + pass to the server in your HTTP request. The linked + list should be a fully valid list of <B>struct</B> + <B>curl_slist</B> structs properly filled in. Use + <I>curl</I><B>_</B><I>slist</I><B>_</B><I>append(3)</I> to create the list and + <I>curl</I><B>_</B><I>slist</I><B>_</B><I>free</I><B>_</B><I>all(3)</I> to clean up an entire list. + If you add a header that is otherwise generated and + used by libcurl internally, your added one will be + used instead. If you add a header with no contents + as in 'Accept:' (no data on the right side of the + colon), the internally used header will get dis + abled. Thus, using this option you can add new head + ers, replace internal headers and remove internal + headers. + + <B>NOTE:</B>The most commonly replaced headers have "short + cuts" in the options CURLOPT_COOKIE, CURLOPT_USERA + GENT and CURLOPT_REFERER. + + <B>CURLOPT_HTTPPOST</B> + Tells libcurl you want a multipart/formdata HTTP + POST to be made and you instruct what data to pass + on to the server. Pass a pointer to a linked list + of HTTP post structs as parameter. The linked list + should be a fully valid list of 'struct HttpPost' + structs properly filled in. The best and most ele + gant way to do this, is to use <I>curl</I><B>_</B><I>formadd(3)</I> as + documented. The data in this list must remained + intact until you close this curl handle again with + <I>curl</I><B>_</B><I>easy</I><B>_</B><I>cleanup(3)</I>. + + <B>CURLOPT_SSLCERT</B> + Pass a pointer to a zero terminated string as param + eter. The string should be the file name of your + certificate. The default format is "PEM" and can be + changed with <I>CURLOPT</I><B>_</B><I>SSLCERTTYPE</I>. + + <B>CURLOPT_SSLCERTTYPE</B> + Pass a pointer to a zero terminated string as param + eter. The string should be the format of your cer + tificate. Supported formats are "PEM" and "DER". + (Added in 7.9.3) + + <B>CURLOPT_SSLCERTPASSWD</B> + Pass a pointer to a zero terminated string as param + eter. It will be used as the password required to + use the CURLOPT_SSLCERT certificate. If the password + is not supplied, you will be prompted for it. <I>CUR</I> + <I>LOPT</I><B>_</B><I>PASSWDFUNCTION</I> can be used to set your own + prompt function. + + <B>NOTE:</B>This option is replaced by <I>CURLOPT</I><B>_</B><I>SSLKEYPASSWD</I> + and only cept for backward compatibility. You never + needed a pass phrase to load a certificate but you + need one to load your private key. + + <B>CURLOPT_SSLKEY</B> + Pass a pointer to a zero terminated string as param + eter. The string should be the file name of your + private key. The default format is "PEM" and can be + changed with <I>CURLOPT</I><B>_</B><I>SSLKEYTYPE</I>. (Added in 7.9.3) + + <B>CURLOPT_SSLKEYTYPE</B> + Pass a pointer to a zero terminated string as param + eter. The string should be the format of your pri + vate key. Supported formats are "PEM", "DER" and + "ENG". (Added in 7.9.3) + + <B>NOTE:</B>The format "ENG" enables you to load the pri + vate key from a crypto engine. in this case <I>CUR</I> + <I>LOPT</I><B>_</B><I>SSLKEY</I> is used as an identifier passed to the + engine. You have to set the crypto engine with <I>CUR</I> + <I>LOPT</I><B>_</B><I>SSL</I><B>_</B><I>ENGINE</I>. + + <B>CURLOPT_SSLKEYASSWD</B> + Pass a pointer to a zero terminated string as param + eter. It will be used as the password required to + use the <I>CURLOPT</I><B>_</B><I>SSLKEY</I> private key. If the password + is not supplied, you will be prompted for it. <I>CUR</I> + <I>LOPT</I><B>_</B><I>PASSWDFUNCTION</I> can be used to set your own + prompt function. (Added in 7.9.3) + + <B>CURLOPT_SSL_ENGINE</B> + Pass a pointer to a zero terminated string as param + eter. It will be used as the identifier for the + crypto engine you want to use for your private key. + (Added in 7.9.3) + + <B>NOTE:</B>If the crypto device cannot be loaded, + <I>CURLE</I><B>_</B><I>SSL</I><B>_</B><I>ENGINE</I><B>_</B><I>NOTFOUND</I> is returned. + + <B>CURLOPT_SSL_ENGINEDEFAULT</B> + Sets the actual crypto engine as the default for + (asymetric) crypto operations. (Added in 7.9.3) + + <B>NOTE:</B>If the crypto device cannot be set, + <I>CURLE</I><B>_</B><I>SSL</I><B>_</B><I>ENGINE</I><B>_</B><I>SETFAILED</I> is returned. + + <B>CURLOPT_CRLF</B> + Convert Unix newlines to CRLF newlines on FTP + uploads. + + <B>CURLOPT_QUOTE</B> + Pass a pointer to a linked list of FTP commands to + pass to the server prior to your ftp request. The + linked list should be a fully valid list of 'struct + curl_slist' structs properly filled in. Use + <I>curl</I><B>_</B><I>slist</I><B>_</B><I>append(3)</I> to append strings (commands) to + the list, and clear the entire list afterwards with + <I>curl</I><B>_</B><I>slist</I><B>_</B><I>free</I><B>_</B><I>all(3)</I>. Disable this operation again + by setting a NULL to this option. + + <B>CURLOPT_POSTQUOTE</B> + Pass a pointer to a linked list of FTP commands to + pass to the server after your ftp transfer request. + The linked list should be a fully valid list of + struct curl_slist structs properly filled in as + described for <I>CURLOPT</I><B>_</B><I>QUOTE</I>. Disable this operation + again by setting a NULL to this option. + + <B>CURLOPT_WRITEHEADER</B> + Pass a pointer to be used to write the header part + of the received data to. If you don't use your own + callback to take care of the writing, this must be a + valid FILE *. See also the <I>CURLOPT</I><B>_</B><I>HEADERFUNCTION</I> + option below on how to set a custom get-all-headers + callback. + + <B>CURLOPT_HEADERFUNCTION</B> + Function pointer that should match the following + prototype: <I>size</I><B>_</B><I>t</I> <I>function(</I> <I>void</I> <I>*ptr,</I> <I>size</I><B>_</B><I>t</I> <I>size,</I> + <I>size</I><B>_</B><I>t</I> <I>nmemb,</I> <I>void</I> <I>*stream);</I>. This function gets + called by libcurl as soon as there is received + header data that needs to be written down. The head + ers are guaranteed to be written one-by-one and only + complete lines are written. Parsing headers should + be easy enough using this. The size of the data + pointed to by <I>ptr</I> is <I>size</I> multiplied with <I>nmemb</I>. + The pointer named <I>stream</I> will be the one you passed + to libcurl with the <I>CURLOPT</I><B>_</B><I>WRITEHEADER</I> option. + Return the number of bytes actually written or + return -1 to signal error to the library (it will + cause it to abort the transfer with a + <I>CURLE</I><B>_</B><I>WRITE</I><B>_</B><I>ERROR</I> return code). (Added in libcurl + 7.7.2) + + <B>CURLOPT_COOKIEFILE</B> + Pass a pointer to a zero terminated string as param + eter. It should contain the name of your file hold + ing cookie data. The cookie data may be in Netscape + / Mozilla cookie data format or just regular HTTP- + style headers dumped to a file. + + <B>CURLOPT_SSLVERSION</B> + Pass a long as parameter. Set what version of SSL to + attempt to use, 2 or 3. By default, the SSL library + will try to solve this by itself although some + servers make this difficult why you at times may + have to use this option. + + <B>CURLOPT_TIMECONDITION</B> + Pass a long as parameter. This defines how the CUR + LOPT_TIMEVALUE time value is treated. You can set + this parameter to TIMECOND_IFMODSINCE or TIME + COND_IFUNMODSINCE. This is a HTTP-only feature. + (TBD) + + <B>CURLOPT_TIMEVALUE</B> + Pass a long as parameter. This should be the time in + seconds since 1 jan 1970, and the time will be used + as specified in CURLOPT_TIMECONDITION or if that + isn't used, it will be TIMECOND_IFMODSINCE by + default. + + <B>CURLOPT_CUSTOMREQUEST</B> + Pass a pointer to a zero terminated string as param + eter. It will be user instead of GET or HEAD when + doing the HTTP request. This is useful for doing + DELETE or other more or less obscure HTTP requests. + Don't do this at will, make sure your server sup + ports the command first. + + <B>CURLOPT_STDERR</B> + Pass a FILE * as parameter. This is the stream to + use instead of stderr internally when reporting + errors. + + <B>CURLOPT_INTERFACE</B> + Pass a char * as parameter. This set the interface + name to use as outgoing network interface. The name + can be an interface name, an IP address or a host + name. (Added in libcurl 7.3) + + <B>CURLOPT_KRB4LEVEL</B> + Pass a char * as parameter. Set the krb4 security + level, this also enables krb4 awareness. This is a + string, 'clear', 'safe', 'confidential' or 'pri + vate'. If the string is set but doesn't match one + of these, 'private' will be used. Set the string to + NULL to disable kerberos4. The kerberos support only + works for FTP. (Added in libcurl 7.3) + + <B>CURLOPT_PROGRESSFUNCTION</B> + Function pointer that should match the + <I>curl</I><B>_</B><I>progress</I><B>_</B><I>callback</I> prototype found in + <I><curl/curl.h></I>. This function gets called by libcurl + instead of its internal equivalent with a frequent + interval during data transfer. Unknown/unused argu + ment values will be set to zero (like if you only + download data, the upload size will remain 0). + Returning a non-zero value from this callback will + cause libcurl to abort the transfer and return + <I>CURLE</I><B>_</B><I>ABORTED</I><B>_</B><I>BY</I><B>_</B><I>CALLBACK</I>. + + <B>CURLOPT_PROGRESSDATA</B> + Pass a pointer that will be untouched by libcurl and + passed as the first argument in the progress call + back set with <I>CURLOPT</I><B>_</B><I>PROGRESSFUNCTION</I>. + + <B>CURLOPT_SSL_VERIFYPEER</B> + Pass a long that is set to a non-zero value to make + curl verify the peer's certificate. The certificate + to verify against must be specified with the CUR + LOPT_CAINFO option. (Added in 7.4.2) + + <B>CURLOPT_CAINFO</B> + Pass a char * to a zero terminated file naming hold + ing the certificate to verify the peer with. This + only makes sense when used in combination with the + CURLOPT_SSL_VERIFYPEER option. (Added in 7.4.2) + + <B>CURLOPT_PASSWDFUNCTION</B> + Pass a pointer to a <I>curl</I><B>_</B><I>passwd</I><B>_</B><I>callback</I> function + that will be called instead of the internal one if + libcurl requests a password. The function must match + this prototype: <B>int</B> <B>my_getpass(void</B> <B>*client,</B> <B>char</B> + <B>*prompt,</B> <B>char*</B> <B>buffer,</B> <B>int</B> <B>buflen</B> <B>);</B>. If set to + NULL, it equals to making the function always fail. + If the function returns a non-zero value, it will + abort the operation and an error (CURLE_BAD_PASS + WORD_ENTERED) will be returned. <I>client</I> is a generic + pointer, see <I>CURLOPT</I><B>_</B><I>PASSWDDATA</I>. <I>prompt</I> is a zero- + terminated string that is text that prefixes the + input request. <I>buffer</I> is a pointer to data where + the entered password should be stored and <I>buflen</I> is + the maximum number of bytes that may be written in + the buffer. (Added in 7.4.2) + + <B>CURLOPT_PASSWDDATA</B> + Pass a void * to whatever data you want. The passed + pointer will be the first argument sent to the + specifed <I>CURLOPT</I><B>_</B><I>PASSWDFUNCTION</I> function. (Added in + 7.4.2) + + <B>CURLOPT_FILETIME</B> + Pass a long. If it is a non-zero value, libcurl will + attempt to get the modification date of the remote + document in this operation. This requires that the + remote server sends the time or replies to a time + querying command. The <I>curl</I><B>_</B><I>easy</I><B>_</B><I>getinfo(3)</I> function + with the <I>CURLINFO</I><B>_</B><I>FILETIME</I> argument can be used + after a transfer to extract the received time (if + any). (Added in 7.5) + + <B>CURLOPT_MAXREDIRS</B> + Pass a long. The set number will be the redirection + limit. If that many redirections have been followed, + the next redirect will cause an error + (<I>CURLE</I><B>_</B><I>TOO</I><B>_</B><I>MANY</I><B>_</B><I>REDIRECTS</I>). This option only makes + sense if the <I>CURLOPT</I><B>_</B><I>FOLLOWLOCATION</I> is used at the + same time. (Added in 7.5) + + <B>CURLOPT_MAXCONNECTS</B> + Pass a long. The set number will be the persistant + connection cache size. The set amount will be the + maximum amount of simultaneous connections that + libcurl may cache between file transfers. Default is + 5, and there isn't much point in changing this value + unless you are perfectly aware of how this work and + changes libcurl's behaviour. + + <B>NOTE:</B> if you already have performed transfers with + this curl handle, setting a smaller MAXCONNECTS than + before may cause open connections to get closed + unnecessarily. (Added in 7.7) + + <B>CURLOPT_CLOSEPOLICY</B> + Pass a long. This option sets what policy libcurl + should use when the connection cache is filled and + one of the open connections has to be closed to make + room for a new connection. This must be one of the + CURLCLOSEPOLICY_* defines. Use <I>CURLCLOSEPOL</I> + <I>ICY</I><B>_</B><I>LEAST</I><B>_</B><I>RECENTLY</I><B>_</B><I>USED</I> to make libcurl close the + connection that was least recently used, that con + nection is also least likely to be capable of re- + use. Use <I>CURLCLOSEPOLICY</I><B>_</B><I>OLDEST</I> to make libcurl + close the oldest connection, the one that was cre + ated first among the ones in the connection cache. + The other close policies are not support yet. (Added + in 7.7) + + <B>CURLOPT_FRESH_CONNECT</B> + Pass a long. Set to non-zero to make the next trans + fer use a new (fresh) connection by force. If the + connection cache is full before this connection, one + of the existing connections will be closed as + according to the selected or default policy. This + option should be used with caution and only if you + understand what it does. Set this to 0 to have + libcurl attempt re-using an existing connection + (default behavior). (Added in 7.7) + + <B>CURLOPT_FORBID_REUSE</B> + Pass a long. Set to non-zero to make the next trans + fer explicitly close the connection when done. Nor + mally, libcurl keep all connections alive when done + with one transfer in case there comes a succeeding + one that can re-use them. This option should be + used with caution and only if you understand what it + does. Set to 0 to have libcurl keep the connection + open for possibly later re-use (default behavior). + (Added in 7.7) + + <B>CURLOPT_RANDOM_FILE</B> + Pass a char * to a zero terminated file name. The + file will be used to read from to seed the random + engine for SSL. The more random the specified file + is, the more secure will the SSL connection become. + + <B>CURLOPT_EGDSOCKET</B> + Pass a char * to the zero terminated path name to + the Entropy Gathering Daemon socket. It will be used + to seed the random engine for SSL. + + <B>CURLOPT_CONNECTTIMEOUT</B> + Pass a long. It should contain the maximum time in + seconds that you allow the connection to the server + to take. This only limits the connection phase, + once it has connected, this option is of no more + use. Set to zero to disable connection timeout (it + will then only timeout on the system's internal + timeouts). See also the <I>CURLOPT</I><B>_</B><I>TIMEOUT</I> option. + + <B>NOTE:</B> this does not work in unix multi-threaded pro + grams, as it uses signals. + + <B>CURLOPT_HTTPGET</B> + Pass a long. If the long is non-zero, this forces + the HTTP request to get back to GET. Only really + usable if POST, PUT or a custom request have been + used previously using the same curl handle. (Added + in 7.8.1) + + <B>CURLOPT_SSL_VERIFYHOST</B> + Pass a long. Set if we should verify the Common name + from the peer certificate in the SSL handshake, set + 1 to check existence, 2 to ensure that it matches + the provided hostname. (Added in 7.8.1) + + <B>CURLOPT_COOKIEJAR</B> + Pass a file name as char *, zero terminated. This + will make libcurl dump all internally known cookies + to the specified file when <I>curl</I><B>_</B><I>easy</I><B>_</B><I>cleanup(3)</I> is + called. If no cookies are known, no file will be + created. Specify "-" to instead have the cookies + written to stdout. + + <B>CURLOPT_SSL_CIPHER_LIST</B> + Pass a char *, pointing to a zero terminated string + holding the list of ciphers to use for the SSL con + nection. The list must be syntactly correct, it con + sists of one or more cipher strings separated by + colons. Commas or spaces are also acceptable separa + tors but colons are normally used, , - and + can be + used as operators. Valid examples of cipher lists + include 'RC4-SHA', ´SHA1+DES´, 'TLSv1' and + 'DEFAULT'. The default list is normally set when you + compile OpenSSL. + + You'll find more details about cipher lists on this + URL: <I>http://www.openssl.org/docs/apps/ciphers.html</I> + + <B>CURLOPT_HTTP_VERSION</B> + Pass a long, set to one of the values described + below. They force libcurl to use the specific HTTP + versions. This is not sensible to do unless you have + a good reason. + + <B>CURL_HTTP_VERSION_NONE</B> + We don't care about what version the library + uses. libcurl will use whatever it thinks fit. + + <B>CURL_HTTP_VERSION_1_0</B> + Enforce HTTP 1.0 requests. + + <B>CURL_HTTP_VERSION_1_1</B> + Enforce HTTP 1.1 requests. + + <B>CURLOPT_FTP_USE_EPSV</B> + Pass a long. If the value is non-zero, it tells curl + to use the EPSV command when doing passive FTP down + loads (which is always does by default). Using EPSV + means that it will first attempt to use EPSV before + using PASV, but if you pass FALSE (zero) to this + option, it will not try using EPSV, only plain PASV. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + CURLE_OK (zero) means that the option was set properly, non- + zero means an error occurred as <I><curl/curl.h></I> defines. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_easy_init(3)</B>, <B>curl_easy_cleanup(3)</B>, + + +</PRE> +<H2>BUGS</H2><PRE> + If you find any bugs, or just have questions, subscribe to + one of the mailing lists and post. We won't bite. + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_escape.3 b/Build/source/libs/curl/docs/libcurl/curl_escape.3 new file mode 100644 index 00000000000..3936eaec8cd --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_escape.3 @@ -0,0 +1,26 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_escape.3,v 1.2 2002/03/06 07:44:49 bagder Exp $ +.\" +.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 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 diff --git a/Build/source/libs/curl/docs/libcurl/curl_escape.html b/Build/source/libs/curl/docs/libcurl/curl_escape.html new file mode 100644 index 00000000000..975dac2bbe1 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_escape.html @@ -0,0 +1,74 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_escape - URL encodes the given string + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>char</B> <B>*curl_escape(</B> <B>char</B> <B>*</B><I>url</I><B>,</B> <B>int</B> <I>length</I> <B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + 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 free() the returned string when you're done with + it. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + A pointer to a zero terminated string or NULL if it failed. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <I>curl</I><B>_</B><I>unescape(),</I> <I>RFC</I> <I>2396</I> + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_formadd.3 b/Build/source/libs/curl/docs/libcurl/curl_formadd.3 new file mode 100644 index 00000000000..c80b4fba1af --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_formadd.3 @@ -0,0 +1,165 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_formadd.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_formadd 3 "1 Match 2002" "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 + + 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; + + /* 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! + diff --git a/Build/source/libs/curl/docs/libcurl/curl_formadd.html b/Build/source/libs/curl/docs/libcurl/curl_formadd.html new file mode 100644 index 00000000000..2264480aa0b --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_formadd.html @@ -0,0 +1,234 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_formadd - add a section to a multipart/formdata HTTP + POST + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>int</B> <B>curl_formadd(struct</B> <B>HttpPost</B> <B>**</B> <I>firstitem,</I> <B>struct</B> <B>Http</B> + <B>Post</B> <B>**</B> <I>lastitem,</I> <B>...);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + 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 <I>firstitem</I> pointer as parameter to <B>CURLOPT_HTTPPOST</B>. + <I>lastitem</I> 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 <I>lastitem</I> pointer follow the real arguments. (If + the following description confuses you, jump directly to the + examples): + + <B>CURLFORM_COPYNAME</B> or <B>CURLFORM_PTRNAME</B> followed by a string + is used for the name of the section. Optionally one may use + <B>CURLFORM_NAMELENGTH</B> 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: <B>CURLFORM_COPYCON</B> + <B>TENTS</B>, <B>CURLFORM_PTRCONTENTS</B>, <B>CURLFORM_FILE</B>, or <B>CURL</B> + <B>FORM_FILECONTENT</B> followed by a char or void pointer (allowed + for PTRCONTENTS). + + <B>CURLFORM_FILECONTENT</B> does a normal post like <B>CURLFORM_COPY</B> + <B>CONTENTS</B> but the actual value is read from the filename + given as a string. + + Other arguments may be <B>CURLFORM_CONTENTTYPE</B> 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 <B>CURLFORM_PTRCONTENTS</B> or <B>CURLFORM_COPYNAME</B> the user may + also add <B>CURLFORM_CONTENTSLENGTH</B> followed by the length as a + long (if not given the library will use strlen to determine + the length). + + For <B>CURLFORM_FILE</B> the user may send multiple files in one + section by providing multiple <B>CURLFORM_FILE</B> 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 <B>CURLFORM_ARRAY</B> that gets a struct + curl_forms array pointer as its value. Each structure ele + ment has a CURLformoption and a char pointer. For the + options only <B>CURLFORM_FILE</B>, <B>CURLFORM_CONTENTTYPE</B>, and <B>CURL</B> + <B>FORM_END</B> (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 param + eter is the same as giving multiple <B>CURLFORM_FILE</B> options + possibly with <B>CURLFORM_CONTENTTYPE</B> after or before each + <B>CURLFORM_FILE</B> option. + + Should you need to specify extra headers for the form POST + section, use <B>CURLFORM_CONTENTHEADER</B>. This takes a curl_slist + prepared in the usual way using <B>curl_slist_append</B> and + appends the list of headers to those Curl automatically gen + erates for <B>CURLFORM_CONTENTTYPE</B> 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 <B>CURL</B> + <B>FORM_END</B>. + + The pointers <I>*firstitem</I> and <I>*lastitem</I> should both be point + ing to NULL in the first call to this function. All list- + data will be allocated by the function itself. You must call + <I>curl</I><B>_</B><I>formfree</I> 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 <B>CURLFORM_PTRNAME</B> and <B>CURL</B> + <B>FORM_PTRCONTENTS</B> and keep its own version of it allocated + until you call <I>curl</I><B>_</B><I>formfree</I>. When you've passed the pointer + to <I>curl</I><B>_</B><I>easy</I><B>_</B><I>setopt</I>, you must not free the list until after + you've called <I>curl</I><B>_</B><I>easy</I><B>_</B><I>cleanup</I> for the curl handle. If you + provide a pointer as an arguments after <B>CURLFORM_PTRNAME</B> or + <B>CURLFORM_PTRCONTENTS</B> you must ensure that the pointer stays + valid until you call <I>curl</I><B>_</B><I>form</I><B>_</B><I>free</I> and <I>curl</I><B>_</B><I>easy</I><B>_</B><I>cleanup</I>. + + See example below. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + Returns non-zero if an error occurs. + + +</PRE> +<H2>EXAMPLE</H2><PRE> + 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; + + /* 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); + + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_easy_setopt(3)</B>, <B>curl_formparse(3)</B> [deprecated], + <B>curl_formfree(3)</B> + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_formfree.3 b/Build/source/libs/curl/docs/libcurl/curl_formfree.3 new file mode 100644 index 00000000000..31a55eceb6a --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_formfree.3 @@ -0,0 +1,27 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_formfree.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_formfree 3 "6 April 2001" "libcurl 7.7.1" "libcurl Manual" +.SH NAME +curl_formfree - free a previously build multipart/formdata HTTP POST chain +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "void curl_formfree(struct HttpPost *" form); +.ad +.SH DESCRIPTION +curl_formfree() is used to clean up data previously built/appended with +curl_formadd()/curl_formparse(). This must be called when the data has +been used, which typically means after the curl_easy_perform() has +been called. +.SH RETURN VALUE +None +.SH "SEE ALSO" +.BR curl_formparse "(3) [deprecated], " +.BR curl_formadd "(3) " +.SH BUGS +libcurl 7.7.1 and earlier versions does not allow a NULL pointer to be used as +argument. + + diff --git a/Build/source/libs/curl/docs/libcurl/curl_formfree.html b/Build/source/libs/curl/docs/libcurl/curl_formfree.html new file mode 100644 index 00000000000..bd7233016f5 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_formfree.html @@ -0,0 +1,76 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_formfree - free a previously build multipart/formdata + HTTP POST chain + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>void</B> <B>curl_formfree(struct</B> <B>HttpPost</B> <B>*</B><I>form);</I> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + curl_formfree() is used to clean up data previously + built/appended with curl_formadd()/curl_formparse(). This + must be called when the data has been used, which typically + means after the curl_easy_perform() has been called. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + None + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_formparse(3)</B> [deprecated], <B>curl_formadd(3)</B> + + +</PRE> +<H2>BUGS</H2><PRE> + libcurl 7.7.1 and earlier versions does not allow a NULL + pointer to be used as argument. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_formparse.3 b/Build/source/libs/curl/docs/libcurl/curl_formparse.3 new file mode 100644 index 00000000000..8c169c8bd03 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_formparse.3 @@ -0,0 +1,18 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_formparse.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_formparse 3 "17 Dec 2001" "libcurl 7.9.2" "libcurl Manual" +.SH NAME +curl_formparse - add a section to a multipart/formdata HTTP POST: +deprecated (use curl_formadd instead) +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "CURLcode curl_formparse(char * " string, " struct HttpPost ** " firstitem, +.BI "struct HttpPost ** " lastitem ");" +.ad +.SH DESCRIPTION +This has been removed deliberately. The \fBcurl_formadd\fP has been introduced +to replace this function. Do not use this. Convert to the new function +now. curl_formparse() will be removed from a future version of libcurl. diff --git a/Build/source/libs/curl/docs/libcurl/curl_formparse.html b/Build/source/libs/curl/docs/libcurl/curl_formparse.html new file mode 100644 index 00000000000..1370b8b3b4e --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_formparse.html @@ -0,0 +1,70 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_formparse - add a section to a multipart/formdata HTTP + POST: deprecated (use curl_formadd instead) + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>CURLcode</B> <B>curl_formparse(char</B> <B>*</B> <I>string,</I> <B>struct</B> <B>HttpPost</B> <B>**</B> + <I>firstitem,</I> <B>struct</B> <B>HttpPost</B> <B>**</B> <I>lastitem</I><B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + This has been removed deliberately. The <B>curl_formadd</B> has + been introduced to replace this function. Do not use this. + Convert to the new function now. curl_formparse() will be + removed from a future version of libcurl. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_getdate.3 b/Build/source/libs/curl/docs/libcurl/curl_getdate.3 new file mode 100644 index 00000000000..684250f756d --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_getdate.3 @@ -0,0 +1,80 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_getdate.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_getdate 3 "5 March 2001" "libcurl 7.0" "libcurl Manual" +.SH NAME +curl_getdate - Convert an date in a ASCII string to number of seconds since +January 1, 1970 +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "time_t curl_getdate(char *" datestring ", time_t *"now" ); +.ad +.SH DESCRIPTION +This function returns the number of seconds since January 1st 1970, for the +date and time that the +.I datestring +parameter specifies. The +.I now +parameter is there and should hold the current time to allow the datestring to +specify relative dates/times. Read further in the date string parser section +below. +.SH PARSING DATES AND TIMES +A "date" is a string, possibly empty, containing many items separated by +whitespace. The whitespace may be omitted when no ambiguity arises. The +empty string means the beginning of today (i.e., midnight). Order of the +items is immaterial. A date string may contain many flavors of items: +.TP 0.8i +.B calendar date items +This can be specified in a number of different ways. Including 1970-09-17, 70-9-17, 70-09-17, 9/17/72, 24 September 1972, 24 Sept 72, 24 Sep 72, Sep 24, 1972, 24-sep-72, 24sep72. +The year can also be omitted, for example: 9/17 or "sep 17". +.TP +.B time of the day items +This string specifies the time on a given day. Syntax supported includes: +18:19:0, 18:19, 6:19pm, 18:19-0500 (for specifying the time zone as well). +.TP +.B time zone items +Specifies international time zone. There are a few acronyms supported, but in +general you should instead use the specific realtive time compared to +UTC. Supported formats include: -1200, MST, +0100. +.TP +.B day of the week items +Specifies a day of the week. If this is mentioned alone it means that day of +the week in the future. + +Days of the week may be spelled out in full: `Sunday', `Monday', etc or they +may be abbreviated to their first three letters, optionally followed by a +period. The special abbreviations `Tues' for `Tuesday', `Wednes' for +`Wednesday' and `Thur' or `Thurs' for `Thursday' are also allowed. + +A number may precede a day of the week item to move forward supplementary +weeks. It is best used in expression like `third monday'. In this context, +`last DAY' or `next DAY' is also acceptable; they move one week before or +after the day that DAY by itself would represent. +.TP +.B relative items +A relative item adjusts a date (or the current date if none) forward or +backward. Example syntax includes: "1 year", "1 year ago", "2 days", "4 +weeks". + +The string `tomorrow' is worth one day in the future (equivalent to `day'), +the string `yesterday' is worth one day in the past (equivalent to `day ago'). +.TP +.B pure numbers +If the decimal number is of the form YYYYMMDD and no other calendar date item +appears before it in the date string, then YYYY is read as the year, MM as the +month number and DD as the day of the month, for the specified calendar date. +.PP +.SH RETURN VALUE +This function returns zero when it fails to parse the date string. Otherwise +it returns the number of seconds as described. +.SH AUTHORS +Originally written by Steven M. Bellovin <smb@research.att.com> while at the +University of North Carolina at Chapel Hill. Later tweaked by a couple of +people on Usenet. Completely overhauled by Rich $alz <rsalz@bbn.com> and Jim +Berets <jberets@bbn.com> in August, 1990. +.SH "SEE ALSO" +.BR +.SH BUGS +Surely there are some, you tell me! diff --git a/Build/source/libs/curl/docs/libcurl/curl_getdate.html b/Build/source/libs/curl/docs/libcurl/curl_getdate.html new file mode 100644 index 00000000000..c0519e90b8b --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_getdate.html @@ -0,0 +1,132 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_getdate - Convert an date in a ASCII string to number + of seconds since January 1, 1970 + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>time_t</B> <B>curl_getdate(char</B> <B>*</B><I>datestring</I><B>,</B> <B>time_t</B> <B>*</B><I>now</I> <I>);</I> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + This function returns the number of seconds since January + 1st 1970, for the date and time that the <I>datestring</I> parame + ter specifies. The <I>now</I> parameter is there and should hold + the current time to allow the datestring to specify relative + dates/times. Read further in the date string parser section + below. + + +</PRE> +<H2>PARSING DATES AND TIMES</H2><PRE> + A "date" is a string, possibly empty, containing many items + separated by whitespace. The whitespace may be omitted when + no ambiguity arises. The empty string means the beginning + of today (i.e., midnight). Order of the items is immate + rial. A date string may contain many flavors of items: + + <B>calendar</B> <B>date</B> <B>items</B> + This can be specified in a number of different ways. + Including 1970-09-17, 70-9-17, 70-09-17, 9/17/72, 24 + September 1972, 24 Sept 72, 24 Sep 72, Sep 24, 1972, + 24-sep-72, 24sep72. The year can also be omitted, + for example: 9/17 or "sep 17". + + <B>time</B> <B>of</B> <B>the</B> <B>day</B> <B>items</B> + This string specifies the time on a given day. Syn + tax supported includes: 18:19:0, 18:19, 6:19pm, + 18:19-0500 (for specifying the time zone as well). + + <B>time</B> <B>zone</B> <B>items</B> + Specifies international time zone. There are a few + acronyms supported, but in general you should + instead use the specific realtive time compared to + UTC. Supported formats include: -1200, MST, +0100. + + <B>day</B> <B>of</B> <B>the</B> <B>week</B> <B>items</B> + Specifies a day of the week. If this is mentioned + alone it means that day of the week in the future. + + Days of the week may be spelled out in full: `Sun + day', `Monday', etc or they may be abbreviated to + their first three letters, optionally followed by a + period. The special abbreviations `Tues' for `Tues + day', `Wednes' for `Wednesday' and `Thur' or `Thurs' + for `Thursday' are also allowed. + A number may precede a day of the week item to move + forward supplementary weeks. It is best used in + expression like `third monday'. In this context, + `last DAY' or `next DAY' is also acceptable; they + move one week before or after the day that DAY by + itself would represent. + + <B>relative</B> <B>items</B> + A relative item adjusts a date (or the current date + if none) forward or backward. Example syntax + includes: "1 year", "1 year ago", "2 days", "4 + weeks". + + The string `tomorrow' is worth one day in the future + (equivalent to `day'), the string `yesterday' is + worth one day in the past (equivalent to `day ago'). + + <B>pure</B> <B>numbers</B> + If the decimal number is of the form YYYYMMDD and no + other calendar date item appears before it in the + date string, then YYYY is read as the year, MM as + the month number and DD as the day of the month, for + the specified calendar date. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + This function returns zero when it fails to parse the date + string. Otherwise it returns the number of seconds as + described. + + +</PRE> +<H2>AUTHORS</H2><PRE> + Originally written by Steven M. Bellovin + <smb@research.att.com> while at the University of North Car + olina at Chapel Hill. Later tweaked by a couple of people + on Usenet. Completely overhauled by Rich $alz + <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, + 1990. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_getenv.3 b/Build/source/libs/curl/docs/libcurl/curl_getenv.3 new file mode 100644 index 00000000000..7f0082bf661 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_getenv.3 @@ -0,0 +1,32 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_getenv.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_getenv 3 "15 August 2001" "libcurl 7.8.1" "libcurl Manual" +.SH NAME +curl_getenv - return value for environment name +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "char *curl_getenv(const char *" name "); +.ad +.SH DESCRIPTION +curl_getenv() is a portable wrapper for the getenv() function, meant to +emulate its behaviour and provide an identical interface for all operating +systems libcurl builds on (including win32). +.SH RETURN VALUE +If successful, curl_getenv() returns a pointer to the value of the specified +environment. The memory it refers to is malloc()ed why the application must +free() this when the data has completed to serve its purpose. When +.I curl_getenv() +fails to find the specified name, it returns a null pointer. +.SH NOTE +Under unix operating systems, there isn't any point in returning an allocated +memory, although other systems won't work properly if this isn't done. The +unix implementation thus have to suffer slightly from the drawbacks of other +systems. +.SH "SEE ALSO" +.BR getenv "(3C), " +.SH BUGS +Surely there are some, you tell me! + diff --git a/Build/source/libs/curl/docs/libcurl/curl_getenv.html b/Build/source/libs/curl/docs/libcurl/curl_getenv.html new file mode 100644 index 00000000000..ceedd6f78e8 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_getenv.html @@ -0,0 +1,78 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_getenv - return value for environment name + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>char</B> <B>*curl_getenv(const</B> <B>char</B> <B>*</B><I>name</I><B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + curl_getenv() is a portable wrapper for the getenv() func + tion, meant to emulate its behaviour and provide an identi + cal interface for all operating systems libcurl builds on + (including win32). + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + If successful, curl_getenv() returns a pointer to the value + of the specified environment. The memory it refers to is + malloc()ed why the application must free() this when the + data has completed to serve its purpose. When <I>curl</I><B>_</B><I>getenv()</I> + fails to find the specified name, it returns a null pointer. + + +</PRE> +<H2>NOTE</H2><PRE> + Under unix operating systems, there isn't any point in + returning an allocated memory, although other systems won't + work properly if this isn't done. The unix implementation + thus have to suffer slightly from the drawbacks of other + systems. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>getenv(3C)</B>, + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_global_cleanup.3 b/Build/source/libs/curl/docs/libcurl/curl_global_cleanup.3 new file mode 100644 index 00000000000..b18fbe47f26 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_global_cleanup.3 @@ -0,0 +1,27 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_global_cleanup.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_global_cleanup 3 "28 May 2001" "libcurl 7.8" "libcurl Manual" +.SH NAME +curl_global_cleanup - Global libcurl cleanup +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "void curl_global_cleanup(void);" +.ad +.SH DESCRIPTION +curl_global_cleanup must be called once (no matter how many threads or libcurl +sessions that'll be used) by every application that uses libcurl, after all +uses of libcurl is complete. + +This is the opposite of \fIcurl_global_init\fP. + +Not calling this function may result in memory leaks. + +This function was added in libcurl 7.8. +.SH "SEE ALSO" +.BR curl_global_init "(3), " +.SH BUGS +None? + diff --git a/Build/source/libs/curl/docs/libcurl/curl_global_cleanup.html b/Build/source/libs/curl/docs/libcurl/curl_global_cleanup.html new file mode 100644 index 00000000000..fa8c06cfeec --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_global_cleanup.html @@ -0,0 +1,74 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_global_cleanup - Global libcurl cleanup + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>void</B> <B>curl_global_cleanup(void);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + curl_global_cleanup must be called once (no matter how many + threads or libcurl sessions that'll be used) by every appli + cation that uses libcurl, after all uses of libcurl is com + plete. + + This is the opposite of <I>curl</I><B>_</B><I>global</I><B>_</B><I>init</I>. + + Not calling this function may result in memory leaks. + + This function was added in libcurl 7.8. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_global_init(3)</B>, + + +</PRE> +<H2>BUGS</H2><PRE> + None? + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_global_init.3 b/Build/source/libs/curl/docs/libcurl/curl_global_init.3 new file mode 100644 index 00000000000..280bb47d316 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_global_init.3 @@ -0,0 +1,49 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_global_init.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_global_init 3 "13 Nov 2001" "libcurl 7.9.1" "libcurl Manual" +.SH NAME +curl_global_init - Global libcurl initialisation +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "CURLcode curl_global_init(long " flags ");" +.ad +.SH DESCRIPTION +This function should only be called once (no matter how many threads or +libcurl sessions that'll be used) by every application that uses libcurl. + +If this function hasn't been invoked when \fIcurl_easy_init\fP is called, it +will be done automatically by libcurl. + +The flags option is a bit pattern that tells libcurl exact what features to +init, as described below. Set the desired bits by ORing the values together. + +You must however \fBalways\fP use the \fIcurl_global_cleanup\fP function, as +that cannot be called automatically for you by libcurl. + +Calling this function more than once will cause unpredictable results. + +This function was added in libcurl 7.8. +.SH FLAGS +.TP 5 +.B CURL_GLOBAL_ALL +Initialize everything possible. This sets all known bits. +.TP +.B CURL_GLOBAL_SSL +Initialize SSL +.TP +.B CURL_GLOBAL_WIN32 +Initialize the Win32 socket libraries. (added in libcurl 7.8.1) +.TP +.B CURL_GLOBAL_NOTHING +Initialise nothing extra. This sets no bit. +.SH RETURN VALUE +If this function returns non-zero, something went wrong and you cannot use the +other curl functions. +.SH "SEE ALSO" +.BR curl_global_cleanup "(3), " +.SH BUGS +None. + diff --git a/Build/source/libs/curl/docs/libcurl/curl_global_init.html b/Build/source/libs/curl/docs/libcurl/curl_global_init.html new file mode 100644 index 00000000000..c1066eb3d07 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_global_init.html @@ -0,0 +1,130 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_global_init - Global libcurl initialisation + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>CURLcode</B> <B>curl_global_init(long</B> <I>flags</I><B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + This function should only be called once (no matter how many + threads or libcurl sessions that'll be used) by every appli + cation that uses libcurl. + + If this function hasn't been invoked when <I>curl</I><B>_</B><I>easy</I><B>_</B><I>init</I> is + called, it will be done automatically by libcurl. + + The flags option is a bit pattern that tells libcurl exact + what features to init, as described below. Set the desired + bits by ORing the values together. + + You must however <B>always</B> use the <I>curl</I><B>_</B><I>global</I><B>_</B><I>cleanup</I> func + tion, as that cannot be called automatically for you by + libcurl. + + Calling this function more than once will cause unpre + dictable results. + + This function was added in libcurl 7.8. + + +</PRE> +<H2>FLAGS</H2><PRE> + <B>CURL_GLOBAL_ALL</B> + Initialize everything possible. This sets all known + bits. + + <B>CURL_GLOBAL_SSL</B> + Initialize SSL + + <B>CURL_GLOBAL_WIN32</B> + Initialize the Win32 socket libraries. (added in + libcurl 7.8.1) + + <B>CURL_GLOBAL_NOTHING</B> + Initialise nothing extra. This sets no bit. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + If this function returns non-zero, something went wrong and + you cannot use the other curl functions. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_global_cleanup(3)</B>, + + + +</PRE> +<H2>BUGS</H2><PRE> + None. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_mprintf.3 b/Build/source/libs/curl/docs/libcurl/curl_mprintf.3 new file mode 100644 index 00000000000..126fe2f78ea --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_mprintf.3 @@ -0,0 +1,88 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_mprintf.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_printf 3 "20 April 2001" "libcurl 7.7.2" "libcurl Manual" +.SH NAME +curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf +curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf, +curl_mvsprintf - formatted output conversion +.SH SYNOPSIS +.B #include <curl/mprintf.h> +.sp +.BI "int curl_mprintf(const char *" format ", ...);" +.br +.BI "int curl_mfprintf(FILE *" fd ", const char *" format ", ...);" +.br +.BI "int curl_msprintf(char *" buffer ", const char *" format ", ...);" +.br +.BI "int curl_msnprintf(char *" buffer ", size_t " maxlength ", const char *" format ", ...);" +.br +.BI "int curl_mvprintf(const char *" format ", va_list " args ");" +.br +.BI "int curl_mvfprintf(FILE *" fd ", const char *" format ", va_list " args ");" +.br +.BI "int curl_mvsprintf(char *" buffer ", const char *" format ", va_list " args ");" +.br +.BI "int curl_mvsnprintf(char *" buffer ", size_t " maxlength ", const char *" format ", va_list " args ");" +.br +.BI "char *curl_maprintf(const char *" format ", ...);" +.br +.BI "char *curl_mvaprintf(const char *" format ", va_list " args ");" +.SH DESCRIPTION +These are all functions that produces output according to a format string and +given arguments. These are mostly clones of the well-known C-style functions +and there will be no detailed explanation of all available formatting rules +and usage here. + +See this table for notable exceptions. +.RS +.TP +.B curl_mprintf() +Normal printf() clone. +.TP +.B curl_mfprintf() +Normal fprinf() clone. +.TP +.B curl_msprintf() +Normal sprintf() clone. +.TP +.B curl_msnprintf() +snprintf() clone. Many systems don't have this. It is just like \fBsprintf\fP +but with an extra argument after the buffer that specifies the length of the +target buffer. +.TP +.B curl_mvprintf() +Normal vprintf() clone. +.TP +.B curl_mvfprintf() +Normal vfprintf() clone. +.TP +.B curl_mvsprintf() +Normal vsprintf() clone. +.TP +.B curl_mvsnprintf() +vsnprintf() clone. Many systems don't have this. It is just like +\fBvsprintf\fP but with an extra argument after the buffer that specifies the +length of the target buffer. +.TP +.B curl_maprintf() +Like printf() but returns the output string as a malloc()ed string. The +returned string must be free()ed by the receiver. +.TP +.B curl_mvaprintf() +Like curl_maprintf() but takes a va_list pointer argument instead of a +variable amount of arguments. +.RE + +To easily use all these cloned functions instead of the normal ones, #define +_MPRINTF_REPLACE before you include the <curl/mprintf.h> file. Then all the +normal names like printf, fprintf, sprintf etc will use the curl-functions +instead. +.SH RETURN VALUE +The \fBcurl_maprintf\fP and \fBcurl_mvaprintf\fP functions return a pointer to +a newly allocated string, or NULL it it failed. + +All other functions return the number of character they actually outputed. +.SH "SEE ALSO" +.BR printf "(3), " sprintf "(3), " fprintf "(3), " vprintf "(3) " diff --git a/Build/source/libs/curl/docs/libcurl/curl_mprintf.html b/Build/source/libs/curl/docs/libcurl/curl_mprintf.html new file mode 100644 index 00000000000..ce0ce1332a5 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_mprintf.html @@ -0,0 +1,126 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, + curl_msprintf curl_mvaprintf, curl_mvfprintf, curl_mvprintf, + curl_mvsnprintf, curl_mvsprintf - formatted output conver + sion + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/mprintf.h></B> + + <B>int</B> <B>curl_mprintf(const</B> <B>char</B> <B>*</B><I>format</I><B>,</B> <B>...);</B> + <B>int</B> <B>curl_mfprintf(FILE</B> <B>*</B><I>fd</I><B>,</B> <B>const</B> <B>char</B> <B>*</B><I>format</I><B>,</B> <B>...);</B> + <B>int</B> <B>curl_msprintf(char</B> <B>*</B><I>buffer</I><B>,</B> <B>const</B> <B>char</B> <B>*</B><I>format</I><B>,</B> <B>...);</B> + <B>int</B> <B>curl_msnprintf(char</B> <B>*</B><I>buffer</I><B>,</B> <B>size_t</B> <I>maxlength</I><B>,</B> <B>const</B> + <B>char</B> <B>*</B><I>format</I> + <B>int</B> <B>curl_mvprintf(const</B> <B>char</B> <B>*</B><I>format</I><B>,</B> <B>va_list</B> <I>args</I><B>);</B> + <B>int</B> <B>curl_mvfprintf(FILE</B> <B>*</B><I>fd</I><B>,</B> <B>const</B> <B>char</B> <B>*</B><I>format</I><B>,</B> <B>va_list</B> + <I>args</I> + <B>int</B> <B>curl_mvsprintf(char</B> <B>*</B><I>buffer</I><B>,</B> <B>const</B> <B>char</B> <B>*</B><I>format</I><B>,</B> <B>va_list</B> + <I>args</I> + <B>int</B> <B>curl_mvsnprintf(char</B> <B>*</B><I>buffer</I><B>,</B> <B>size_t</B> <I>maxlength</I><B>,</B> <B>const</B> + <B>char</B> <B>*</B><I>format</I> + <B>char</B> <B>*curl_maprintf(const</B> <B>char</B> <B>*</B><I>format</I><B>,</B> <B>...);</B> + <B>char</B> <B>*curl_mvaprintf(const</B> <B>char</B> <B>*</B><I>format</I><B>,</B> <B>va_list</B> <I>args</I><B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + These are all functions that produces output according to a + format string and given arguments. These are mostly clones + of the well-known C-style functions and there will be no + detailed explanation of all available formatting rules and + usage here. + + See this table for notable exceptions. + + <B>curl_mprintf()</B> + Normal printf() clone. + + <B>curl_mfprintf()</B> + Normal fprinf() clone. + + <B>curl_msprintf()</B> + Normal sprintf() clone. + + <B>curl_msnprintf()</B> + snprintf() clone. Many systems don't have this. It + is just like <B>sprintf</B> but with an extra argument + after the buffer that specifies the length of the + target buffer. + + <B>curl_mvprintf()</B> + Normal vprintf() clone. + + <B>curl_mvfprintf()</B> + Normal vfprintf() clone. + + <B>curl_mvsprintf()</B> + Normal vsprintf() clone. + + <B>curl_mvsnprintf()</B> + vsnprintf() clone. Many systems don't have this. + It is just like <B>vsprintf</B> but with an extra argu + ment after the buffer that specifies the length of + the target buffer. + + <B>curl_maprintf()</B> + Like printf() but returns the output string as a + malloc()ed string. The returned string must be + free()ed by the receiver. + + <B>curl_mvaprintf()</B> + Like curl_maprintf() but takes a va_list pointer + argument instead of a variable amount of argu + ments. + + To easily use all these cloned functions instead of the nor + mal ones, #define _MPRINTF_REPLACE before you include the + <curl/mprintf.h> file. Then all the normal names like + printf, fprintf, sprintf etc will use the curl-functions + instead. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + The <B>curl_maprintf</B> and <B>curl_mvaprintf</B> functions return a + pointer to a newly allocated string, or NULL it it failed. + + All other functions return the number of character they + actually outputed. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>printf(3)</B>, <B>sprintf(3)</B>, <B>fprintf(3)</B>, + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_slist_append.3 b/Build/source/libs/curl/docs/libcurl/curl_slist_append.3 new file mode 100644 index 00000000000..0db884b13a3 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_slist_append.3 @@ -0,0 +1,29 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_slist_append.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_slist_append 3 "5 March 2001" "libcurl 7.0" "libcurl Manual" +.SH NAME +curl_slist_append - add a string to an slist +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "struct curl_slist *curl_slist_append(struct curl_slist *" list, +.BI "const char * "string ");" +.ad +.SH DESCRIPTION +curl_slist_append() appends a specified string to a linked list of +strings. The existing +.I list +should be passed as the first argument while the new list is returned from +this function. The specified +.I string +has been appended when this function returns. +.SH RETURN VALUE +A null pointer is returned if anything went wrong, otherwise the new list +pointer is returned. +.SH "SEE ALSO" +.BR curl_slist_free_all "(3), " +.SH BUGS +Surely there are some, you tell me! + diff --git a/Build/source/libs/curl/docs/libcurl/curl_slist_append.html b/Build/source/libs/curl/docs/libcurl/curl_slist_append.html new file mode 100644 index 00000000000..a837048d00c --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_slist_append.html @@ -0,0 +1,76 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_slist_append - add a string to an slist + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>struct</B> <B>curl_slist</B> <B>*curl_slist_append(struct</B> <B>curl_slist</B> + <B>*</B><I>list,</I> <B>const</B> <B>char</B> <B>*</B> <I>string</I><B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + curl_slist_append() appends a specified string to a linked + list of strings. The existing <I>list</I> should be passed as the + first argument while the new list is returned from this + function. The specified <I>string</I> has been appended when this + function returns. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + A null pointer is returned if anything went wrong, otherwise + the new list pointer is returned. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_slist_free_all(3)</B>, + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_slist_free_all.3 b/Build/source/libs/curl/docs/libcurl/curl_slist_free_all.3 new file mode 100644 index 00000000000..184989d5468 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_slist_free_all.3 @@ -0,0 +1,22 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_slist_free_all.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_slist_free_all 3 "5 March 2001" "libcurl 7.0" "libcurl Manual" +.SH NAME +curl_slist_free_all - free an entire curl_slist list +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "void curl_slist_free_all(struct curl_slist *" list); +.ad +.SH DESCRIPTION +curl_slist_free_all() removes all traces of a previously built curl_slist +linked list. +.SH RETURN VALUE +Nothing. +.SH "SEE ALSO" +.BR curl_slist_append "(3), " +.SH BUGS +Surely there are some, you tell me! + diff --git a/Build/source/libs/curl/docs/libcurl/curl_slist_free_all.html b/Build/source/libs/curl/docs/libcurl/curl_slist_free_all.html new file mode 100644 index 00000000000..c52a5af5628 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_slist_free_all.html @@ -0,0 +1,76 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_slist_free_all - free an entire curl_slist list + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>void</B> <B>curl_slist_free_all(struct</B> <B>curl_slist</B> <B>*</B><I>list);</I> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + curl_slist_free_all() removes all traces of a previously + built curl_slist linked list. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + Nothing. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>curl_slist_append(3)</B>, + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_strequal.3 b/Build/source/libs/curl/docs/libcurl/curl_strequal.3 new file mode 100644 index 00000000000..7da8d0d7429 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_strequal.3 @@ -0,0 +1,30 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_strequal.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_strequal 3 "20 April 2001" "libcurl 7.7.2" "libcurl Manual" +.SH NAME +curl_strequal, curl_strnequal - case insensitive string comparisons +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "int curl_strequal(char *" str1 ", char *" str2 ");" +.sp +.BI "int curl_strenqual(char *" str1 ", char *" str2 ", size_t " len ");" +.SH DESCRIPTION +The +.B curl_strequal() +function compares the two strings \fIstr1\fP and \fIstr2\fP, ignoring the case +of the characters. It returns a non-zero (TRUE) integer if the strings are +identical. +.sp +The \fBcurl_strnequal()\fP function is similar, except it only compares the +first \fIlen\fP characters of \fIstr1\fP. +.sp +These functions are provided by libcurl to enable applications to compare +strings in a truly portable manner. There are no standard portable case +insensitive string comparison functions. These two works on all platforms. +.SH RETURN VALUE +Non-zero if the strings are identical. Zero if they're not. +.SH "SEE ALSO" +.BR strcmp "(3), " strcasecmp "(3)" diff --git a/Build/source/libs/curl/docs/libcurl/curl_strequal.html b/Build/source/libs/curl/docs/libcurl/curl_strequal.html new file mode 100644 index 00000000000..38ba37ec30b --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_strequal.html @@ -0,0 +1,74 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_strequal, curl_strnequal - case insensitive string com + parisons + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>int</B> <B>curl_strequal(char</B> <B>*</B><I>str1</I><B>,</B> <B>char</B> <B>*</B><I>str2</I><B>);</B> + + <B>int</B> <B>curl_strenqual(char</B> <B>*</B><I>str1</I><B>,</B> <B>char</B> <B>*</B><I>str2</I><B>,</B> <B>size_t</B> <I>len</I> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + The <B>curl_strequal()</B> function compares the two strings <I>str1</I> + and <I>str2</I>, ignoring the case of the characters. It returns a + non-zero (TRUE) integer if the strings are identical. + + The <B>curl_strnequal()</B> function is similar, except it only + compares the first <I>len</I> characters of <I>str1</I>. + + These functions are provided by libcurl to enable applica + tions to compare strings in a truly portable manner. There + are no standard portable case insensitive string comparison + functions. These two works on all platforms. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + Non-zero if the strings are identical. Zero if they're not. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>strcmp(3)</B>, <B>strcasecmp(3)</B> + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_strnequal.3 b/Build/source/libs/curl/docs/libcurl/curl_strnequal.3 new file mode 100644 index 00000000000..c7d91cca86c --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_strnequal.3 @@ -0,0 +1 @@ +.so curl_strequal.3 diff --git a/Build/source/libs/curl/docs/libcurl/curl_strnequal.html b/Build/source/libs/curl/docs/libcurl/curl_strnequal.html new file mode 100644 index 00000000000..38ba37ec30b --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_strnequal.html @@ -0,0 +1,74 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_strequal, curl_strnequal - case insensitive string com + parisons + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>int</B> <B>curl_strequal(char</B> <B>*</B><I>str1</I><B>,</B> <B>char</B> <B>*</B><I>str2</I><B>);</B> + + <B>int</B> <B>curl_strenqual(char</B> <B>*</B><I>str1</I><B>,</B> <B>char</B> <B>*</B><I>str2</I><B>,</B> <B>size_t</B> <I>len</I> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + The <B>curl_strequal()</B> function compares the two strings <I>str1</I> + and <I>str2</I>, ignoring the case of the characters. It returns a + non-zero (TRUE) integer if the strings are identical. + + The <B>curl_strnequal()</B> function is similar, except it only + compares the first <I>len</I> characters of <I>str1</I>. + + These functions are provided by libcurl to enable applica + tions to compare strings in a truly portable manner. There + are no standard portable case insensitive string comparison + functions. These two works on all platforms. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + Non-zero if the strings are identical. Zero if they're not. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <B>strcmp(3)</B>, <B>strcasecmp(3)</B> + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_unescape.3 b/Build/source/libs/curl/docs/libcurl/curl_unescape.3 new file mode 100644 index 00000000000..385544b2a17 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_unescape.3 @@ -0,0 +1,27 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_unescape.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.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 diff --git a/Build/source/libs/curl/docs/libcurl/curl_unescape.html b/Build/source/libs/curl/docs/libcurl/curl_unescape.html new file mode 100644 index 00000000000..29b3dfa7ba8 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_unescape.html @@ -0,0 +1,74 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_unescape - URL decodes the given string + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>char</B> <B>*curl_unescape(</B> <B>char</B> <B>*</B><I>url</I><B>,</B> <B>int</B> <I>length</I> <B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + This function will convert the given URL encoded input + string to a "plain string" and return that as a new allo + cated 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. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + A pointer to a zero terminated string or NULL if it failed. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + <I>curl</I><B>_</B><I>escape(),</I> <I>RFC</I> <I>2396</I> + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/curl_version.3 b/Build/source/libs/curl/docs/libcurl/curl_version.3 new file mode 100644 index 00000000000..f4e1b1961c5 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_version.3 @@ -0,0 +1,27 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: curl_version.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH curl_version 3 "5 March 2001" "libcurl 7.0" "libcurl Manual" +.SH NAME +curl_version - returns the libcurl version string +.SH SYNOPSIS +.B #include <curl/curl.h> +.sp +.BI "char *curl_version( );" +.ad +.SH DESCRIPTION +Returns a human readable string with the version number of libcurl and some of +its important components (like OpenSSL version). + +Note: this returns the actual running lib's version, you might have installed +a newer lib's include files in your system which may turn your LIBCURL_VERSION +#define value to differ from this result. +.SH RETURN VALUE +A pointer to a zero terminated string. +.SH "SEE ALSO" +The +.I LIBCURL_VERSION +#define in <curl/curl.h> +.SH BUGS +Surely there are some, you tell me! diff --git a/Build/source/libs/curl/docs/libcurl/curl_version.html b/Build/source/libs/curl/docs/libcurl/curl_version.html new file mode 100644 index 00000000000..3e50a1979d7 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/curl_version.html @@ -0,0 +1,76 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + curl_version - returns the libcurl version string + + +</PRE> +<H2>SYNOPSIS</H2><PRE> + <B>#include</B> <B><curl/curl.h></B> + + <B>char</B> <B>*curl_version(</B> <B>);</B> + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + Returns a human readable string with the version number of + libcurl and some of its important components (like OpenSSL + version). + + Note: this returns the actual running lib's version, you + might have installed a newer lib's include files in your + system which may turn your LIBCURL_VERSION #define value to + differ from this result. + + +</PRE> +<H2>RETURN VALUE</H2><PRE> + A pointer to a zero terminated string. + + +</PRE> +<H2>SEE ALSO</H2><PRE> + The <I>LIBCURL</I><B>_</B><I>VERSION</I> #define in <curl/curl.h> + + +</PRE> +<H2>BUGS</H2><PRE> + Surely there are some, you tell me! + + + + + + + + + + + + + + + + + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> diff --git a/Build/source/libs/curl/docs/libcurl/index.html b/Build/source/libs/curl/docs/libcurl/index.html new file mode 100644 index 00000000000..b3300013b75 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/index.html @@ -0,0 +1,38 @@ +HTML> +<HEAD> +<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> +<TITLE>Index to Curl documentation</TITLE> +</HEAD> + +<BODY> +<H1 ALIGN="CENTER">Index to Curl documentation</H1> + +<H2>Programs</H2> +<P><A HREF="curl-config.html">curl-config.html</A> +<P><A HREF="curl.html">curl.html</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> diff --git a/Build/source/libs/curl/docs/libcurl/libcurl.3 b/Build/source/libs/curl/docs/libcurl/libcurl.3 new file mode 100644 index 00000000000..9dc18c1bcf5 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/libcurl.3 @@ -0,0 +1,132 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id: libcurl.3,v 1.1 2002/03/04 10:09:49 bagder Exp $ +.\" +.TH libcurl 5 "14 August 2001" "libcurl 7.8.1" "libcurl overview" +.SH NAME +libcurl \- client-side URL transfers +.SH DESCRIPTION +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! + +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. + +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 +without a specified URL as you may have figured out yourself). You might want +to set some callbacks as well that will be called from the library when data +is available etc. \fIcurl_easy_setopt()\fP is there for this. + +When all is setup, you tell libcurl to perform the transfer using +\fIcurl_easy_perform()\fP. It will then do the entire operation and won't +return until it is done (successfully or not). + +After the transfer has been made, you can set new options and make another +transfer, or if you're done, cleanup the session by calling +\fIcurl_easy_cleanup()\fP. If you want persistant connections, you don't +cleanup immediately, but instead run ahead and perform other transfers using +the same handle. See the chapter below for Persistant Connections. + +There is also a series of other helpful functions to use. They are: + +.RS +.TP 10 +.B curl_version() +displays the libcurl version +.TP +.B curl_getdate() +converts a date string to time_t +.TP +.B curl_getenv() +portable environment variable reader +.TP +.B curl_easy_getinfo() +get information about a performed transfer +.TP +.B curl_formadd() +helps building a HTTP form POST +.TP +.B curl_formfree() +free a list built with curl_formparse()/curl_formadd() +.TP +.B curl_slist_append() +builds a linked list +.TP +.B curl_slist_free_all() +frees a whole curl_slist +.TP +.B curl_mprintf() +portable printf() functions +.TP +.B curl_strequal() +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. + +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. + +Run 'curl-config --libs' to get the (additional) linker options you need to +link with the particular version of libcurl you've installed. + +For details, see the curl-config.1 man page. +.SH "LIBCURL SYMBOL NAMES" +All public functions in the libcurl interface are prefixed with 'curl_' (with +a lowercase c). You can find other functions in the library source code, but +other prefixes indicate the functions are private and may change without +further notice in the next release. + +Only use documented functions and functionality! +.SH "PORTABILITY" +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. + +libcurl will *always* attempt to use persistant 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(). + +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. + +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. + diff --git a/Build/source/libs/curl/docs/libcurl/libcurl.html b/Build/source/libs/curl/docs/libcurl/libcurl.html new file mode 100644 index 00000000000..30f3681fbb0 --- /dev/null +++ b/Build/source/libs/curl/docs/libcurl/libcurl.html @@ -0,0 +1,185 @@ +<HTML> +<BODY> +<PRE> +<!-- Manpage converted by man2html 3.0.1 --> + +</PRE> +<H2>NAME</H2><PRE> + libcurl - client-side URL transfers + + +</PRE> +<H2>DESCRIPTION</H2><PRE> + This is an overview on how to use libcurl in your C pro + grams. There are specific man pages for each function men + tioned 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! + + All applications that use libcurl should call + <I>curl</I><B>_</B><I>global</I><B>_</B><I>init()</I> exactly once before any libcurl function + can be used. After all usage of libcurl is complete, it <B>must</B> + call <I>curl</I><B>_</B><I>global</I><B>_</B><I>cleanup()</I>. 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 <I>curl</I><B>_</B><I>easy</I><B>_</B><I>init()</I> to get the handle. + + 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 without a specified URL + as you may have figured out yourself). You might want to set + some callbacks as well that will be called from the library + when data is available etc. <I>curl</I><B>_</B><I>easy</I><B>_</B><I>setopt()</I> is there for + this. + + When all is setup, you tell libcurl to perform the transfer + using <I>curl</I><B>_</B><I>easy</I><B>_</B><I>perform()</I>. It will then do the entire oper + ation and won't return until it is done (successfully or + not). + + After the transfer has been made, you can set new options + and make another transfer, or if you're done, cleanup the + session by calling <I>curl</I><B>_</B><I>easy</I><B>_</B><I>cleanup()</I>. If you want persis + tant connections, you don't cleanup immediately, but instead + run ahead and perform other transfers using the same handle. + See the chapter below for Persistant Connections. + + There is also a series of other helpful functions to use. + They are: + + + <B>curl_version()</B> + displays the libcurl version + + <B>curl_getdate()</B> + converts a date string to time_t + + <B>curl_getenv()</B> + portable environment variable reader + + <B>curl_easy_getinfo()</B> + get information about a performed transfer + + <B>curl_formadd()</B> + helps building a HTTP form POST + + <B>curl_formfree()</B> + free a list built with curl_form + parse()/curl_formadd() + + <B>curl_slist_append()</B> + builds a linked list + + <B>curl_slist_free_all()</B> + frees a whole curl_slist + + <B>curl_mprintf()</B> + portable printf() functions + + <B>curl_strequal()</B> + portable case insensitive string comparisons + + + +</PRE> +<H2>LINKING WITH LIBCURL</H2><PRE> + 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. + + 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. + + Run 'curl-config --libs' to get the (additional) linker + options you need to link with the particular version of + libcurl you've installed. + + For details, see the curl-config.1 man page. + + +</PRE> +<H2>LIBCURL SYMBOL NAMES</H2><PRE> + All public functions in the libcurl interface are prefixed + with 'curl_' (with a lowercase c). You can find other func + tions in the library source code, but other prefixes indi + cate the functions are private and may change without fur + ther notice in the next release. + + Only use documented functions and functionality! + + +</PRE> +<H2>PORTABILITY</H2><PRE> + libcurl works <B>exactly</B> 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. + + +</PRE> +<H2>THREADS</H2><PRE> + 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. + + +</PRE> +<H2>PERSISTANT CONNECTIONS</H2><PRE> + With libcurl 7.7, persistant connections were added. Persis + tant connections means that libcurl can re-use the same con + nection for several transfers, if the conditions are right. + + libcurl will *always* attempt to use persistant 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(). + + To allow libcurl to take full advantage of persistant con + nections, 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 + + +</PRE> +<H2>COMPATIBILITY WITH OLDER LIBCURLS</H2><PRE> + Repeated curl_easy_perform() calls on the same handle were + not supported in pre-7.7 versions, and caused confusion and + undefined behaviour. + + + + + + + + + + +</PRE> +<HR> +<ADDRESS> +Man(1) output converted with +<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> +</ADDRESS> +</BODY> +</HTML> |