#include "tool_setup.h"
#ifndef HAVE_LIBZ
/*
 * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
 * Generation time: Mon Dec  9 18:02:49 2013
 */
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
void hugehelp(void)
{
   fputs(
"                                  _   _ ____  _\n"
"  Project                     ___| | | |  _ \\| |\n"
"                             / __| | | | |_) | |\n"
"                            | (__| |_| |  _ <| |___\n"
"                             \\___|\\___/|_| \\_\\_____|\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"     NAME\n"
"          curl - transfer a URL\n"
"\n"
"     SYNOPSIS\n"
"          curl [options] [URL...]\n"
"\n"
"     DESCRIPTION\n"
, stdout);
 fputs(
"          curl is a tool to transfer data from or to a server, using\n"
"          one of the supported protocols (DICT, FILE, FTP, FTPS,\n"
"          GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S,\n"
"          RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP).  The\n"
"          command is designed to work without user interaction.\n"
"\n"
"          curl offers a busload of useful tricks like proxy support,\n"
"          user authentication, FTP upload, HTTP post, SSL connections,\n"
, stdout);
 fputs(
"          cookies, file transfer resume, Metalink, and more. As you\n"
"          will see below, the number of features will make your head\n"
"          spin!\n"
"\n"
"          curl is powered by libcurl for all transfer-related fea-\n"
"          tures. See libcurl(3) for details.\n"
"\n"
"     URL\n"
"          The URL syntax is protocol-dependent. You'll find a detailed\n"
"          description in RFC 3986.\n"
"\n"
"          You can specify multiple URLs or parts of URLs by writing\n"
"          part sets within braces as in:\n"
"\n"
, stdout);
 fputs(
"           http://site.{one,two,three}.com\n"
"\n"
"          or you can get sequences of alphanumeric series by using []\n"
"          as in:\n"
"\n"
"           ftp://ftp.numericals.com/file[1-100].txt\n"
"           ftp://ftp.numericals.com/file[001-100].txt    (with leading\n"
"          zeros)\n"
"           ftp://ftp.letters.com/file[a-z].txt\n"
"\n"
"          Nested sequences are not supported, but you can use several\n"
"          ones next to each other:\n"
"\n"
"           http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html\n"
"\n"
, stdout);
 fputs(
"          You can specify any amount of URLs on the command line. They\n"
"          will be fetched in a sequential manner in the specified\n"
"          order.\n"
"\n"
"          You can specify a step counter for the ranges to get every\n"
"          Nth number or letter:\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"           http://www.numericals.com/file[1-100:10].txt\n"
"           http://www.letters.com/file[a-z:2].txt\n"
"\n"
, stdout);
 fputs(
"          If you specify URL without protocol:// prefix, curl will\n"
"          attempt to guess what protocol you might want. It will then\n"
"          default to HTTP but try other protocols based on often-used\n"
"          host name prefixes. For example, for host names starting\n"
"          with \"ftp.\" curl will assume you want to speak FTP.\n"
"\n"
"          curl will do its best to use what you pass to it as a URL.\n"
"          It is not trying to validate it as a syntactically correct\n"
, stdout);
 fputs(
"          URL by any means but is instead very liberal with what it\n"
"          accepts.\n"
"\n"
"          curl will attempt to re-use connections for multiple file\n"
"          transfers, so that getting many files from the same server\n"
"          will not do multiple connects / handshakes. This improves\n"
"          speed. Of course this is only done on files specified on a\n"
"          single command line and cannot be used between separate curl\n"
"          invokes.\n"
"\n"
"     PROGRESS METER\n"
, stdout);
 fputs(
"          curl normally displays a progress meter during operations,\n"
"          indicating the amount of transferred data, transfer speeds\n"
"          and estimated time left, etc.\n"
"\n"
"          curl displays this data to the terminal by default, so if\n"
"          you invoke curl to do an operation and it is about to write\n"
"          data to the terminal, it disables the progress meter as oth-\n"
"          erwise it would mess up the output mixing progress meter and\n"
"          response data.\n"
"\n"
, stdout);
 fputs(
"          If you want a progress meter for HTTP POST or PUT requests,\n"
"          you need to redirect the response output to a file, using\n"
"          shell redirect (>), -o [file] or similar.\n"
"\n"
"          It is not the same case for FTP upload as that operation\n"
"          does not spit out any response data to the terminal.\n"
"\n"
"          If you prefer a progress \"bar\" instead of the regular meter,\n"
"          -# is your friend.\n"
"\n"
"     OPTIONS\n"
, stdout);
 fputs(
"          Options start with one or two dashes. Many of the options\n"
"          require an addition value next to it.\n"
"\n"
"          The short \"single-dash\" form of the options, -d for example,\n"
"          may be used with or without a space between it and its\n"
"          value, although a space is a recommended separator. The long\n"
"          \"double-dash\" form, --data for example, requires a space\n"
"          between it and its value.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"          Short version options that don't need any additional values\n"
"          can be used immediately next to each other, like for example\n"
"          you can specify all the options -O, -L and -v at once as\n"
"          -OLv.\n"
"\n"
"          In general, all boolean options are enabled with --option\n"
"          and yet again disabled with --no-option. That is, you use\n"
"          the exact same option name but prefix it with \"no-\". How-\n"
"          ever, in this list we mostly only list and show the --option\n"
, stdout);
 fputs(
"          version of them. (This concept with --no options was added\n"
"          in 7.19.0. Previously most options were toggled on/off on\n"
"          repeated use of the same command line option.)\n"
"\n"
"          -#, --progress-bar\n"
"               Make curl display progress as a simple progress bar\n"
"               instead of the standard, more informational, meter.\n"
"\n"
"          -0, --http1.0\n"
"               (HTTP) Tells curl to use HTTP version 1.0 instead of\n"
, stdout);
 fputs(
"               using its internally preferred: HTTP 1.1.\n"
"\n"
"          --http1.1\n"
"               (HTTP) Tells curl to use HTTP version 1.1. This is the\n"
"               internal default version. (Added in 7.33.0)\n"
"\n"
"          --http2.0\n"
"               (HTTP) Tells curl to issue its requests using HTTP 2.0.\n"
"               This requires that the underlying libcurl was built to\n"
"               support it. (Added in 7.33.0)\n"
"\n"
"          -1, --tlsv1\n"
, stdout);
 fputs(
"               (SSL) Forces curl to use TLS version 1 when negotiating\n"
"               with a remote TLS server.\n"
"\n"
"          -2, --sslv2\n"
"               (SSL) Forces curl to use SSL version 2 when negotiating\n"
"               with a remote SSL server.\n"
"\n"
"          -3, --sslv3\n"
"               (SSL) Forces curl to use SSL version 3 when negotiating\n"
"               with a remote SSL server.\n"
"\n"
"          -4, --ipv4\n"
"               If curl is capable of resolving an address to multiple\n"
, stdout);
 fputs(
"               IP versions (which it is if it is IPv6-capable), this\n"
"               option tells curl to resolve names to IPv4 addresses\n"
"               only.\n"
"\n"
"          -6, --ipv6\n"
"               If curl is capable of resolving an address to multiple\n"
"               IP versions (which it is if it is IPv6-capable), this\n"
"               option tells curl to resolve names to IPv6 addresses\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               only.\n"
"\n"
, stdout);
 fputs(
"          -a, --append\n"
"               (FTP/SFTP) When used in an upload, this will tell curl\n"
"               to append to the target file instead of overwriting it.\n"
"               If the file doesn't exist, it will be created.  Note\n"
"               that this flag is ignored by some SSH servers (includ-\n"
"               ing OpenSSH).\n"
"\n"
"          -A, --user-agent <agent string>\n"
"               (HTTP) Specify the User-Agent string to send to the\n"
, stdout);
 fputs(
"               HTTP server. Some badly done CGIs fail if this field\n"
"               isn't set to \"Mozilla/4.0\". To encode blanks in the\n"
"               string, surround the string with single quote marks.\n"
"               This can also be set with the -H, --header option of\n"
"               course.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --anyauth\n"
"               (HTTP) Tells curl to figure out authentication method\n"
, stdout);
 fputs(
"               by itself, and use the most secure one the remote site\n"
"               claims to support. This is done by first doing a\n"
"               request and checking the response-headers, thus possi-\n"
"               bly inducing an extra network round-trip. This is used\n"
"               instead of setting a specific authentication method,\n"
"               which you can do with --basic, --digest, --ntlm, and\n"
"               --negotiate.\n"
"\n"
, stdout);
 fputs(
"               Note that using --anyauth is not recommended if you do\n"
"               uploads from stdin, since it may require data to be\n"
"               sent twice and then the client must be able to rewind.\n"
"               If the need should arise when uploading from stdin, the\n"
"               upload operation will fail.\n"
"\n"
"          -b, --cookie <name=data>\n"
"               (HTTP) Pass the data to the HTTP server as a cookie. It\n"
"               is supposedly the data previously received from the\n"
, stdout);
 fputs(
"               server in a \"Set-Cookie:\" line.  The data should be in\n"
"               the format \"NAME1=VALUE1; NAME2=VALUE2\".\n"
"\n"
"               If no '=' symbol is used in the line, it is treated as\n"
"               a filename to use to read previously stored cookie\n"
"               lines from, which should be used in this session if\n"
"               they match. Using this method also activates the\n"
"               \"cookie parser\" which will make curl record incoming\n"
, stdout);
 fputs(
"               cookies too, which may be handy if you're using this in\n"
"               combination with the -L, --location option. The file\n"
"               format of the file to read cookies from should be plain\n"
"               HTTP headers or the Netscape/Mozilla cookie file for-\n"
"               mat.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               NOTE that the file specified with -b, --cookie is only\n"
, stdout);
 fputs(
"               used as input. No cookies will be stored in the file.\n"
"               To store cookies, use the -c, --cookie-jar option or\n"
"               you could even save the HTTP headers to a file using\n"
"               -D, --dump-header!\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -B, --use-ascii\n"
"               (FTP/LDAP) Enable ASCII transfer. For FTP, this can\n"
"               also be enforced by using an URL that ends with\n"
, stdout);
 fputs(
"               \";type=A\". This option causes data sent to stdout to be\n"
"               in text mode for win32 systems.\n"
"\n"
"          --basic\n"
"               (HTTP) Tells curl to use HTTP Basic authentication.\n"
"               This is the default and this option is usually point-\n"
"               less, unless you use it to override a previously set\n"
"               option that sets a different authentication method\n"
"               (such as --ntlm, --digest, or --negotiate).\n"
"\n"
, stdout);
 fputs(
"          -c, --cookie-jar <file name>\n"
"               (HTTP) Specify to which file you want curl to write all\n"
"               cookies after a completed operation. Curl writes all\n"
"               cookies previously read from a specified file as well\n"
"               as all cookies received from remote server(s). If no\n"
"               cookies are known, no file will be written. The file\n"
"               will be written using the Netscape cookie file format.\n"
, stdout);
 fputs(
"               If you set the file name to a single dash, \"-\", the\n"
"               cookies will be written to stdout.\n"
"\n"
"               This command line option will activate the cookie\n"
"               engine that makes curl record and use cookies. Another\n"
"               way to activate it is to use the -b, --cookie option.\n"
"               If the cookie jar can't be created or written to, the\n"
"               whole curl operation won't fail or even report an error\n"
, stdout);
 fputs(
"               clearly. Using -v will get a warning displayed, but\n"
"               that is the only visible feedback you get about this\n"
"               possibly lethal situation.\n"
"\n"
"               If this option is used several times, the last speci-\n"
"               fied file name will be used.\n"
"\n"
"          -C, --continue-at <offset>\n"
"               Continue/Resume a previous file transfer at the given\n"
"               offset. The given offset is the exact number of bytes\n"
, stdout);
 fputs(
"               that will be skipped, counting from the beginning of\n"
"               the source file before it is transferred to the desti-\n"
"               nation.  If used with uploads, the FTP server command\n"
"               SIZE will not be used by curl.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               Use \"-C -\" to tell curl to automatically find out\n"
"               where/how to resume the transfer. It then uses the\n"
, stdout);
 fputs(
"               given output/input files to figure that out.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --ciphers <list of ciphers>\n"
"               (SSL) Specifies which ciphers to use in the connection.\n"
"               The list of ciphers must specify valid ciphers. Read up\n"
"               on SSL cipher list details on this URL:\n"
"               http://www.openssl.org/docs/apps/ciphers.html\n"
"\n"
, stdout);
 fputs(
"               NSS ciphers are done differently than OpenSSL and\n"
"               GnuTLS. The full list of NSS ciphers is in the NSSCi-\n"
"               pherSuite entry at this URL:\n"
"               http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --compressed\n"
"               (HTTP) Request a compressed response using one of the\n"
, stdout);
 fputs(
"               algorithms curl supports, and save the uncompressed\n"
"               document.  If this option is used and the server sends\n"
"               an unsupported encoding, curl will report an error.\n"
"\n"
"          --connect-timeout <seconds>\n"
"               Maximum time in seconds that you allow the connection\n"
"               to the server to take.  This only limits the connection\n"
"               phase, once curl has connected this option is of no\n"
, stdout);
 fputs(
"               more use.  Since 7.32.0, this option accepts decimal\n"
"               values, but the actual timeout will decrease in accu-\n"
"               racy as the specified timeout increases in decimal pre-\n"
"               cision. See also the -m, --max-time option.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --create-dirs\n"
"               When used in conjunction with the -o option, curl will\n"
, stdout);
 fputs(
"               create the necessary local directory hierarchy as\n"
"               needed. This option creates the dirs mentioned with the\n"
"               -o option, nothing else. If the -o file name uses no\n"
"               dir or if the dirs it mentions already exist, no dir\n"
"               will be created.\n"
"\n"
"               To create remote directories when using FTP or SFTP,\n"
"               try --ftp-create-dirs.\n"
"\n"
"          --crlf\n"
"               (FTP) Convert LF to CRLF in upload. Useful for MVS\n"
"\n"
, stdout);
 fputs(
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               (OS/390).\n"
"\n"
"          --crlfile <file>\n"
"               (HTTPS/FTPS) Provide a file using PEM format with a\n"
"               Certificate Revocation List that may specify peer cer-\n"
"               tificates that are to be considered revoked.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"               (Added in 7.19.7)\n"
"          -d, --data <data>\n"
, stdout);
 fputs(
"               (HTTP) Sends the specified data in a POST request to\n"
"               the HTTP server, in the same way that a browser does\n"
"               when a user has filled in an HTML form and presses the\n"
"               submit button. This will cause curl to pass the data to\n"
"               the server using the content-type application/x-www-\n"
"               form-urlencoded.  Compare to -F, --form.\n"
"\n"
"               -d, --data is the same as --data-ascii. To post data\n"
, stdout);
 fputs(
"               purely binary, you should instead use the --data-binary\n"
"               option. To URL-encode the value of a form field you may\n"
"               use --data-urlencode.\n"
"\n"
"               If any of these options is used more than once on the\n"
"               same command line, the data pieces specified will be\n"
"               merged together with a separating &-symbol. Thus, using\n"
"               '-d name=daniel -d skill=lousy' would generate a post\n"
, stdout);
 fputs(
"               chunk that looks like 'name=daniel&skill=lousy'.\n"
"\n"
"               If you start the data with the letter @, the rest\n"
"               should be a file name to read the data from, or - if\n"
"               you want curl to read the data from stdin.  The con-\n"
"               tents of the file must already be URL-encoded. Multiple\n"
"               files can also be specified. Posting data from a file\n"
"               named 'foobar' would thus be done with --data @foobar.\n"
, stdout);
 fputs(
"               When --data is told to read from a file like that, car-\n"
"               riage returns and newlines will be stripped out.\n"
"\n"
"          -D, --dump-header <file>\n"
"               Write the protocol headers to the specified file.\n"
"\n"
"               This option is handy to use when you want to store the\n"
"               headers that an HTTP site sends to you. Cookies from\n"
"               the headers could then be read in a second curl invoca-\n"
, stdout);
 fputs(
"               tion by using the -b, --cookie option! The -c, --\n"
"               cookie-jar option is however a better way to store\n"
"               cookies.\n"
"\n"
"               When used in FTP, the FTP server response lines are\n"
"               considered being \"headers\" and thus are saved there.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --data-ascii <data>\n"
, stdout);
 fputs(
"               See -d, --data.\n"
"\n"
"          --data-binary <data>\n"
"               (HTTP) This posts data exactly as specified with no\n"
"               extra processing whatsoever.\n"
"\n"
"               If you start the data with the letter @, the rest\n"
"               should be a filename.  Data is posted in a similar man-\n"
"               ner as --data-ascii does, except that newlines and car-\n"
"               riage returns are preserved and conversions are never\n"
"               done.\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the ones follow-\n"
"               ing the first will append data as described in -d, --\n"
"               data.\n"
"\n"
"          --data-urlencode <data>\n"
"               (HTTP) This posts data, similar to the other --data\n"
"               options with the exception that this performs URL-\n"
"               encoding. (Added in 7.18.0)\n"
"\n"
"               To be CGI-compliant, the <data> part should begin with\n"
, stdout);
 fputs(
"               a name followed by a separator and a content specifica-\n"
"               tion. The <data> part can be passed to curl using one\n"
"               of the following syntaxes:\n"
"\n"
"               content\n"
"                    This will make curl URL-encode the content and\n"
"                    pass that on. Just be careful so that the content\n"
"                    doesn't contain any = or @ symbols, as that will\n"
"                    then make the syntax match one of the other cases\n"
, stdout);
 fputs(
"                    below!\n"
"\n"
"               =content\n"
"                    This will make curl URL-encode the content and\n"
"                    pass that on. The preceding = symbol is not\n"
"                    included in the data.\n"
"\n"
"               name=content\n"
"                    This will make curl URL-encode the content part\n"
"                    and pass that on. Note that the name part is\n"
"                    expected to be URL-encoded already.\n"
"\n"
"               @filename\n"
, stdout);
 fputs(
"                    This will make curl load data from the given file\n"
"                    (including any newlines), URL-encode that data and\n"
"                    pass it on in the POST.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               name@filename\n"
"                    This will make curl load data from the given file\n"
"                    (including any newlines), URL-encode that data and\n"
"                    pass it on in the POST. The name part gets an\n"
, stdout);
 fputs(
"                    equal sign appended, resulting in\n"
"                    name=urlencoded-file-content. Note that the name\n"
"                    is expected to be URL-encoded already.\n"
"\n"
"          --delegation LEVEL\n"
"               Set LEVEL to tell the server what it is allowed to del-\n"
"               egate when it comes to user credentials. Used with\n"
"               GSS/kerberos.\n"
"\n"
"               none Don't allow any delegation.\n"
"\n"
"               policy\n"
, stdout);
 fputs(
"                    Delegates if and only if the OK-AS-DELEGATE flag\n"
"                    is set in the Kerberos service ticket, which is a\n"
"                    matter of realm policy.\n"
"\n"
"               always\n"
"                    Unconditionally allow the server to delegate.\n"
"\n"
"          --digest\n"
"               (HTTP) Enables HTTP Digest authentication. This is an\n"
"               authentication scheme that prevents the password from\n"
"               being sent over the wire in clear text. Use this in\n"
, stdout);
 fputs(
"               combination with the normal -u, --user option to set\n"
"               user name and password. See also --ntlm, --negotiate\n"
"               and --anyauth for related options.\n"
"\n"
"               If this option is used several times, only the first\n"
"               one is used.\n"
"\n"
"          --disable-eprt\n"
"               (FTP) Tell curl to disable the use of the EPRT and LPRT\n"
"               commands when doing active FTP transfers. Curl will\n"
, stdout);
 fputs(
"               normally always first attempt to use EPRT, then LPRT\n"
"               before using PORT, but with this option, it will use\n"
"               PORT right away. EPRT and LPRT are extensions to the\n"
"               original FTP protocol, and may not work on all servers,\n"
"               but they enable more functionality in a better way than\n"
"               the traditional PORT command.\n"
"\n"
"               --eprt can be used to explicitly enable EPRT again and\n"
, stdout);
 fputs(
"               --no-eprt is an alias for --disable-eprt.\n"
"\n"
"               Disabling EPRT only changes the active behavior. If you\n"
"               want to switch to passive mode you need to not use -P,\n"
"               --ftp-port or force it with --ftp-pasv.\n"
"\n"
"          --disable-epsv\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               (FTP) Tell curl to disable the use of the EPSV command\n"
"               when doing passive FTP transfers. Curl will normally\n"
, stdout);
 fputs(
"               always first attempt to use EPSV before PASV, but with\n"
"               this option, it will not try using EPSV.\n"
"\n"
"               --epsv can be used to explicitly enable EPSV again and\n"
"               --no-epsv is an alias for --disable-epsv.\n"
"\n"
"               Disabling EPSV only changes the passive behavior. If\n"
"               you want to switch to active mode you need to use -P,\n"
"               --ftp-port.\n"
"\n"
"          --dns-interface <interface>\n"
, stdout);
 fputs(
"               Tell curl to send outgoing DNS requests through <inter-\n"
"               face>. This option is a counterpart to --interface\n"
"               (which does not affect DNS). The supplied string must\n"
"               be an interface name (not an address).\n"
"\n"
"               This option requires that libcurl was built with a\n"
"               resolver backend that supports this operation. The c-\n"
"               ares backend is the only such one. (Added in 7.33.0)\n"
"\n"
, stdout);
 fputs(
"          --dns-ipv4-addr <ip-address>\n"
"               Tell curl to bind to <ip-address> when making IPv4 DNS\n"
"               requests, so that the DNS requests originate from this\n"
"               address. The argument should be a single IPv4 address.\n"
"\n"
"               This option requires that libcurl was built with a\n"
"               resolver backend that supports this operation. The c-\n"
"               ares backend is the only such one.  (Added in 7.33.0)\n"
"\n"
"          --dns-ipv6-addr <ip-address>\n"
, stdout);
 fputs(
"               Tell curl to bind to <ip-address> when making IPv6 DNS\n"
"               requests, so that the DNS requests originate from this\n"
"               address. The argument should be a single IPv6 address.\n"
"\n"
"               This option requires that libcurl was built with a\n"
"               resolver backend that supports this operation. The c-\n"
"               ares backend is the only such one.  (Added in 7.33.0)\n"
"\n"
"          --dns-servers <ip-address,ip-address>\n"
, stdout);
 fputs(
"               Set the list of DNS servers to be used instead of the\n"
"               system default.  The list of IP addresses should be\n"
"               separated with commas. Port numbers may also optionally\n"
"               be given as :<port-number> after each IP address.\n"
"\n"
"               This option requires that libcurl was built with a\n"
"               resolver backend that supports this operation. The c-\n"
"               ares backend is the only such one.  (Added in 7.33.0)\n"
"\n"
, stdout);
 fputs(
"          -e, --referer <URL>\n"
"               (HTTP) Sends the \"Referer Page\" information to the HTTP\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               server. This can also be set with the -H, --header flag\n"
"               of course.  When used with -L, --location you can\n"
"               append \";auto\" to the --referer URL to make curl auto-\n"
"               matically set the previous URL when it follows a Loca-\n"
, stdout);
 fputs(
"               tion: header. The \";auto\" string can be used alone,\n"
"               even if you don't set an initial --referer.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -E, --cert <certificate[:password]>\n"
"               (SSL) Tells curl to use the specified client certifi-\n"
"               cate file when getting a file with HTTPS, FTPS or\n"
"               another SSL-based protocol. The certificate must be in\n"
, stdout);
 fputs(
"               PKCS#12 format if using Secure Transport, or PEM format\n"
"               if using any other engine.  If the optional password\n"
"               isn't specified, it will be queried for on the termi-\n"
"               nal. Note that this option assumes a \"certificate\" file\n"
"               that is the private key and the private certificate\n"
"               concatenated! See --cert and --key to specify them\n"
"               independently.\n"
"\n"
, stdout);
 fputs(
"               If curl is built against the NSS SSL library then this\n"
"               option can tell curl the nickname of the certificate to\n"
"               use within the NSS database defined by the environment\n"
"               variable SSL_DIR (or by default /etc/pki/nssdb). If the\n"
"               NSS PEM PKCS#11 module (libnsspem.so) is available then\n"
"               PEM files may be loaded. If you want to use a file from\n"
"               the current directory, please precede it with \"./\" pre-\n"
, stdout);
 fputs(
"               fix, in order to avoid confusion with a nickname.  If\n"
"               the nickname contains \":\", it needs to be preceded by\n"
"               \"\\\" so that it is not recognized as password delimiter.\n"
"               If the nickname contains \"\\\", it needs to be escaped as\n"
"               \"\\\\\" so that it is not recognized as an escape charac-\n"
"               ter.\n"
"\n"
"               (iOS and Mac OS X only) If curl is built against Secure\n"
, stdout);
 fputs(
"               Transport, then the certificate string can either be\n"
"               the name of a certificate/private key in the system or\n"
"               user keychain, or the path to a PKCS#12-encoded cer-\n"
"               tificate and private key. If you want to use a file\n"
"               from the current directory, please precede it with \"./\"\n"
"               prefix, in order to avoid confusion with a nickname.\n"
"\n"
"               If this option is used several times, the last one will\n"
, stdout);
 fputs(
"               be used.\n"
"\n"
"          --engine <name>\n"
"               Select the OpenSSL crypto engine to use for cipher\n"
"               operations. Use --engine list to print a list of\n"
"               build-time supported engines. Note that not all (or\n"
"               none) of the engines may be available at run-time.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          --environment\n"
"               (RISC OS ONLY) Sets a range of environment variables,\n"
, stdout);
 fputs(
"               using the names the -w option supports, to allow easier\n"
"               extraction of useful information after having run curl.\n"
"\n"
"          --egd-file <file>\n"
"               (SSL) Specify the path name to the Entropy Gathering\n"
"               Daemon socket. The socket is used to seed the random\n"
"               engine for SSL connections. See also the --random-file\n"
"               option.\n"
"\n"
"          --cert-type <type>\n"
"               (SSL) Tells curl what certificate type the provided\n"
, stdout);
 fputs(
"               certificate is in. PEM, DER and ENG are recognized\n"
"               types.  If not specified, PEM is assumed.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --cacert <CA certificate>\n"
"               (SSL) Tells curl to use the specified certificate file\n"
"               to verify the peer. The file may contain multiple CA\n"
"               certificates. The certificate(s) must be in PEM format.\n"
, stdout);
 fputs(
"               Normally curl is built to use a default file for this,\n"
"               so this option is typically used to alter that default\n"
"               file.\n"
"\n"
"               curl recognizes the environment variable named\n"
"               'CURL_CA_BUNDLE' if it is set, and uses the given path\n"
"               as a path to a CA cert bundle. This option overrides\n"
"               that variable.\n"
"\n"
"               The windows version of curl will automatically look for\n"
, stdout);
 fputs(
"               a CA certs file named 'curl-ca-bundle.crt', either in\n"
"               the same directory as curl.exe, or in the Current Work-\n"
"               ing Directory, or in any folder along your PATH.\n"
"\n"
"               If curl is built against the NSS SSL library, the NSS\n"
"               PEM PKCS#11 module (libnsspem.so) needs to be available\n"
"               for this option to work properly.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
, stdout);
 fputs(
"          --capath <CA certificate directory>\n"
"               (SSL) Tells curl to use the specified certificate\n"
"               directory to verify the peer. Multiple paths can be\n"
"               provided by separating them with \":\" (e.g.\n"
"               \"path1:path2:path3\"). The certificates must be in PEM\n"
"               format, and if curl is built against OpenSSL, the\n"
"               directory must have been processed using the c_rehash\n"
, stdout);
 fputs(
"               utility supplied with OpenSSL. Using --capath can allow\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               OpenSSL-powered curl to make SSL-connections much more\n"
"               efficiently than using --cacert if the --cacert file\n"
"               contains many CA certificates.\n"
"\n"
"               If this option is set, the default capath value will be\n"
"               ignored, and if it is used several times, the last one\n"
"               will be used.\n"
"\n"
, stdout);
 fputs(
"          -f, --fail\n"
"               (HTTP) Fail silently (no output at all) on server\n"
"               errors. This is mostly done to better enable scripts\n"
"               etc to better deal with failed attempts. In normal\n"
"               cases when an HTTP server fails to deliver a document,\n"
"               it returns an HTML document stating so (which often\n"
"               also describes why and more). This flag will prevent\n"
"               curl from outputting that and return error 22.\n"
"\n"
, stdout);
 fputs(
"               This method is not fail-safe and there are occasions\n"
"               where non-successful response codes will slip through,\n"
"               especially when authentication is involved (response\n"
"               codes 401 and 407).\n"
"\n"
"          -F, --form <name=content>\n"
"               (HTTP) This lets curl emulate a filled-in form in which\n"
"               a user has pressed the submit button. This causes curl\n"
"               to POST data using the Content-Type multipart/form-data\n"
, stdout);
 fputs(
"               according to RFC 2388. This enables uploading of binary\n"
"               files etc. To force the 'content' part to be a file,\n"
"               prefix the file name with an @ sign. To just get the\n"
"               content part from a file, prefix the file name with the\n"
"               symbol <. The difference between @ and < is then that @\n"
"               makes a file get attached in the post as a file upload,\n"
"               while the < makes a text field and just get the con-\n"
, stdout);
 fputs(
"               tents for that text field from a file.\n"
"\n"
"               Example, to send your password file to the server,\n"
"               where 'password' is the name of the form-field to which\n"
"               /etc/passwd will be the input:\n"
"\n"
"               curl -F password=@/etc/passwd www.mypasswords.com\n"
"\n"
"               To read content from stdin instead of a file, use - as\n"
"               the filename. This goes for both @ and < constructs.\n"
"\n"
, stdout);
 fputs(
"               You can also tell curl what Content-Type to use by\n"
"               using 'type=', in a manner similar to:\n"
"\n"
"               curl -F \"web=@index.html;type=text/html\" url.com\n"
"\n"
"               or\n"
"\n"
"               curl -F \"name=daniel;type=text/foo\" url.com\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               You can also explicitly change the name field of a file\n"
"               upload part by setting filename=, like this:\n"
"\n"
, stdout);
 fputs(
"               curl -F \"file=@localfile;filename=nameinpost\" url.com\n"
"\n"
"               If filename/path contains ',' or ';', it must be quoted\n"
"               by double-quotes like:\n"
"\n"
"               curl -F \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\"\n"
"               url.com\n"
"\n"
"               or\n"
"\n"
"               curl -F 'file=@\"localfile\";filename=\"nameinpost\"'\n"
"               url.com\n"
"\n"
"               Note that if a filename/path is quoted by double-\n"
, stdout);
 fputs(
"               quotes, any double-quote or backslash within the file-\n"
"               name must be escaped by backslash.\n"
"\n"
"               See further examples and details in the MANUAL.\n"
"\n"
"               This option can be used multiple times.\n"
"\n"
"          --ftp-account [data]\n"
"               (FTP) When an FTP server asks for \"account data\" after\n"
"               user name and password has been provided, this data is\n"
"               sent off using the ACCT command. (Added in 7.13.0)\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --ftp-alternative-to-user <command>\n"
"               (FTP) If authenticating with the USER and PASS commands\n"
"               fails, send this command.  When connecting to\n"
"               Tumbleweed's Secure Transport server over FTPS using a\n"
"               client certificate, using \"SITE AUTH\" will tell the\n"
"               server to retrieve the username from the certificate.\n"
, stdout);
 fputs(
"               (Added in 7.15.5)\n"
"          --ftp-create-dirs\n"
"               (FTP/SFTP) When an FTP or SFTP URL/operation uses a\n"
"               path that doesn't currently exist on the server, the\n"
"               standard behavior of curl is to fail. Using this\n"
"               option, curl will instead attempt to create missing\n"
"               directories.\n"
"\n"
"          --ftp-method [method]\n"
"               (FTP) Control what method curl should use to reach a\n"
, stdout);
 fputs(
"               file on an FTP(S) server. The method argument should be\n"
"               one of the following alternatives:\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               multicwd\n"
"                    curl does a single CWD operation for each path\n"
"                    part in the given URL. For deep hierarchies this\n"
"                    means very many commands. This is how RFC 1738\n"
"                    says it should be done. This is the default but\n"
, stdout);
 fputs(
"                    the slowest behavior.\n"
"\n"
"               nocwd\n"
"                    curl does no CWD at all. curl will do SIZE, RETR,\n"
"                    STOR etc and give a full path to the server for\n"
"                    all these commands. This is the fastest behavior.\n"
"\n"
"               singlecwd\n"
"                    curl does one CWD with the full target directory\n"
"                    and then operates on the file \"normally\" (like in\n"
, stdout);
 fputs(
"                    the multicwd case). This is somewhat more stan-\n"
"                    dards compliant than 'nocwd' but without the full\n"
"                    penalty of 'multicwd'.\n"
"          (Added in 7.15.1)\n"
"\n"
"          --ftp-pasv\n"
"               (FTP) Use passive mode for the data connection. Passive\n"
"               is the internal default behavior, but using this option\n"
"               can be used to override a previous -P/-ftp-port option.\n"
"               (Added in 7.11.0)\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, only the first\n"
"               one is used. Undoing an enforced passive really isn't\n"
"               doable but you must then instead enforce the correct\n"
"               -P, --ftp-port again.\n"
"\n"
"               Passive mode means that curl will try the EPSV command\n"
"               first and then PASV, unless --disable-epsv is used.\n"
"\n"
"          --ftp-skip-pasv-ip\n"
"               (FTP) Tell curl to not use the IP address the server\n"
, stdout);
 fputs(
"               suggests in its response to curl's PASV command when\n"
"               curl connects the data connection. Instead curl will\n"
"               re-use the same IP address it already uses for the con-\n"
"               trol connection. (Added in 7.14.2)\n"
"\n"
"               This option has no effect if PORT, EPRT or EPSV is used\n"
"               instead of PASV.\n"
"\n"
"          --ftp-pret\n"
"               (FTP) Tell curl to send a PRET command before PASV (and\n"
, stdout);
 fputs(
"               EPSV). Certain FTP servers, mainly drftpd, require this\n"
"               non-standard command for directory listings as well as\n"
"               up and downloads in PASV mode.  (Added in 7.20.x)\n"
"\n"
"          --ftp-ssl-ccc\n"
"               (FTP) Use CCC (Clear Command Channel) Shuts down the\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               SSL/TLS layer after authenticating. The rest of the\n"
, stdout);
 fputs(
"               control channel communication will be unencrypted. This\n"
"               allows NAT routers to follow the FTP transaction. The\n"
"               default mode is passive. See --ftp-ssl-ccc-mode for\n"
"               other modes.  (Added in 7.16.1)\n"
"\n"
"          --ftp-ssl-ccc-mode [active/passive]\n"
"               (FTP) Use CCC (Clear Command Channel) Sets the CCC\n"
"               mode. The passive mode will not initiate the shutdown,\n"
, stdout);
 fputs(
"               but instead wait for the server to do it, and will not\n"
"               reply to the shutdown from the server. The active mode\n"
"               initiates the shutdown and waits for a reply from the\n"
"               server.  (Added in 7.16.2)\n"
"\n"
"          --ftp-ssl-control\n"
"               (FTP) Require SSL/TLS for the FTP login, clear for\n"
"               transfer.  Allows secure authentication, but non-\n"
"               encrypted data transfers for efficiency.  Fails the\n"
, stdout);
 fputs(
"               transfer if the server doesn't support SSL/TLS.  (Added\n"
"               in 7.16.0) that can still be used but will be removed\n"
"               in a future version.\n"
"\n"
"          --form-string <name=string>\n"
"               (HTTP) Similar to --form except that the value string\n"
"               for the named parameter is used literally. Leading '@'\n"
"               and '<' characters, and the ';type=' string in the\n"
"               value have no special meaning. Use this in preference\n"
, stdout);
 fputs(
"               to --form if there's any possibility that the string\n"
"               value may accidentally trigger the '@' or '<' features\n"
"               of --form.\n"
"\n"
"          -g, --globoff\n"
"               This option switches off the \"URL globbing parser\".\n"
"               When you set this option, you can specify URLs that\n"
"               contain the letters {}[] without having them being\n"
"               interpreted by curl itself. Note that these letters are\n"
, stdout);
 fputs(
"               not normal legal URL contents but they should be\n"
"               encoded according to the URI standard.\n"
"\n"
"          -G, --get\n"
"               When used, this option will make all data specified\n"
"               with -d, --data or --data-binary to be used in an HTTP\n"
"               GET request instead of the POST request that otherwise\n"
"               would be used. The data will be appended to the URL\n"
"               with a '?' separator.\n"
"\n"
, stdout);
 fputs(
"               If used in combination with -I, the POST data will\n"
"               instead be appended to the URL with a HEAD request.\n"
"\n"
"               If this option is used several times, only the first\n"
"               one is used. This is because undoing a GET doesn't make\n"
"               sense, but you should then instead enforce the\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               alternative method you prefer.\n"
"\n"
"          -H, --header <header>\n"
, stdout);
 fputs(
"               (HTTP) Extra header to use when getting a web page. You\n"
"               may specify any number of extra headers. Note that if\n"
"               you should add a custom header that has the same name\n"
"               as one of the internal ones curl would use, your exter-\n"
"               nally set header will be used instead of the internal\n"
"               one. This allows you to make even trickier stuff than\n"
"               curl would normally do. You should not replace inter-\n"
, stdout);
 fputs(
"               nally set headers without knowing perfectly well what\n"
"               you're doing. Remove an internal header by giving a\n"
"               replacement without content on the right side of the\n"
"               colon, as in: -H \"Host:\". If you send the custom header\n"
"               with no-value then its header must be terminated with a\n"
"               semicolon, such as -H \"X-Custom-Header;\" to send \"X-\n"
"               Custom-Header:\".\n"
"\n"
, stdout);
 fputs(
"               curl will make sure that each header you add/replace is\n"
"               sent with the proper end-of-line marker, you should\n"
"               thus not add that as a part of the header content: do\n"
"               not add newlines or carriage returns, they will only\n"
"               mess things up for you.\n"
"\n"
"               See also the -A, --user-agent and -e, --referer\n"
"               options.\n"
"\n"
"               This option can be used multiple times to\n"
, stdout);
 fputs(
"               add/replace/remove multiple headers.\n"
"\n"
"          --hostpubmd5 <md5>\n"
"               (SCP/SFTP) Pass a string containing 32 hexadecimal dig-\n"
"               its. The string should be the 128 bit MD5 checksum of\n"
"               the remote host's public key, curl will refuse the con-\n"
"               nection with the host unless the md5sums match. (Added\n"
"               in 7.17.1)\n"
"\n"
"          --ignore-content-length\n"
"               (HTTP) Ignore the Content-Length header. This is par-\n"
, stdout);
 fputs(
"               ticularly useful for servers running Apache 1.x, which\n"
"               will report incorrect Content-Length for files larger\n"
"               than 2 gigabytes.\n"
"\n"
"          -i, --include\n"
"               (HTTP) Include the HTTP-header in the output. The\n"
"               HTTP-header includes things like server-name, date of\n"
"               the document, HTTP-version and more...\n"
"\n"
"          -I, --head\n"
"               (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-\n"
, stdout);
 fputs(
"               servers feature the command HEAD which this uses to get\n"
"               nothing but the header of a document. When used on an\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               FTP or FILE file, curl displays the file size and last\n"
"               modification time only.\n"
"\n"
"          --interface <name>\n"
"               Perform an operation using a specified interface. You\n"
"               can enter interface name, IP address or host name. An\n"
, stdout);
 fputs(
"               example could look like:\n"
"\n"
"                curl --interface eth0:1 http://www.netscape.com/\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -j, --junk-session-cookies\n"
"               (HTTP) When curl is told to read cookies from a given\n"
"               file, this option will make it discard all \"session\n"
"               cookies\". This will basically have the same effect as\n"
, stdout);
 fputs(
"               if a new session is started. Typical browsers always\n"
"               discard session cookies when they're closed down.\n"
"\n"
"          -J, --remote-header-name\n"
"               (HTTP) This option tells the -O, --remote-name option\n"
"               to use the server-specified Content-Disposition file-\n"
"               name instead of extracting a filename from the URL.\n"
"\n"
"          -k, --insecure\n"
"               (SSL) This option explicitly allows curl to perform\n"
, stdout);
 fputs(
"               \"insecure\" SSL connections and transfers. All SSL con-\n"
"               nections are attempted to be made secure by using the\n"
"               CA certificate bundle installed by default. This makes\n"
"               all connections considered \"insecure\" fail unless -k,\n"
"               --insecure is used.\n"
"\n"
"               See this online resource for further details:\n"
"               http://curl.haxx.se/docs/sslcerts.html\n"
"\n"
"          -K, --config <config file>\n"
, stdout);
 fputs(
"               Specify which config file to read curl arguments from.\n"
"               The config file is a text file in which command line\n"
"               arguments can be written which then will be used as if\n"
"               they were written on the actual command line. Options\n"
"               and their parameters must be specified on the same con-\n"
"               fig file line, separated by whitespace, colon, the\n"
"               equals sign or any combination thereof (however, the\n"
, stdout);
 fputs(
"               preferred separator is the equals sign). If the parame-\n"
"               ter is to contain whitespace, the parameter must be\n"
"               enclosed within quotes. Within double quotes, the fol-\n"
"               lowing escape sequences are available: \\\\, \\\", \\t, \\n,\n"
"               \\r and \\v. A backslash preceding any other letter is\n"
"               ignored. If the first column of a config line is a '#'\n"
"               character, the rest of the line will be treated as a\n"
, stdout);
 fputs(
"               comment. Only write one option per physical line in the\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               config file.\n"
"\n"
"               Specify the filename to -K, --config as '-' to make\n"
"               curl read the file from stdin.\n"
"\n"
"               Note that to be able to specify a URL in the config\n"
"               file, you need to specify it using the --url option,\n"
"               and not by simply writing the URL on its own line. So,\n"
, stdout);
 fputs(
"               it could look similar to this:\n"
"\n"
"               url = \"http://curl.haxx.se/docs/\"\n"
"\n"
"               Long option names can optionally be given in the config\n"
"               file without the initial double dashes.\n"
"\n"
"               When curl is invoked, it always (unless -q is used)\n"
"               checks for a default config file and uses it if found.\n"
"               The default config file is checked for in the following\n"
"               places in this order:\n"
"\n"
, stdout);
 fputs(
"               1) curl tries to find the \"home dir\": It first checks\n"
"               for the CURL_HOME and then the HOME environment vari-\n"
"               ables. Failing that, it uses getpwuid() on UNIX-like\n"
"               systems (which returns the home dir given the current\n"
"               user in your system). On Windows, it then checks for\n"
"               the APPDATA variable, or as a last resort the\n"
"               '%USERPROFILE%\\Application Data'.\n"
"\n"
, stdout);
 fputs(
"               2) On windows, if there is no _curlrc file in the home\n"
"               dir, it checks for one in the same dir the curl exe-\n"
"               cutable is placed. On UNIX-like systems, it will simply\n"
"               try to load .curlrc from the determined home dir.\n"
"\n"
"               # --- Example file ---\n"
"               # this is a comment\n"
"               url = \"curl.haxx.se\"\n"
"               output = \"curlhere.html\"\n"
"               user-agent = \"superagent/1.0\"\n"
"\n"
, stdout);
 fputs(
"               # and fetch another URL too\n"
"               url = \"curl.haxx.se/docs/manpage.html\"\n"
"               -O\n"
"               referer = \"http://nowhereatall.com/\"\n"
"               # --- End of example file ---\n"
"\n"
"               This option can be used multiple times to load multiple\n"
"               config files.\n"
"\n"
"          --keepalive-time <seconds>\n"
"               This option sets the time a connection needs to remain\n"
"               idle before sending keepalive probes and the time\n"
, stdout);
 fputs(
"               between individual keepalive probes. It is currently\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               effective on operating systems offering the\n"
"               TCP_KEEPIDLE and TCP_KEEPINTVL socket options (meaning\n"
"               Linux, recent AIX, HP-UX and more). This option has no\n"
"               effect if --no-keepalive is used. (Added in 7.18.0)\n"
"\n"
"               If this option is used several times, the last one will\n"
, stdout);
 fputs(
"               be used. If unspecified, the option defaults to 60 sec-\n"
"               onds.\n"
"\n"
"          --key <key>\n"
"               (SSL/SSH) Private key file name. Allows you to provide\n"
"               your private key in this separate file.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --key-type <type>\n"
"               (SSL) Private key file type. Specify which type your\n"
, stdout);
 fputs(
"               --key provided private key is. DER, PEM, and ENG are\n"
"               supported. If not specified, PEM is assumed.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --krb <level>\n"
"               (FTP) Enable Kerberos authentication and use. The level\n"
"               must be entered and should be one of 'clear', 'safe',\n"
"               'confidential', or 'private'. Should you use a level\n"
, stdout);
 fputs(
"               that is not one of these, 'private' will instead be\n"
"               used.\n"
"\n"
"               This option requires a library built with kerberos4 or\n"
"               GSSAPI (GSS-Negotiate) support. This is not very com-\n"
"               mon. Use -V, --version to see if your curl supports it.\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -l, --list-only\n"
"               (FTP) When listing an FTP directory, this switch forces\n"
, stdout);
 fputs(
"               a name-only view.  Especially useful if you want to\n"
"               machine-parse the contents of an FTP directory since\n"
"               the normal directory view doesn't use a standard look\n"
"               or format.\n"
"\n"
"               This option causes an FTP NLST command to be sent.\n"
"               Some FTP servers list only files in their response to\n"
"               NLST; they do not include subdirectories and symbolic\n"
"               links.\n"
"\n"
"          -L, --location\n"
"\n"
, stdout);
 fputs(
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               (HTTP/HTTPS) If the server reports that the requested\n"
"               page has moved to a different location (indicated with\n"
"               a Location: header and a 3XX response code), this\n"
"               option will make curl redo the request on the new\n"
"               place. If used together with -i, --include or -I, --\n"
"               head, headers from all requested pages will be shown.\n"
, stdout);
 fputs(
"               When authentication is used, curl only sends its cre-\n"
"               dentials to the initial host. If a redirect takes curl\n"
"               to a different host, it won't be able to intercept the\n"
"               user+password. See also --location-trusted on how to\n"
"               change this. You can limit the amount of redirects to\n"
"               follow by using the --max-redirs option.\n"
"\n"
"               When curl follows a redirect and the request is not a\n"
, stdout);
 fputs(
"               plain GET (for example POST or PUT), it will do the\n"
"               following request with a GET if the HTTP response was\n"
"               301, 302, or 303. If the response code was any other\n"
"               3xx code, curl will re-send the following request using\n"
"               the same unmodified method.\n"
"\n"
"          --libcurl <file>\n"
"               Append this option to any ordinary curl command line,\n"
"               and you will get a libcurl-using C source code written\n"
, stdout);
 fputs(
"               to the file that does the equivalent of what your\n"
"               command-line operation does!\n"
"\n"
"               If this option is used several times, the last given\n"
"               file name will be used. (Added in 7.16.1)\n"
"\n"
"          --limit-rate <speed>\n"
"               Specify the maximum transfer rate you want curl to use.\n"
"               This feature is useful if you have a limited pipe and\n"
"               you'd like your transfer not to use your entire band-\n"
"               width.\n"
"\n"
, stdout);
 fputs(
"               The given speed is measured in bytes/second, unless a\n"
"               suffix is appended.  Appending 'k' or 'K' will count\n"
"               the number as kilobytes, 'm' or M' makes it megabytes,\n"
"               while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m\n"
"               and 1G.\n"
"\n"
"               The given rate is the average speed counted during the\n"
"               entire transfer. It means that curl might use higher\n"
, stdout);
 fputs(
"               transfer speeds in short bursts, but over time it uses\n"
"               no more than the given rate.\n"
"\n"
"               If you also use the -Y, --speed-limit option, that\n"
"               option will take precedence and might cripple the\n"
"               rate-limiting slightly, to help keeping the speed-limit\n"
"               logic working.\n"
"\n"
"               If this option is used several times, the last one will\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"               be used.\n"
"\n"
"          --local-port <num>[-num]\n"
"               Set a preferred number or range of local port numbers\n"
"               to use for the connection(s).  Note that port numbers\n"
"               by nature are a scarce resource that will be busy at\n"
"               times so setting this range to something too narrow\n"
"               might cause unnecessary connection setup failures.\n"
"               (Added in 7.15.2)\n"
"\n"
"          --location-trusted\n"
, stdout);
 fputs(
"               (HTTP/HTTPS) Like -L, --location, but will allow send-\n"
"               ing the name + password to all hosts that the site may\n"
"               redirect to. This may or may not introduce a security\n"
"               breach if the site redirects you to a site to which\n"
"               you'll send your authentication info (which is plain-\n"
"               text in the case of HTTP Basic authentication).\n"
"\n"
"          -m, --max-time <seconds>\n"
, stdout);
 fputs(
"               Maximum time in seconds that you allow the whole opera-\n"
"               tion to take.  This is useful for preventing your batch\n"
"               jobs from hanging for hours due to slow networks or\n"
"               links going down.  Since 7.32.0, this option accepts\n"
"               decimal values, but the actual timeout will decrease in\n"
"               accuracy as the specified timeout increases in decimal\n"
"               precision.  See also the --connect-timeout option.\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --mail-auth <address>\n"
"               (SMTP) Specify a single address. This will be used to\n"
"               specify the authentication address (identity) of a sub-\n"
"               mitted message that is being relayed to another server.\n"
"\n"
"               (Added in 7.25.0)\n"
"\n"
"          --mail-from <address>\n"
"               (SMTP) Specify a single address that the given mail\n"
, stdout);
 fputs(
"               should get sent from.\n"
"\n"
"               (Added in 7.20.0)\n"
"\n"
"          --max-filesize <bytes>\n"
"               Specify the maximum size (in bytes) of a file to down-\n"
"               load. If the file requested is larger than this value,\n"
"               the transfer will not start and curl will return with\n"
"               exit code 63.\n"
"\n"
"               NOTE: The file size is not always known prior to down-\n"
"               load, and for such files this option has no effect even\n"
, stdout);
 fputs(
"               if the file transfer ends up being larger than this\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               given limit. This concerns both FTP and HTTP transfers.\n"
"\n"
"          --mail-rcpt <address>\n"
"               (SMTP) Specify a single address that the given mail\n"
"               should get sent to. This option can be used multiple\n"
"               times to specify many recipients.\n"
"\n"
"               (Added in 7.20.0)\n"
"\n"
"          --max-redirs <num>\n"
, stdout);
 fputs(
"               Set maximum number of redirection-followings allowed.\n"
"               If -L, --location is used, this option can be used to\n"
"               prevent curl from following redirections \"in absurdum\".\n"
"               By default, the limit is set to 50 redirections. Set\n"
"               this option to -1 to make it limitless.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --metalink\n"
, stdout);
 fputs(
"               This option can tell curl to parse and process a given\n"
"               URI as Metalink file (both version 3 and 4 (RFC 5854)\n"
"               are supported) and make use of the mirrors listed\n"
"               within for failover if there are errors (such as the\n"
"               file or server not being available). It will also ver-\n"
"               ify the hash of the file after the download completes.\n"
"               The Metalink file itself is downloaded and processed in\n"
, stdout);
 fputs(
"               memory and not stored in the local file system.\n"
"\n"
"               Example to use a remote Metalink file:\n"
"\n"
"               curl --metalink http://www.example.com/example.metalink\n"
"\n"
"               To use a Metalink file in the local file system, use\n"
"               FILE protocol (file://):\n"
"\n"
"               curl --metalink file://example.metalink\n"
"\n"
"               Please note that if FILE protocol is disabled, there is\n"
"               no way to use a local Metalink file at the time of this\n"
, stdout);
 fputs(
"               writing. Also note that if --metalink and --include are\n"
"               used together, --include will be ignored. This is\n"
"               because including headers in the response will break\n"
"               Metalink parser and if the headers are included in the\n"
"               file described in Metalink file, hash check will fail.\n"
"\n"
"               (Added in 7.27.0, if built against the libmetalink\n"
"               library.)\n"
"\n"
"          -n, --netrc\n"
, stdout);
 fputs(
"               Makes curl scan the .netrc (_netrc on Windows) file in\n"
"               the user's home directory for login name and password.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               This is typically used for FTP on UNIX. If used with\n"
"               HTTP, curl will enable user authentication. See\n"
"               netrc(4) or ftp(1) for details on the file format. Curl\n"
"               will not complain if that file doesn't have the right\n"
, stdout);
 fputs(
"               permissions (it should not be either world- or group-\n"
"               readable). The environment variable \"HOME\" is used to\n"
"               find the home directory.\n"
"\n"
"               A quick and very simple example of how to setup a\n"
"               .netrc to allow curl to FTP to the machine\n"
"               host.domain.com with user name 'myself' and password\n"
"               'secret' should look similar to:\n"
"\n"
"               machine host.domain.com login myself password secret\n"
"\n"
, stdout);
 fputs(
"          -N, --no-buffer\n"
"               Disables the buffering of the output stream. In normal\n"
"               work situations, curl will use a standard buffered out-\n"
"               put stream that will have the effect that it will out-\n"
"               put the data in chunks, not necessarily exactly when\n"
"               the data arrives.  Using this option will disable that\n"
"               buffering.\n"
"\n"
"               Note that this is the negated option name documented.\n"
, stdout);
 fputs(
"               You can thus use --buffer to enforce the buffering.\n"
"\n"
"          --netrc-file\n"
"               This option is similar to --netrc, except that you pro-\n"
"               vide the path (absolute or relative) to the netrc file\n"
"               that Curl should use.  You can only specify one netrc\n"
"               file per invocation. If several --netrc-file options\n"
"               are provided, only the last one will be used.  (Added\n"
"               in 7.21.5)\n"
"\n"
, stdout);
 fputs(
"               This option overrides any use of --netrc as they are\n"
"               mutually exclusive.  It will also abide by --netrc-\n"
"               optional if specified.\n"
"\n"
"          --netrc-optional\n"
"               Very similar to --netrc, but this option makes the\n"
"               .netrc usage optional and not mandatory as the --netrc\n"
"               option does.\n"
"\n"
"          --negotiate\n"
"               (HTTP) Enables GSS-Negotiate authentication. The GSS-\n"
, stdout);
 fputs(
"               Negotiate method was designed by Microsoft and is used\n"
"               in their web applications. It is primarily meant as a\n"
"               support for Kerberos5 authentication but may be also\n"
"               used along with another authentication method. For more\n"
"               information see IETF draft draft-brezak-spnego-http-\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               04.txt.\n"
"\n"
, stdout);
 fputs(
"               If you want to enable Negotiate for your proxy authen-\n"
"               tication, then use --proxy-negotiate.\n"
"\n"
"               This option requires a library built with GSSAPI sup-\n"
"               port. This is not very common. Use -V, --version to see\n"
"               if your version supports GSS-Negotiate.\n"
"\n"
"               When using this option, you must also provide a fake\n"
"               -u, --user option to activate the authentication code\n"
, stdout);
 fputs(
"               properly. Sending a '-u :' is enough as the user name\n"
"               and password from the -u option aren't actually used.\n"
"\n"
"               If this option is used several times, only the first\n"
"               one is used.\n"
"\n"
"          --no-keepalive\n"
"               Disables the use of keepalive messages on the TCP con-\n"
"               nection, as by default curl enables them.\n"
"\n"
"               Note that this is the negated option name documented.\n"
, stdout);
 fputs(
"               You can thus use --keepalive to enforce keepalive.\n"
"\n"
"          --no-sessionid\n"
"               (SSL) Disable curl's use of SSL session-ID caching.  By\n"
"               default all transfers are done using the cache. Note\n"
"               that while nothing should ever get hurt by attempting\n"
"               to reuse SSL session-IDs, there seem to be broken SSL\n"
"               implementations in the wild that may require you to\n"
, stdout);
 fputs(
"               disable this in order for you to succeed. (Added in\n"
"               7.16.0)\n"
"\n"
"               Note that this is the negated option name documented.\n"
"               You can thus use --sessionid to enforce session-ID\n"
"               caching.\n"
"\n"
"          --noproxy <no-proxy-list>\n"
"               Comma-separated list of hosts which do not use a proxy,\n"
"               if one is specified.  The only wildcard is a single *\n"
"               character, which matches all hosts, and effectively\n"
, stdout);
 fputs(
"               disables the proxy. Each name in this list is matched\n"
"               as either a domain which contains the hostname, or the\n"
"               hostname itself. For example, local.com would match\n"
"               local.com, local.com:80, and www.local.com, but not\n"
"               www.notlocal.com.  (Added in 7.19.4).\n"
"\n"
"          --ntlm\n"
"               (HTTP) Enables NTLM authentication. The NTLM authenti-\n"
"               cation method was designed by Microsoft and is used by\n"
, stdout);
 fputs(
"               IIS web servers. It is a proprietary protocol,\n"
"               reverse-engineered by clever people and implemented in\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               curl based on their efforts. This kind of behavior\n"
"               should not be endorsed, you should encourage everyone\n"
"               who uses NTLM to switch to a public and documented\n"
"               authentication method instead, such as Digest.\n"
"\n"
, stdout);
 fputs(
"               If you want to enable NTLM for your proxy authentica-\n"
"               tion, then use --proxy-ntlm.\n"
"\n"
"               This option requires a library built with SSL support.\n"
"               Use -V, --version to see if your curl supports NTLM.\n"
"               If this option is used several times, only the first\n"
"               one is used.\n"
"\n"
"          -o, --output <file>\n"
"               Write output to <file> instead of stdout. If you are\n"
, stdout);
 fputs(
"               using {} or [] to fetch multiple documents, you can use\n"
"               '#' followed by a number in the <file> specifier. That\n"
"               variable will be replaced with the current string for\n"
"               the URL being fetched. Like in:\n"
"\n"
"                 curl http://{one,two}.site.com -o \"file_#1.txt\"\n"
"\n"
"               or use several variables like:\n"
"\n"
"                 curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n"
"\n"
, stdout);
 fputs(
"               You may use this option as many times as the number of\n"
"               URLs you have.\n"
"\n"
"               See also the --create-dirs option to create the local\n"
"               directories dynamically. Specifying the output as '-'\n"
"               (a single dash) will force the output to be done to\n"
"               stdout.\n"
"\n"
"          -O, --remote-name\n"
"               Write output to a local file named like the remote file\n"
"               we get. (Only the file part of the remote file is used,\n"
, stdout);
 fputs(
"               the path is cut off.)\n"
"\n"
"               The remote file name to use for saving is extracted\n"
"               from the given URL, nothing else.\n"
"\n"
"               Consequentially, the file will be saved in the current\n"
"               working directory. If you want the file saved in a dif-\n"
"               ferent directory, make sure you change current working\n"
"               directory before you invoke curl with the -O, --\n"
"               remote-name flag!\n"
"\n"
, stdout);
 fputs(
"               You may use this option as many times as the number of\n"
"               URLs you have.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          --oauth2-bearer\n"
"               (IMAP/POP3/SMTP) Specify the Bearer Token for OAUTH 2.0\n"
"               server authentication.  The Bearer Token is used in\n"
"               conjuction with the user name which can be specified as\n"
"               part of the --url or -u, --user options.\n"
"\n"
, stdout);
 fputs(
"               The Bearer Token and user name are formatted according\n"
"               to RFC 6750.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -p, --proxytunnel\n"
"               When an HTTP proxy is used (-x, --proxy), this option\n"
"               will cause non-HTTP protocols to attempt to tunnel\n"
"               through the proxy instead of merely using it to do\n"
"               HTTP-like operations. The tunnel approach is made with\n"
, stdout);
 fputs(
"               the HTTP proxy CONNECT request and requires that the\n"
"               proxy allows direct connect to the remote port number\n"
"               curl wants to tunnel through to.\n"
"\n"
"          -P, --ftp-port <address>\n"
"               (FTP) Reverses the default initiator/listener roles\n"
"               when connecting with FTP. This switch makes curl use\n"
"               active mode. In practice, curl then tells the server to\n"
"               connect back to the client's specified address and\n"
, stdout);
 fputs(
"               port, while passive mode asks the server to setup an IP\n"
"               address and port for it to connect to. <address> should\n"
"               be one of:\n"
"\n"
"               interface\n"
"                    i.e \"eth0\" to specify which interface's IP address\n"
"                    you want to use (Unix only)\n"
"\n"
"               IP address\n"
"                    i.e \"192.168.10.1\" to specify the exact IP address\n"
"\n"
"               host name\n"
, stdout);
 fputs(
"                    i.e \"my.host.domain\" to specify the machine\n"
"\n"
"               -    make curl pick the same IP address that is already\n"
"                    used for the control connection\n"
"\n"
"          If this option is used several times, the last one will be\n"
"          used. Disable the use of PORT with --ftp-pasv. Disable the\n"
"          attempt to use the EPRT command instead of PORT by using --\n"
"          disable-eprt. EPRT is really PORT++.\n"
"\n"
, stdout);
 fputs(
"          Starting in 7.19.5, you can append \":[start]-[end]\" to the\n"
"          right of the address, to tell curl what TCP port range to\n"
"          use. That means you specify a port range, from a lower to a\n"
"          higher number. A single number works as well, but do note\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          that it increases the risk of failure since the port may not\n"
"          be available.\n"
"\n"
"          --pass <phrase>\n"
, stdout);
 fputs(
"               (SSL/SSH) Passphrase for the private key\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --post301\n"
"               (HTTP) Tells curl to respect RFC 2616/10.3.2 and not\n"
"               convert POST requests into GET requests when following\n"
"               a 301 redirection. The non-RFC behaviour is ubiquitous\n"
"               in web browsers, so curl does the conversion by default\n"
, stdout);
 fputs(
"               to maintain consistency. However, a server may require\n"
"               a POST to remain a POST after such a redirection. This\n"
"               option is meaningful only when using -L, --location\n"
"               (Added in 7.17.1)\n"
"\n"
"          --post302\n"
"               (HTTP) Tells curl to respect RFC 2616/10.3.2 and not\n"
"               convert POST requests into GET requests when following\n"
"               a 302 redirection. The non-RFC behaviour is ubiquitous\n"
, stdout);
 fputs(
"               in web browsers, so curl does the conversion by default\n"
"               to maintain consistency. However, a server may require\n"
"               a POST to remain a POST after such a redirection. This\n"
"               option is meaningful only when using -L, --location\n"
"               (Added in 7.19.1)\n"
"\n"
"          --post303\n"
"               (HTTP) Tells curl to respect RFC 2616/10.3.2 and not\n"
"               convert POST requests into GET requests when following\n"
, stdout);
 fputs(
"               a 303 redirection. The non-RFC behaviour is ubiquitous\n"
"               in web browsers, so curl does the conversion by default\n"
"               to maintain consistency. However, a server may require\n"
"               a POST to remain a POST after such a redirection. This\n"
"               option is meaningful only when using -L, --location\n"
"               (Added in 7.26.0)\n"
"\n"
"          --proto <protocols>\n"
"               Tells curl to use the listed protocols for its initial\n"
, stdout);
 fputs(
"               retrieval. Protocols are evaluated left to right, are\n"
"               comma separated, and are each a protocol name or 'all',\n"
"               optionally prefixed by zero or more modifiers. Avail-\n"
"               able modifiers are:\n"
"\n"
"               +  Permit this protocol in addition to protocols\n"
"                  already permitted (this is the default if no modi-\n"
"                  fier is used).\n"
"\n"
"               -  Deny this protocol, removing it from the list of\n"
, stdout);
 fputs(
"                  protocols already permitted.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               =  Permit only this protocol (ignoring the list already\n"
"                  permitted), though subject to later modification by\n"
"                  subsequent entries in the comma separated list.\n"
"\n"
"               For example:\n"
"\n"
"               --proto -ftps  uses the default protocols, but disables\n"
"                              ftps\n"
"\n"
, stdout);
 fputs(
"               --proto -all,https,+http\n"
"                              only enables http and https\n"
"\n"
"               --proto =http,https\n"
"                              also only enables http and https\n"
"\n"
"               Unknown protocols produce a warning. This allows\n"
"               scripts to safely rely on being able to disable poten-\n"
"               tially dangerous protocols, without relying upon sup-\n"
"               port for that protocol being built into curl to avoid\n"
"               an error.\n"
"\n"
, stdout);
 fputs(
"               This option can be used multiple times, in which case\n"
"               the effect is the same as concatenating the protocols\n"
"               into one instance of the option.\n"
"\n"
"               (Added in 7.20.2)\n"
"\n"
"          --proto-redir <protocols>\n"
"               Tells curl to use the listed protocols after a redi-\n"
"               rect. See --proto for how protocols are represented.\n"
"\n"
"               (Added in 7.20.2)\n"
"\n"
"          --proxy-anyauth\n"
, stdout);
 fputs(
"               Tells curl to pick a suitable authentication method\n"
"               when communicating with the given proxy. This might\n"
"               cause an extra request/response round-trip. (Added in\n"
"               7.13.2)\n"
"\n"
"          --proxy-basic\n"
"               Tells curl to use HTTP Basic authentication when commu-\n"
"               nicating with the given proxy. Use --basic for enabling\n"
"               HTTP Basic with a remote host. Basic is the default\n"
, stdout);
 fputs(
"               authentication method curl uses with proxies.\n"
"\n"
"          --proxy-digest\n"
"               Tells curl to use HTTP Digest authentication when com-\n"
"               municating with the given proxy. Use --digest for\n"
"               enabling HTTP Digest with a remote host.\n"
"\n"
"          --proxy-negotiate\n"
"               Tells curl to use HTTP Negotiate authentication when\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"               communicating with the given proxy. Use --negotiate for\n"
"               enabling HTTP Negotiate with a remote host. (Added in\n"
"               7.17.1)\n"
"\n"
"          --proxy-ntlm\n"
"               Tells curl to use HTTP NTLM authentication when commu-\n"
"               nicating with the given proxy. Use --ntlm for enabling\n"
"               NTLM with a remote host.\n"
"\n"
"          --proxy1.0 <proxyhost[:port]>\n"
"               Use the specified HTTP 1.0 proxy. If the port number is\n"
, stdout);
 fputs(
"               not specified, it is assumed at port 1080.\n"
"\n"
"               The only difference between this and the HTTP proxy\n"
"               option (-x, --proxy), is that attempts to use CONNECT\n"
"               through the proxy will specify an HTTP 1.0 protocol\n"
"               instead of the default HTTP 1.1.\n"
"\n"
"          --pubkey <key>\n"
"               (SSH) Public key file name. Allows you to provide your\n"
"               public key in this separate file.\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -q   If used as the first parameter on the command line, the\n"
"               curlrc config file will not be read and used. See the\n"
"               -K, --config for details on the default config file\n"
"               search path.\n"
"\n"
"          -Q, --quote <command>\n"
"               (FTP/SFTP) Send an arbitrary command to the remote FTP\n"
"               or SFTP server. Quote commands are sent BEFORE the\n"
, stdout);
 fputs(
"               transfer takes place (just after the initial PWD com-\n"
"               mand in an FTP transfer, to be exact). To make commands\n"
"               take place after a successful transfer, prefix them\n"
"               with a dash '-'.  To make commands be sent after curl\n"
"               has changed the working directory, just before the\n"
"               transfer command(s), prefix the command with a '+'\n"
"               (this is only supported for FTP). You may specify any\n"
, stdout);
 fputs(
"               number of commands. If the server returns failure for\n"
"               one of the commands, the entire operation will be\n"
"               aborted. You must send syntactically correct FTP com-\n"
"               mands as RFC 959 defines to FTP servers, or one of the\n"
"               commands listed below to SFTP servers.  This option can\n"
"               be used multiple times. When speaking to an FTP server,\n"
"               prefix the command with an asterisk (*) to make curl\n"
, stdout);
 fputs(
"               continue even if the command fails as by default curl\n"
"               will stop at first failure.\n"
"\n"
"               SFTP is a binary protocol. Unlike for FTP, curl inter-\n"
"               prets SFTP quote commands itself before sending them to\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               the server.  File names may be quoted shell-style to\n"
"               embed spaces or special characters.  Following is the\n"
, stdout);
 fputs(
"               list of all supported SFTP quote commands:\n"
"\n"
"               chgrp group file\n"
"                    The chgrp command sets the group ID of the file\n"
"                    named by the file operand to the group ID speci-\n"
"                    fied by the group operand. The group operand is a\n"
"                    decimal integer group ID.\n"
"\n"
"               chmod mode file\n"
"                    The chmod command modifies the file mode bits of\n"
, stdout);
 fputs(
"                    the specified file. The mode operand is an octal\n"
"                    integer mode number.\n"
"\n"
"               chown user file\n"
"                    The chown command sets the owner of the file named\n"
"                    by the file operand to the user ID specified by\n"
"                    the user operand. The user operand is a decimal\n"
"                    integer user ID.\n"
"\n"
"               ln source_file target_file\n"
"                    The ln and symlink commands create a symbolic link\n"
, stdout);
 fputs(
"                    at the target_file location pointing to the\n"
"                    source_file location.\n"
"\n"
"               mkdir directory_name\n"
"                    The mkdir command creates the directory named by\n"
"                    the directory_name operand.\n"
"\n"
"               pwd  The pwd command returns the absolute pathname of\n"
"                    the current working directory.\n"
"\n"
"               rename source target\n"
"                    The rename command renames the file or directory\n"
, stdout);
 fputs(
"                    named by the source operand to the destination\n"
"                    path named by the target operand.\n"
"\n"
"               rm file\n"
"                    The rm command removes the file specified by the\n"
"                    file operand.\n"
"\n"
"               rmdir directory\n"
"                    The rmdir command removes the directory entry\n"
"                    specified by the directory operand, provided it is\n"
"                    empty.\n"
"\n"
"               symlink source_file target_file\n"
, stdout);
 fputs(
"                    See ln.\n"
"\n"
"          -r, --range <range>\n"
"               (HTTP/FTP/SFTP/FILE) Retrieve a byte range (i.e a\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               partial document) from a HTTP/1.1, FTP or SFTP server\n"
"               or a local FILE. Ranges can be specified in a number of\n"
"               ways.\n"
"\n"
"               0-499     specifies the first 500 bytes\n"
"\n"
"               500-999   specifies the second 500 bytes\n"
"\n"
, stdout);
 fputs(
"               -500      specifies the last 500 bytes\n"
"\n"
"               9500-     specifies the bytes from offset 9500 and for-\n"
"                         ward\n"
"\n"
"               0-0,-1    specifies the first and last byte only(*)(H)\n"
"\n"
"               500-700,600-799\n"
"                         specifies 300 bytes from offset 500(H)\n"
"\n"
"               100-199,500-599\n"
"                         specifies two separate 100-byte ranges(*)(H)\n"
"\n"
"          (*) = NOTE that this will cause the server to reply with a\n"
, stdout);
 fputs(
"          multipart response!\n"
"\n"
"          Only digit characters (0-9) are valid in the 'start' and\n"
"          'stop' fields of the 'start-stop' range syntax. If a non-\n"
"          digit character is given in the range, the server's response\n"
"          will be unspecified, depending on the server's configura-\n"
"          tion.\n"
"\n"
"          You should also be aware that many HTTP/1.1 servers do not\n"
"          have this feature enabled, so that when you attempt to get a\n"
, stdout);
 fputs(
"          range, you'll instead get the whole document.\n"
"\n"
"          FTP and SFTP range downloads only support the simple\n"
"          'start-stop' syntax (optionally with one of the numbers\n"
"          omitted). FTP use depends on the extended FTP command SIZE.\n"
"\n"
"          If this option is used several times, the last one will be\n"
"          used.\n"
"\n"
"          -R, --remote-time\n"
"               When used, this will make curl attempt to figure out\n"
, stdout);
 fputs(
"               the timestamp of the remote file, and if that is avail-\n"
"               able make the local file get that same timestamp.\n"
"\n"
"          --random-file <file>\n"
"               (SSL) Specify the path name to file containing what\n"
"               will be considered as random data. The data is used to\n"
"               seed the random engine for SSL connections.  See also\n"
"               the --egd-file option.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"          --raw\n"
"               (HTTP) When used, it disables all internal HTTP decod-\n"
"               ing of content or transfer encodings and instead makes\n"
"               them passed on unaltered, raw. (Added in 7.16.2)\n"
"\n"
"          --remote-name-all\n"
"               This option changes the default action for all given\n"
"               URLs to be dealt with as if -O, --remote-name were used\n"
"               for each one. So if you want to disable that for a spe-\n"
, stdout);
 fputs(
"               cific URL after --remote-name-all has been used, you\n"
"               must use \"-o -\" or --no-remote-name. (Added in 7.19.0)\n"
"\n"
"          --resolve <host:port:address>\n"
"               Provide a custom address for a specific host and port\n"
"               pair. Using this, you can make the curl requests(s) use\n"
"               a specified address and prevent the otherwise normally\n"
"               resolved address to be used. Consider it a sort of\n"
, stdout);
 fputs(
"               /etc/hosts alternative provided on the command line.\n"
"               The port number should be the number used for the spe-\n"
"               cific protocol the host will be used for. It means you\n"
"               need several entries if you want to provide address for\n"
"               the same host but different ports.\n"
"\n"
"               This option can be used many times to add many host\n"
"               names to resolve.\n"
"               (Added in 7.21.3)\n"
"\n"
"          --retry <num>\n"
, stdout);
 fputs(
"               If a transient error is returned when curl tries to\n"
"               perform a transfer, it will retry this number of times\n"
"               before giving up. Setting the number to 0 makes curl do\n"
"               no retries (which is the default). Transient error\n"
"               means either: a timeout, an FTP 4xx response code or an\n"
"               HTTP 5xx response code.\n"
"\n"
"               When curl is about to retry a transfer, it will first\n"
, stdout);
 fputs(
"               wait one second and then for all forthcoming retries it\n"
"               will double the waiting time until it reaches 10 min-\n"
"               utes which then will be the delay between the rest of\n"
"               the retries.  By using --retry-delay you disable this\n"
"               exponential backoff algorithm. See also --retry-max-\n"
"               time to limit the total time allowed for retries.\n"
"               (Added in 7.12.3)\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --retry-delay <seconds>\n"
"               Make curl sleep this amount of time before each retry\n"
"               when a transfer has failed with a transient error (it\n"
"               changes the default backoff time algorithm between\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               retries). This option is only interesting if --retry is\n"
, stdout);
 fputs(
"               also used. Setting this delay to zero will make curl\n"
"               use the default backoff time.  (Added in 7.12.3)\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --retry-max-time <seconds>\n"
"               The retry timer is reset before the first transfer\n"
"               attempt. Retries will be done as usual (see --retry) as\n"
"               long as the timer hasn't reached this given limit.\n"
, stdout);
 fputs(
"               Notice that if the timer hasn't reached the limit, the\n"
"               request will be made and while performing, it may take\n"
"               longer than this given time period. To limit a single\n"
"               request's maximum time, use -m, --max-time.  Set this\n"
"               option to zero to not timeout retries. (Added in\n"
"               7.12.3)\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -s, --silent\n"
, stdout);
 fputs(
"               Silent or quiet mode. Don't show progress meter or\n"
"               error messages.  Makes Curl mute. It will still output\n"
"               the data you ask for, potentially even to the\n"
"               terminal/stdout unless you redirect it.\n"
"\n"
"          --sasl-ir\n"
"               Enable initial response in SASL authentication.  (Added\n"
"               in 7.31.0)\n"
"\n"
"          -S, --show-error\n"
"               When used with -s it makes curl show an error message\n"
"               if it fails.\n"
"\n"
, stdout);
 fputs(
"          --ssl\n"
"               (FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for the con-\n"
"               nection.  Reverts to a non-secure connection if the\n"
"               server doesn't support SSL/TLS.  See also --ftp-ssl-\n"
"               control and --ssl-reqd for different levels of encryp-\n"
"               tion required. (Added in 7.20.0)\n"
"\n"
"               This option was formerly known as --ftp-ssl (Added in\n"
"               7.11.0). That option name can still be used but will be\n"
, stdout);
 fputs(
"               removed in a future version.\n"
"\n"
"          --ssl-reqd\n"
"               (FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connec-\n"
"               tion.  Terminates the connection if the server doesn't\n"
"               support SSL/TLS. (Added in 7.20.0)\n"
"\n"
"               This option was formerly known as --ftp-ssl-reqd (added\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               in 7.15.5). That option name can still be used but will\n"
, stdout);
 fputs(
"               be removed in a future version.\n"
"\n"
"          --ssl-allow-beast\n"
"               (SSL) This option tells curl to not work around a secu-\n"
"               rity flaw in the SSL3 and TLS1.0 protocols known as\n"
"               BEAST.  If this option isn't used, the SSL layer may\n"
"               use work-arounds known to cause interoperability prob-\n"
"               lems with some older SSL implementations. WARNING: this\n"
"               option loosens the SSL security, and by using this flag\n"
, stdout);
 fputs(
"               you ask for exactly that.  (Added in 7.25.0)\n"
"\n"
"          --socks4 <host[:port]>\n"
"               Use the specified SOCKS4 proxy. If the port number is\n"
"               not specified, it is assumed at port 1080. (Added in\n"
"               7.15.2)\n"
"\n"
"               This option overrides any previous use of -x, --proxy,\n"
"               as they are mutually exclusive.\n"
"\n"
"               Since 7.21.7, this option is superfluous since you can\n"
, stdout);
 fputs(
"               specify a socks4 proxy with -x, --proxy using a\n"
"               socks4:// protocol prefix.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --socks4a <host[:port]>\n"
"               Use the specified SOCKS4a proxy. If the port number is\n"
"               not specified, it is assumed at port 1080. (Added in\n"
"               7.18.0)\n"
"\n"
"               This option overrides any previous use of -x, --proxy,\n"
, stdout);
 fputs(
"               as they are mutually exclusive.\n"
"\n"
"               Since 7.21.7, this option is superfluous since you can\n"
"               specify a socks4a proxy with -x, --proxy using a\n"
"               socks4a:// protocol prefix.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --socks5-hostname <host[:port]>\n"
"               Use the specified SOCKS5 proxy (and let the proxy\n"
"               resolve the host name). If the port number is not spec-\n"
, stdout);
 fputs(
"               ified, it is assumed at port 1080. (Added in 7.18.0)\n"
"\n"
"               This option overrides any previous use of -x, --proxy,\n"
"               as they are mutually exclusive.\n"
"\n"
"               Since 7.21.7, this option is superfluous since you can\n"
"               specify a socks5 hostname proxy with -x, --proxy using\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               a socks5h:// protocol prefix.\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used. (This option was previously wrongly documented\n"
"               and used as --socks without the number appended.)\n"
"\n"
"          --socks5 <host[:port]>\n"
"               Use the specified SOCKS5 proxy - but resolve the host\n"
"               name locally. If the port number is not specified, it\n"
"               is assumed at port 1080.\n"
"\n"
"               This option overrides any previous use of -x, --proxy,\n"
, stdout);
 fputs(
"               as they are mutually exclusive.\n"
"\n"
"               Since 7.21.7, this option is superfluous since you can\n"
"               specify a socks5 proxy with -x, --proxy using a\n"
"               socks5:// protocol prefix.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used. (This option was previously wrongly documented\n"
"               and used as --socks without the number appended.)\n"
"\n"
"               This option (as well as --socks4) does not work with\n"
, stdout);
 fputs(
"               IPV6, FTPS or LDAP.\n"
"\n"
"          --socks5-gssapi-service <servicename>\n"
"               The default service name for a socks server is\n"
"               rcmd/server-fqdn. This option allows you to change it.\n"
"\n"
"               Examples: --socks5 proxy-name --socks5-gssapi-service\n"
"               sockd would use sockd/proxy-name --socks5 proxy-name\n"
"               --socks5-gssapi-service sockd/real-name would use\n"
"               sockd/real-name for cases where the proxy-name does not\n"
, stdout);
 fputs(
"               match the principal name.  (Added in 7.19.4).\n"
"\n"
"          --socks5-gssapi-nec\n"
"               As part of the gssapi negotiation a protection mode is\n"
"               negotiated. RFC 1961 says in section 4.3/4.4 it should\n"
"               be protected, but the NEC reference implementation does\n"
"               not.  The option --socks5-gssapi-nec allows the unpro-\n"
"               tected exchange of the protection mode negotiation.\n"
"               (Added in 7.19.4).\n"
"\n"
, stdout);
 fputs(
"          --stderr <file>\n"
"               Redirect all writes to stderr to the specified file\n"
"               instead. If the file name is a plain '-', it is instead\n"
"               written to stdout.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -t, --telnet-option <OPT=val>\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               Pass options to the telnet protocol. Supported options\n"
"               are:\n"
"\n"
, stdout);
 fputs(
"               TTYPE=<term> Sets the terminal type.\n"
"\n"
"               XDISPLOC=<X display> Sets the X display location.\n"
"\n"
"               NEW_ENV=<var,val> Sets an environment variable.\n"
"\n"
"          -T, --upload-file <file>\n"
"               This transfers the specified local file to the remote\n"
"               URL. If there is no file part in the specified URL,\n"
"               Curl will append the local file name. NOTE that you\n"
"               must use a trailing / on the last directory to really\n"
, stdout);
 fputs(
"               prove to Curl that there is no file name or curl will\n"
"               think that your last directory name is the remote file\n"
"               name to use. That will most likely cause the upload\n"
"               operation to fail. If this is used on an HTTP(S)\n"
"               server, the PUT command will be used.\n"
"\n"
"               Use the file name \"-\" (a single dash) to use stdin\n"
"               instead of a given file.  Alternately, the file name\n"
, stdout);
 fputs(
"               \".\" (a single period) may be specified instead of \"-\"\n"
"               to use stdin in non-blocking mode to allow reading\n"
"               server output while stdin is being uploaded.\n"
"\n"
"               You can specify one -T for each URL on the command\n"
"               line. Each -T + URL pair specifies what to upload and\n"
"               to where. curl also supports \"globbing\" of the -T argu-\n"
"               ment, meaning that you can upload multiple files to a\n"
, stdout);
 fputs(
"               single URL by using the same URL globbing style sup-\n"
"               ported in the URL, like this:\n"
"\n"
"               curl -T \"{file1,file2}\" http://www.uploadtothissite.com\n"
"\n"
"               or even\n"
"\n"
"               curl -T \"img[1-1000].png\"\n"
"               ftp://ftp.picturemania.com/upload/\n"
"\n"
"          --tcp-nodelay\n"
"               Turn on the TCP_NODELAY option. See the\n"
"               curl_easy_setopt(3) man page for details about this\n"
"               option. (Added in 7.11.2)\n"
"\n"
, stdout);
 fputs(
"          --tftp-blksize <value>\n"
"               (TFTP) Set TFTP BLKSIZE option (must be >512). This is\n"
"               the block size that curl will try to use when transfer-\n"
"               ring data to or from a TFTP server. By default 512\n"
"               bytes will be used.\n"
"\n"
"               If this option is used several times, the last one will\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               be used.\n"
"\n"
"               (Added in 7.20.0)\n"
"\n"
, stdout);
 fputs(
"          --tlsauthtype <authtype>\n"
"               Set TLS authentication type. Currently, the only sup-\n"
"               ported option is \"SRP\", for TLS-SRP (RFC 5054). If --\n"
"               tlsuser and --tlspassword are specified but --\n"
"               tlsauthtype is not, then this option defaults to \"SRP\".\n"
"               (Added in 7.21.4)\n"
"\n"
"          --tlsuser <user>\n"
"               Set username for use with the TLS authentication method\n"
"               specified with --tlsauthtype. Requires that --\n"
, stdout);
 fputs(
"               tlspassword also be set.  (Added in 7.21.4)\n"
"\n"
"          --tlspassword <password>\n"
"               Set password for use with the TLS authentication method\n"
"               specified with --tlsauthtype. Requires that --tlsuser\n"
"               also be set.  (Added in 7.21.4)\n"
"\n"
"          --tr-encoding\n"
"               (HTTP) Request a compressed Transfer-Encoding response\n"
"               using one of the algorithms curl supports, and uncom-\n"
"               press the data while receiving it.\n"
"\n"
, stdout);
 fputs(
"               (Added in 7.21.6)\n"
"\n"
"          --trace <file>\n"
"               Enables a full trace dump of all incoming and outgoing\n"
"               data, including descriptive information, to the given\n"
"               output file. Use \"-\" as filename to have the output\n"
"               sent to stdout.\n"
"\n"
"               This option overrides previous uses of -v, --verbose or\n"
"               --trace-ascii.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
, stdout);
 fputs(
"          --trace-ascii <file>\n"
"               Enables a full trace dump of all incoming and outgoing\n"
"               data, including descriptive information, to the given\n"
"               output file. Use \"-\" as filename to have the output\n"
"               sent to stdout.\n"
"\n"
"               This is very similar to --trace, but leaves out the hex\n"
"               part and only shows the ASCII part of the dump. It\n"
"               makes smaller output that might be easier to read for\n"
, stdout);
 fputs(
"               untrained humans.\n"
"\n"
"               This option overrides previous uses of -v, --verbose or\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               --trace.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --trace-time\n"
"               Prepends a time stamp to each trace or verbose line\n"
"               that curl displays.  (Added in 7.14.0)\n"
"\n"
"          -u, --user <user:password;options>\n"
, stdout);
 fputs(
"               Specify the user name, password and optional login\n"
"               options to use for server authentication. Overrides -n,\n"
"               --netrc and --netrc-optional.\n"
"\n"
"               If you simply specify the user name, with or without\n"
"               the login options, curl will prompt for a password.\n"
"\n"
"               If you use an SSPI-enabled curl binary and perform NTLM\n"
"               authentication, you can force curl to select the user\n"
, stdout);
 fputs(
"               name and password from your environment by simply spec-\n"
"               ifying a single colon with this option: \"-u :\" or by\n"
"               specfying the login options on their own, for example\n"
"               \"-u ;auth=NTLM\".\n"
"\n"
"               You can use the optional login options part to specify\n"
"               protocol specific options that may be used during\n"
"               authentication. At present only IMAP, POP3 and SMTP\n"
, stdout);
 fputs(
"               support login options as part of the user login infor-\n"
"               mation. For more information about the login options\n"
"               please see RFC 2384, RFC 5092 and IETF draft draft-\n"
"               earhart-url-smtp-00.txt (Added in 7.31.0).\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -U, --proxy-user <user:password>\n"
"               Specify the user name and password to use for proxy\n"
, stdout);
 fputs(
"               authentication.\n"
"\n"
"               If you use an SSPI-enabled curl binary and do NTLM\n"
"               authentication, you can force curl to pick up the user\n"
"               name and password from your environment by simply spec-\n"
"               ifying a single colon with this option: \"-U :\".\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --url <URL>\n"
"               Specify a URL to fetch. This option is mostly handy\n"
, stdout);
 fputs(
"               when you want to specify URL(s) in a config file.\n"
"\n"
"               This option may be used any number of times. To control\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               where this URL is written, use the -o, --output or the\n"
"               -O, --remote-name options.\n"
"\n"
"          -v, --verbose\n"
"               Makes the fetching more verbose/talkative. Mostly use-\n"
"               ful for debugging. A line starting with '>' means\n"
, stdout);
 fputs(
"               \"header data\" sent by curl, '<' means \"header data\"\n"
"               received by curl that is hidden in normal cases, and a\n"
"               line starting with '*' means additional info provided\n"
"               by curl.\n"
"\n"
"               Note that if you only want HTTP headers in the output,\n"
"               -i, --include might be the option you're looking for.\n"
"\n"
"               If you think this option still doesn't give you enough\n"
, stdout);
 fputs(
"               details, consider using --trace or --trace-ascii\n"
"               instead.\n"
"\n"
"               This option overrides previous uses of --trace-ascii or\n"
"               --trace.\n"
"\n"
"               Use -s, --silent to make curl quiet.\n"
"\n"
"          -w, --write-out <format>\n"
"               Defines what to display on stdout after a completed and\n"
"               successful operation. The format is a string that may\n"
"               contain plain text mixed with any number of variables.\n"
, stdout);
 fputs(
"               The string can be specified as \"string\", to get read\n"
"               from a particular file you specify it \"@filename\" and\n"
"               to tell curl to read the format from stdin you write\n"
"               \"@-\".\n"
"\n"
"               The variables present in the output format will be sub-\n"
"               stituted by the value or text that curl thinks fit, as\n"
"               described below. All variables are specified as\n"
"               %{variable_name} and to output a normal % you just\n"
, stdout);
 fputs(
"               write them as %%. You can output a newline by using \\n,\n"
"               a carriage return with \\r and a tab space with \\t.\n"
"\n"
"               NOTE: The %-symbol is a special symbol in the win32-\n"
"               environment, where all occurrences of % must be doubled\n"
"               when using this option.\n"
"\n"
"               The variables available are:\n"
"\n"
"               content_type   The Content-Type of the requested docu-\n"
"                              ment, if there was any.\n"
"\n"
, stdout);
 fputs(
"               filename_effective\n"
"                              The ultimate filename that curl writes\n"
"                              out to. This is only meaningful if curl\n"
"                              is told to write to a file with the --\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"                              remote-name or --output option. It's\n"
"                              most useful in combination with the --\n"
, stdout);
 fputs(
"                              remote-header-name option. (Added in\n"
"                              7.25.1)\n"
"\n"
"               ftp_entry_path The initial path curl ended up in when\n"
"                              logging on to the remote FTP server.\n"
"                              (Added in 7.15.4)\n"
"\n"
"               http_code      The numerical response code that was\n"
"                              found in the last retrieved HTTP(S) or\n"
"                              FTP(s) transfer. In 7.18.2 the alias\n"
, stdout);
 fputs(
"                              response_code was added to show the same\n"
"                              info.\n"
"\n"
"               http_connect   The numerical code that was found in the\n"
"                              last response (from a proxy) to a curl\n"
"                              CONNECT request. (Added in 7.12.4)\n"
"\n"
"               local_ip       The IP address of the local end of the\n"
"                              most recently done connection - can be\n"
, stdout);
 fputs(
"                              either IPv4 or IPv6 (Added in 7.29.0)\n"
"\n"
"               local_port     The local port number of the most\n"
"                              recently done connection (Added in\n"
"                              7.29.0)\n"
"\n"
"               num_connects   Number of new connects made in the\n"
"                              recent transfer. (Added in 7.12.3)\n"
"\n"
"               num_redirects  Number of redirects that were followed\n"
, stdout);
 fputs(
"                              in the request. (Added in 7.12.3)\n"
"\n"
"               redirect_url   When an HTTP request was made without -L\n"
"                              to follow redirects, this variable will\n"
"                              show the actual URL a redirect would\n"
"                              take you to. (Added in 7.18.2)\n"
"\n"
"               remote_ip      The remote IP address of the most\n"
"                              recently done connection - can be either\n"
, stdout);
 fputs(
"                              IPv4 or IPv6 (Added in 7.29.0)\n"
"\n"
"               remote_port    The remote port number of the most\n"
"                              recently done connection (Added in\n"
"                              7.29.0)\n"
"\n"
"               size_download  The total amount of bytes that were\n"
"                              downloaded.\n"
"\n"
"               size_header    The total amount of bytes of the down-\n"
"                              loaded headers.\n"
"\n"
, stdout);
 fputs(
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               size_request   The total amount of bytes that were sent\n"
"                              in the HTTP request.\n"
"\n"
"               size_upload    The total amount of bytes that were\n"
"                              uploaded.\n"
"\n"
"               speed_download The average download speed that curl\n"
"                              measured for the complete download.\n"
"                              Bytes per second.\n"
"\n"
, stdout);
 fputs(
"               speed_upload   The average upload speed that curl mea-\n"
"                              sured for the complete upload. Bytes per\n"
"                              second.\n"
"\n"
"               ssl_verify_result\n"
"                              The result of the SSL peer certificate\n"
"                              verification that was requested. 0 means\n"
"                              the verification was successful. (Added\n"
"                              in 7.19.0)\n"
"\n"
"               time_appconnect\n"
, stdout);
 fputs(
"                              The time, in seconds, it took from the\n"
"                              start until the SSL/SSH/etc\n"
"                              connect/handshake to the remote host was\n"
"                              completed. (Added in 7.19.0)\n"
"\n"
"               time_connect   The time, in seconds, it took from the\n"
"                              start until the TCP connect to the\n"
"                              remote host (or proxy) was completed.\n"
"\n"
"               time_namelookup\n"
, stdout);
 fputs(
"                              The time, in seconds, it took from the\n"
"                              start until the name resolving was com-\n"
"                              pleted.\n"
"\n"
"               time_pretransfer\n"
"                              The time, in seconds, it took from the\n"
"                              start until the file transfer was just\n"
"                              about to begin. This includes all pre-\n"
"                              transfer commands and negotiations that\n"
, stdout);
 fputs(
"                              are specific to the particular\n"
"                              protocol(s) involved.\n"
"\n"
"               time_redirect  The time, in seconds, it took for all\n"
"                              redirection steps include name lookup,\n"
"                              connect, pretransfer and transfer before\n"
"                              the final transaction was started.\n"
"                              time_redirect shows the complete execu-\n"
, stdout);
 fputs(
"                              tion time for multiple redirections.\n"
"                              (Added in 7.12.3)\n"
"\n"
"               time_starttransfer\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"                              The time, in seconds, it took from the\n"
"                              start until the first byte was just\n"
"                              about to be transferred. This includes\n"
"                              time_pretransfer and also the time the\n"
, stdout);
 fputs(
"                              server needed to calculate the result.\n"
"\n"
"               time_total     The total time, in seconds, that the\n"
"                              full operation lasted. The time will be\n"
"                              displayed with millisecond resolution.\n"
"\n"
"               url_effective  The URL that was fetched last. This is\n"
"                              most meaningful if you've told curl to\n"
"                              follow location: headers.\n"
"\n"
, stdout);
 fputs(
"          If this option is used several times, the last one will be\n"
"          used.\n"
"\n"
"          -x, --proxy <[protocol://][user:password@]proxyhost[:port]>\n"
"               Use the specified proxy.\n"
"\n"
"               The proxy string can be specified with a protocol://\n"
"               prefix to specify alternative proxy protocols. Use\n"
"               socks4://, socks4a://, socks5:// or socks5h:// to\n"
"               request the specific SOCKS version to be used. No pro-\n"
, stdout);
 fputs(
"               tocol specified, http:// and all others will be treated\n"
"               as HTTP proxies. (The protocol support was added in\n"
"               curl 7.21.7)\n"
"\n"
"               If the port number is not specified in the proxy\n"
"               string, it is assumed to be 1080.\n"
"\n"
"               This option overrides existing environment variables\n"
"               that set the proxy to use. If there's an environment\n"
"               variable setting a proxy, you can set proxy to \"\" to\n"
, stdout);
 fputs(
"               override it.\n"
"\n"
"               All operations that are performed over an HTTP proxy\n"
"               will transparently be converted to HTTP. It means that\n"
"               certain protocol specific operations might not be\n"
"               available. This is not the case if you can tunnel\n"
"               through the proxy, as one with the -p, --proxytunnel\n"
"               option.\n"
"\n"
"               User and password that might be provided in the proxy\n"
, stdout);
 fputs(
"               string are URL decoded by curl. This allows you to pass\n"
"               in special characters such as @ by using %40 or pass in\n"
"               a colon with %3a.\n"
"\n"
"               The proxy host can be specified the exact same way as\n"
"               the proxy environment variables, including the protocol\n"
"               prefix (http://) and the embedded user + password.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -X, --request <command>\n"
"               (HTTP) Specifies a custom request method to use when\n"
"               communicating with the HTTP server.  The specified\n"
"               request will be used instead of the method otherwise\n"
"               used (which defaults to GET). Read the HTTP 1.1 speci-\n"
"               fication for details and explanations. Common addi-\n"
, stdout);
 fputs(
"               tional HTTP requests include PUT and DELETE, but\n"
"               related technologies like WebDAV offers PROPFIND, COPY,\n"
"               MOVE and more.\n"
"\n"
"               Normally you don't need this option. All sorts of GET,\n"
"               HEAD, POST and PUT requests are rather invoked by using\n"
"               dedicated command line options.\n"
"\n"
"               This option only changes the actual word used in the\n"
"               HTTP request, it does not alter the way curl behaves.\n"
, stdout);
 fputs(
"               So for example if you want to make a proper HEAD\n"
"               request, using -X HEAD will not suffice. You need to\n"
"               use the -I, --head option.\n"
"\n"
"               (FTP) Specifies a custom FTP command to use instead of\n"
"               LIST when doing file lists with FTP.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --xattr\n"
"               When saving output to a file, this option tells curl to\n"
, stdout);
 fputs(
"               store certain file metadata in extended file\n"
"               attributes. Currently, the URL is stored in the\n"
"               xdg.origin.url attribute and, for HTTP, the content\n"
"               type is stored in the mime_type attribute. If the file\n"
"               system does not support extended attributes, a warning\n"
"               is issued.\n"
"\n"
"          -y, --speed-time <time>\n"
"               If a download is slower than speed-limit bytes per sec-\n"
, stdout);
 fputs(
"               ond during a speed-time period, the download gets\n"
"               aborted. If speed-time is used, the default speed-limit\n"
"               will be 1 unless set with -Y.\n"
"\n"
"               This option controls transfers and thus will not affect\n"
"               slow connects etc. If this is a concern for you, try\n"
"               the --connect-timeout option.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
, stdout);
 fputs(
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          -Y, --speed-limit <speed>\n"
"               If a download is slower than this given speed (in bytes\n"
"               per second) for speed-time seconds it gets aborted.\n"
"               speed-time is set with -y and is 30 if not set.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -z, --time-cond <date expression>|<file>\n"
, stdout);
 fputs(
"               (HTTP/FTP) Request a file that has been modified later\n"
"               than the given time and date, or one that has been mod-\n"
"               ified before that time. The <date expression> can be\n"
"               all sorts of date strings or if it doesn't match any\n"
"               internal ones, it is taken as a filename and tries to\n"
"               get the modification date (mtime) from <file> instead.\n"
"               See the curl_getdate(3) man pages for date expression\n"
, stdout);
 fputs(
"               details.\n"
"\n"
"               Start the date expression with a dash (-) to make it\n"
"               request for a document that is older than the given\n"
"               date/time, default is a document that is newer than the\n"
"               specified date/time.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -h, --help\n"
"               Usage help.\n"
"\n"
"          -M, --manual\n"
"               Manual. Display the huge help text.\n"
"\n"
, stdout);
 fputs(
"          -V, --version\n"
"               Displays information about curl and the libcurl version\n"
"               it uses.\n"
"\n"
"               The first line includes the full version of curl, lib-\n"
"               curl and other 3rd party libraries linked with the exe-\n"
"               cutable.\n"
"\n"
"               The second line (starts with \"Protocols:\") shows all\n"
"               protocols that libcurl reports to support.\n"
"\n"
"               The third line (starts with \"Features:\") shows specific\n"
, stdout);
 fputs(
"               features libcurl reports to offer. Available features\n"
"               include:\n"
"\n"
"               IPv6 You can use IPv6 with this.\n"
"\n"
"               krb4 Krb4 for FTP is supported.\n"
"\n"
"               SSL  HTTPS and FTPS are supported.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               libz Automatic decompression of compressed files over\n"
"                    HTTP is supported.\n"
"\n"
"               NTLM NTLM authentication is supported.\n"
"\n"
, stdout);
 fputs(
"               GSS-Negotiate\n"
"                    Negotiate authentication and krb5 for FTP is sup-\n"
"                    ported.\n"
"\n"
"               Debug\n"
"                    This curl uses a libcurl built with Debug. This\n"
"                    enables more error-tracking and memory debugging\n"
"                    etc. For curl-developers only!\n"
"\n"
"               AsynchDNS\n"
"                    This curl uses asynchronous name resolves.\n"
"\n"
"               SPNEGO\n"
, stdout);
 fputs(
"                    SPNEGO Negotiate authentication is supported.\n"
"\n"
"               Largefile\n"
"                    This curl supports transfers of large files, files\n"
"                    larger than 2GB.\n"
"\n"
"               IDN  This curl supports IDN - international domain\n"
"                    names.\n"
"\n"
"               SSPI SSPI is supported. If you use NTLM and set a blank\n"
"                    user name, curl will authenticate with your cur-\n"
"                    rent user and password.\n"
"\n"
, stdout);
 fputs(
"               TLS-SRP\n"
"                    SRP (Secure Remote Password) authentication is\n"
"                    supported for TLS.\n"
"\n"
"               Metalink\n"
"                    This curl supports Metalink (both version 3 and 4\n"
"                    (RFC 5854)), which describes mirrors and hashes.\n"
"                    curl will use mirrors for failover if there are\n"
"                    errors (such as the file or server not being\n"
"                    available).\n"
"\n"
"     FILES\n"
"          ~/.curlrc\n"
, stdout);
 fputs(
"               Default config file, see -K, --config for details.\n"
"\n"
"     ENVIRONMENT\n"
"          The environment variables can be specified in lower case or\n"
"          upper case. The lower case version has precedence.\n"
"          http_proxy is an exception as it is only available in lower\n"
"          case.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          Using an environment variable to set the proxy has the same\n"
"          effect as using the --proxy option.\n"
"\n"
, stdout);
 fputs(
"          http_proxy [protocol://]<host>[:port]\n"
"               Sets the proxy server to use for HTTP.\n"
"          HTTPS_PROXY [protocol://]<host>[:port]\n"
"               Sets the proxy server to use for HTTPS.\n"
"\n"
"          [url-protocol]_PROXY [protocol://]<host>[:port]\n"
"               Sets the proxy server to use for [url-protocol], where\n"
"               the protocol is a protocol that curl supports and as\n"
"               specified in a URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP\n"
"               etc.\n"
"\n"
, stdout);
 fputs(
"          ALL_PROXY [protocol://]<host>[:port]\n"
"               Sets the proxy server to use if no protocol-specific\n"
"               proxy is set.\n"
"\n"
"          NO_PROXY <comma-separated list of hosts>\n"
"               list of host names that shouldn't go through any proxy.\n"
"               If set to a asterisk '*' only, it matches all hosts.\n"
"\n"
"     PROXY PROTOCOL PREFIXES\n"
"          Since curl version 7.21.7, the proxy string may be specified\n"
, stdout);
 fputs(
"          with a protocol:// prefix to specify alternative proxy pro-\n"
"          tocols.\n"
"\n"
"          If no protocol is specified in the proxy string or if the\n"
"          string doesn't match a supported one, the proxy will be\n"
"          treated as an HTTP proxy.\n"
"\n"
"          The supported proxy protocol prefixes are as follows:\n"
"\n"
"          socks4://\n"
"               Makes it the equivalent of --socks4\n"
"\n"
"          socks4a://\n"
"               Makes it the equivalent of --socks4a\n"
"\n"
"          socks5://\n"
, stdout);
 fputs(
"               Makes it the equivalent of --socks5\n"
"\n"
"          socks5h://\n"
"               Makes it the equivalent of --socks5-hostname\n"
"\n"
"     EXIT CODES\n"
"          There are a bunch of different error codes and their corre-\n"
"          sponding error messages that may appear during bad condi-\n"
"          tions. At the time of this writing, the exit codes are:\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          1    Unsupported protocol. This build of curl has no support\n"
, stdout);
 fputs(
"               for this protocol.\n"
"\n"
"          2    Failed to initialize.\n"
"\n"
"          3    URL malformed. The syntax was not correct.\n"
"\n"
"          4    A feature or option that was needed to perform the\n"
"               desired request was not enabled or was explicitly dis-\n"
"               abled at build-time. To make curl able to do this, you\n"
"               probably need another build of libcurl!\n"
"\n"
"          5    Couldn't resolve proxy. The given proxy host could not\n"
"               be resolved.\n"
"\n"
, stdout);
 fputs(
"          6    Couldn't resolve host. The given remote host was not\n"
"               resolved.\n"
"\n"
"          7    Failed to connect to host.\n"
"\n"
"          8    FTP weird server reply. The server sent data curl\n"
"               couldn't parse.\n"
"\n"
"          9    FTP access denied. The server denied login or denied\n"
"               access to the particular resource or directory you\n"
"               wanted to reach. Most often you tried to change to a\n"
"               directory that doesn't exist on the server.\n"
"\n"
, stdout);
 fputs(
"          11   FTP weird PASS reply. Curl couldn't parse the reply\n"
"               sent to the PASS request.\n"
"\n"
"          13   FTP weird PASV reply, Curl couldn't parse the reply\n"
"               sent to the PASV request.\n"
"\n"
"          14   FTP weird 227 format. Curl couldn't parse the 227-line\n"
"               the server sent.\n"
"\n"
"          15   FTP can't get host. Couldn't resolve the host IP we got\n"
"               in the 227-line.\n"
"\n"
"          17   FTP couldn't set binary. Couldn't change transfer\n"
, stdout);
 fputs(
"               method to binary.\n"
"\n"
"          18   Partial file. Only a part of the file was transferred.\n"
"\n"
"          19   FTP couldn't download/access the given file, the RETR\n"
"               (or similar) command failed.\n"
"\n"
"          21   FTP quote error. A quote command returned error from\n"
"               the server.\n"
"\n"
"          22   HTTP page not retrieved. The requested url was not\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"               found or returned another error with the HTTP error\n"
"               code being 400 or above. This return code only appears\n"
"               if -f, --fail is used.\n"
"\n"
"          23   Write error. Curl couldn't write data to a local\n"
"               filesystem or similar.\n"
"\n"
"          25   FTP couldn't STOR file. The server denied the STOR\n"
"               operation, used for FTP uploading.\n"
"\n"
"          26   Read error. Various reading problems.\n"
"\n"
, stdout);
 fputs(
"          27   Out of memory. A memory allocation request failed.\n"
"\n"
"          28   Operation timeout. The specified time-out period was\n"
"               reached according to the conditions.\n"
"\n"
"          30   FTP PORT failed. The PORT command failed. Not all FTP\n"
"               servers support the PORT command, try doing a transfer\n"
"               using PASV instead!\n"
"\n"
"          31   FTP couldn't use REST. The REST command failed. This\n"
"               command is used for resumed FTP transfers.\n"
"\n"
, stdout);
 fputs(
"          33   HTTP range error. The range \"command\" didn't work.\n"
"\n"
"          34   HTTP post error. Internal post-request generation\n"
"               error.\n"
"\n"
"          35   SSL connect error. The SSL handshaking failed.\n"
"\n"
"          36   FTP bad download resume. Couldn't continue an earlier\n"
"               aborted download.\n"
"\n"
"          37   FILE couldn't read file. Failed to open the file. Per-\n"
"               missions?\n"
"\n"
"          38   LDAP cannot bind. LDAP bind operation failed.\n"
"\n"
, stdout);
 fputs(
"          39   LDAP search failed.\n"
"\n"
"          41   Function not found. A required LDAP function was not\n"
"               found.\n"
"\n"
"          42   Aborted by callback. An application told curl to abort\n"
"               the operation.\n"
"\n"
"          43   Internal error. A function was called with a bad param-\n"
"               eter.\n"
"\n"
"          45   Interface error. A specified outgoing interface could\n"
"               not be used.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"          47   Too many redirects. When following redirects, curl hit\n"
"               the maximum amount.\n"
"\n"
"          48   Unknown option specified to libcurl. This indicates\n"
"               that you passed a weird option to curl that was passed\n"
"               on to libcurl and rejected. Read up in the manual!\n"
"\n"
"          49   Malformed telnet option.\n"
"\n"
"          51   The peer's SSL certificate or SSH MD5 fingerprint was\n"
"               not OK.\n"
"\n"
, stdout);
 fputs(
"          52   The server didn't reply anything, which here is consid-\n"
"               ered an error.\n"
"\n"
"          53   SSL crypto engine not found.\n"
"\n"
"          54   Cannot set SSL crypto engine as default.\n"
"\n"
"          55   Failed sending network data.\n"
"\n"
"          56   Failure in receiving network data.\n"
"\n"
"          58   Problem with the local certificate.\n"
"\n"
"          59   Couldn't use specified SSL cipher.\n"
"\n"
"          60   Peer certificate cannot be authenticated with known CA\n"
, stdout);
 fputs(
"               certificates.\n"
"\n"
"          61   Unrecognized transfer encoding.\n"
"\n"
"          62   Invalid LDAP URL.\n"
"\n"
"          63   Maximum file size exceeded.\n"
"\n"
"          64   Requested FTP SSL level failed.\n"
"\n"
"          65   Sending the data requires a rewind that failed.\n"
"\n"
"          66   Failed to initialise SSL Engine.\n"
"\n"
"          67   The user name, password, or similar was not accepted\n"
"               and curl failed to log in.\n"
"\n"
"          68   File not found on TFTP server.\n"
"\n"
, stdout);
 fputs(
"          69   Permission problem on TFTP server.\n"
"\n"
"          70   Out of disk space on TFTP server.\n"
"\n"
"          71   Illegal TFTP operation.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          72   Unknown TFTP transfer ID.\n"
"\n"
"          73   File already exists (TFTP).\n"
"\n"
"          74   No such user (TFTP).\n"
"\n"
"          75   Character conversion failed.\n"
"\n"
"          76   Character conversion functions required.\n"
"\n"
, stdout);
 fputs(
"          77   Problem with reading the SSL CA cert (path? access\n"
"               rights?).\n"
"\n"
"          78   The resource referenced in the URL does not exist.\n"
"\n"
"          79   An unspecified error occurred during the SSH session.\n"
"\n"
"          80   Failed to shut down the SSL connection.\n"
"\n"
"          82   Could not load CRL file, missing or wrong format (added\n"
"               in 7.19.0).\n"
"\n"
"          83   Issuer check failed (added in 7.19.0).\n"
"\n"
"          84   The FTP PRET command failed\n"
"\n"
, stdout);
 fputs(
"          85   RTSP: mismatch of CSeq numbers\n"
"\n"
"          86   RTSP: mismatch of Session Identifiers\n"
"\n"
"          87   unable to parse FTP file list\n"
"\n"
"          88   FTP chunk callback reported error\n"
"\n"
"          XX   More error codes will appear here in future releases.\n"
"               The existing ones are meant to never change.\n"
"\n"
"     AUTHORS / CONTRIBUTORS\n"
"          Daniel Stenberg is the main author, but the whole list of\n"
"          contributors is found in the separate THANKS file.\n"
"\n"
"     WWW\n"
, stdout);
 fputs(
"          http://curl.haxx.se\n"
"\n"
"     FTP\n"
"          ftp://ftp.sunet.se/pub/www/utilities/curl/\n"
"\n"
"     SEE ALSO\n"
"          ftp(1), wget(1)\n"
"\n"
"LATEST VERSION\n"
"\n"
"  You always find news about what's going on as well as the latest versions\n"
"  from the curl web pages, located at:\n"
"\n"
"        http://curl.haxx.se\n"
"\n"
"SIMPLE USAGE\n"
"\n"
"  Get the main page from Netscape's web-server:\n"
"\n"
"        curl http://www.netscape.com/\n"
"\n"
"  Get the README file the user's home directory at funet's ftp-server:\n"
"\n"
, stdout);
 fputs(
"        curl ftp://ftp.funet.fi/README\n"
"\n"
"  Get a web page from a server using port 8000:\n"
"\n"
"        curl http://www.weirdserver.com:8000/\n"
"\n"
"  Get a directory listing of an FTP site:\n"
"\n"
"        curl ftp://cool.haxx.se/\n"
"\n"
"  Get the definition of curl from a dictionary:\n"
"\n"
"        curl dict://dict.org/m:curl\n"
"\n"
"  Fetch two documents at once:\n"
"\n"
"        curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/\n"
"\n"
"  Get a file off an FTPS server:\n"
"\n"
"        curl ftps://files.are.secure.com/secrets.txt\n"
"\n"
, stdout);
 fputs(
"  or use the more appropriate FTPS way to get the same file:\n"
"\n"
"        curl --ftp-ssl ftp://files.are.secure.com/secrets.txt\n"
"\n"
"  Get a file from an SSH server using SFTP:\n"
"\n"
"        curl -u username sftp://shell.example.com/etc/issue\n"
"\n"
"  Get a file from an SSH server using SCP using a private key to authenticate:\n"
"\n"
"        curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \\\n"
"            scp://shell.example.com/~/personal.txt\n"
"\n"
"  Get the main page from an IPv6 web server:\n"
"\n"
, stdout);
 fputs(
"        curl -g \"http://[2001:1890:1112:1::20]/\"\n"
"\n"
"DOWNLOAD TO A FILE\n"
"\n"
"  Get a web page and store in a local file with a specific name:\n"
"\n"
"        curl -o thatpage.html http://www.netscape.com/\n"
"\n"
"  Get a web page and store in a local file, make the local file get the name\n"
"  of the remote document (if no file name part is specified in the URL, this\n"
"  will fail):\n"
"\n"
"        curl -O http://www.netscape.com/index.html\n"
"\n"
"  Fetch two files and store them with their remote names:\n"
"\n"
, stdout);
 fputs(
"        curl -O www.haxx.se/index.html -O curl.haxx.se/download.html\n"
"\n"
"USING PASSWORDS\n"
"\n"
" FTP\n"
"\n"
"   To ftp files using name+passwd, include them in the URL like:\n"
"\n"
"        curl ftp://name:passwd@machine.domain:port/full/path/to/file\n"
"\n"
"   or specify them with the -u flag like\n"
"\n"
"        curl -u name:passwd ftp://machine.domain:port/full/path/to/file\n"
"\n"
" FTPS\n"
"\n"
"   It is just like for FTP, but you may also want to specify and use\n"
"   SSL-specific options for certificates etc.\n"
"\n"
, stdout);
 fputs(
"   Note that using FTPS:// as prefix is the \"implicit\" way as described in the\n"
"   standards while the recommended \"explicit\" way is done by using FTP:// and\n"
"   the --ftp-ssl option.\n"
"\n"
" SFTP / SCP\n"
"\n"
"   This is similar to FTP, but you can specify a private key to use instead of\n"
"   a password. Note that the private key may itself be protected by a password\n"
"   that is unrelated to the login password of the remote system.  If you\n"
"   provide a private key file you must also provide a public key file.\n"
, stdout);
 fputs(
"\n"
" HTTP\n"
"\n"
"   Curl also supports user and password in HTTP URLs, thus you can pick a file\n"
"   like:\n"
"\n"
"        curl http://name:passwd@machine.domain/full/path/to/file\n"
"\n"
"   or specify user and password separately like in\n"
"\n"
"        curl -u name:passwd http://machine.domain/full/path/to/file\n"
"\n"
"   HTTP offers many different methods of authentication and curl supports\n"
"   several: Basic, Digest, NTLM and Negotiate. Without telling which method to\n"
, stdout);
 fputs(
"   use, curl defaults to Basic. You can also ask curl to pick the most secure\n"
"   ones out of the ones that the server accepts for the given URL, by using\n"
"   --anyauth.\n"
"\n"
"   NOTE! According to the URL specification, HTTP URLs can not contain a user\n"
"   and password, so that style will not work when using curl via a proxy, even\n"
"   though curl allows it at other times. When using a proxy, you _must_ use\n"
"   the -u style for user and password.\n"
"\n"
" HTTPS\n"
"\n"
, stdout);
 fputs(
"   Probably most commonly used with private certificates, as explained below.\n"
"\n"
"PROXY\n"
"\n"
" curl supports both HTTP and SOCKS proxy servers, with optional authentication.\n"
" It does not have special support for FTP proxy servers since there are no\n"
" standards for those, but it can still be made to work with many of them. You\n"
" can also use both HTTP and SOCKS proxies to transfer files to and from FTP\n"
" servers.\n"
"\n"
" Get an ftp file using an HTTP proxy named my-proxy that uses port 888:\n"
"\n"
, stdout);
 fputs(
"        curl -x my-proxy:888 ftp://ftp.leachsite.com/README\n"
"\n"
" Get a file from an HTTP server that requires user and password, using the\n"
" same proxy as above:\n"
"\n"
"        curl -u user:passwd -x my-proxy:888 http://www.get.this/\n"
"\n"
" Some proxies require special authentication. Specify by using -U as above:\n"
"\n"
"        curl -U user:passwd -x my-proxy:888 http://www.get.this/\n"
"\n"
" A comma-separated list of hosts and domains which do not use the proxy can\n"
" be specified as:\n"
"\n"
, stdout);
 fputs(
"        curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/\n"
"\n"
" If the proxy is specified with --proxy1.0 instead of --proxy or -x, then\n"
" curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.\n"
"\n"
" curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n"
"\n"
" See also the environment variables Curl supports that offer further proxy\n"
" control.\n"
"\n"
" Most FTP proxy servers are set up to appear as a normal FTP server from the\n"
, stdout);
 fputs(
" client's perspective, with special commands to select the remote FTP server.\n"
" curl supports the -u, -Q and --ftp-account options that can be used to\n"
" set up transfers through many FTP proxies. For example, a file can be\n"
" uploaded to a remote FTP server using a Blue Coat FTP proxy with the\n"
" options:\n"
"\n"
"   curl -u \"Remote-FTP-Username@remote.ftp.server Proxy-Username:Remote-Pass\" \\\n"
"    --ftp-account Proxy-Password --upload-file local-file \\\n"
"    ftp://my-ftp.proxy.server:21/remote/upload/path/\n"
"\n"
, stdout);
 fputs(
" See the manual for your FTP proxy to determine the form it expects to set up\n"
" transfers, and curl's -v option to see exactly what curl is sending.\n"
"\n"
"RANGES\n"
"\n"
"  HTTP 1.1 introduced byte-ranges. Using this, a client can request\n"
"  to get only one or more subparts of a specified document. Curl supports\n"
"  this with the -r flag.\n"
"\n"
"  Get the first 100 bytes of a document:\n"
"\n"
"        curl -r 0-99 http://www.get.this/\n"
"\n"
"  Get the last 500 bytes of a document:\n"
"\n"
"        curl -r -500 http://www.get.this/\n"
"\n"
, stdout);
 fputs(
"  Curl also supports simple ranges for FTP files as well. Then you can only\n"
"  specify start and stop position.\n"
"\n"
"  Get the first 100 bytes of a document using FTP:\n"
"\n"
"        curl -r 0-99 ftp://www.get.this/README\n"
"\n"
"UPLOADING\n"
"\n"
" FTP / FTPS / SFTP / SCP\n"
"\n"
"  Upload all data on stdin to a specified server:\n"
"\n"
"        curl -T - ftp://ftp.upload.com/myfile\n"
"\n"
"  Upload data from a specified file, login with user and password:\n"
"\n"
"        curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile\n"
"\n"
, stdout);
 fputs(
"  Upload a local file to the remote site, and use the local file name at the remote\n"
"  site too:\n"
"\n"
"        curl -T uploadfile -u user:passwd ftp://ftp.upload.com/\n"
"\n"
"  Upload a local file to get appended to the remote file:\n"
"\n"
"        curl -T localfile -a ftp://ftp.upload.com/remotefile\n"
"\n"
"  Curl also supports ftp upload through a proxy, but only if the proxy is\n"
"  configured to allow that kind of tunneling. If it does, you can run curl in\n"
"  a fashion similar to:\n"
"\n"
, stdout);
 fputs(
"        curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n"
"\n"
" HTTP\n"
"\n"
"  Upload all data on stdin to a specified HTTP site:\n"
"\n"
"        curl -T - http://www.upload.com/myfile\n"
"\n"
"  Note that the HTTP server must have been configured to accept PUT before\n"
"  this can be done successfully.\n"
"\n"
"  For other ways to do HTTP data upload, see the POST section below.\n"
"\n"
"VERBOSE / DEBUG\n"
"\n"
"  If curl fails where it isn't supposed to, if the servers don't let you in,\n"
, stdout);
 fputs(
"  if you can't understand the responses: use the -v flag to get verbose\n"
"  fetching. Curl will output lots of info and what it sends and receives in\n"
"  order to let the user see all client-server interaction (but it won't show\n"
"  you the actual data).\n"
"\n"
"        curl -v ftp://ftp.upload.com/\n"
"\n"
"  To get even more details and information on what curl does, try using the\n"
"  --trace or --trace-ascii options with a given file name to log to, like\n"
"  this:\n"
"\n"
"        curl --trace trace.txt www.haxx.se\n"
"\n"
"\n"
, stdout);
 fputs(
"DETAILED INFORMATION\n"
"\n"
"  Different protocols provide different ways of getting detailed information\n"
"  about specific files/documents. To get curl to show detailed information\n"
"  about a single file, you should use -I/--head option. It displays all\n"
"  available info on a single file for HTTP and FTP. The HTTP information is a\n"
"  lot more extensive.\n"
"\n"
"  For HTTP, you can get the header information (the same as -I would show)\n"
"  shown before the data by using -i/--include. Curl understands the\n"
, stdout);
 fputs(
"  -D/--dump-header option when getting files from both FTP and HTTP, and it\n"
"  will then store the headers in the specified file.\n"
"\n"
"  Store the HTTP headers in a separate file (headers.txt in the example):\n"
"\n"
"        curl --dump-header headers.txt curl.haxx.se\n"
"\n"
"  Note that headers stored in a separate file can be very useful at a later\n"
"  time if you want curl to use cookies sent by the server. More about that in\n"
"  the cookies section.\n"
"\n"
"POST (HTTP)\n"
"\n"
, stdout);
 fputs(
"  It's easy to post data using curl. This is done using the -d <data>\n"
"  option.  The post data must be urlencoded.\n"
"\n"
"  Post a simple \"name\" and \"phone\" guestbook.\n"
"\n"
"        curl -d \"name=Rafael%20Sagula&phone=3320780\" \\\n"
"                http://www.where.com/guest.cgi\n"
"\n"
"  How to post a form with curl, lesson #1:\n"
"\n"
"  Dig out all the <input> tags in the form that you want to fill in. (There's\n"
"  a perl program called formfind.pl on the curl site that helps with this).\n"
"\n"
, stdout);
 fputs(
"  If there's a \"normal\" post, you use -d to post. -d takes a full \"post\n"
"  string\", which is in the format\n"
"\n"
"        <variable1>=<data1>&<variable2>=<data2>&...\n"
"\n"
"  The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
"  the data is the contents you want to fill in for the inputs. The data *must*\n"
"  be properly URL encoded. That means you replace space with + and that you\n"
"  replace weird letters with %XX where XX is the hexadecimal representation of\n"
, stdout);
 fputs(
"  the letter's ASCII code.\n"
"\n"
"  Example:\n"
"\n"
"  (page located at http://www.formpost.com/getthis/\n"
"\n"
"        <form action=\"post.cgi\" method=\"post\">\n"
"        <input name=user size=10>\n"
"        <input name=pass type=password size=10>\n"
"        <input name=id type=hidden value=\"blablabla\">\n"
"        <input name=ding value=\"submit\">\n"
"        </form>\n"
"\n"
"  We want to enter user 'foobar' with password '12345'.\n"
"\n"
"  To post to this, you enter a curl command line like:\n"
"\n"
, stdout);
 fputs(
"        curl -d \"user=foobar&pass=12345&id=blablabla&ding=submit\"  (continues)\n"
"          http://www.formpost.com/getthis/post.cgi\n"
"\n"
"\n"
"  While -d uses the application/x-www-form-urlencoded mime-type, generally\n"
"  understood by CGI's and similar, curl also supports the more capable\n"
"  multipart/form-data type. This latter type supports things like file upload.\n"
"\n"
"  -F accepts parameters like -F \"name=contents\". If you want the contents to\n"
, stdout);
 fputs(
"  be read from a file, use <@filename> as contents. When specifying a file,\n"
"  you can also specify the file content type by appending ';type=<mime type>'\n"
"  to the file name. You can also post the contents of several files in one\n"
"  field.  For example, the field name 'coolfiles' is used to send three files,\n"
"  with different content types using the following syntax:\n"
"\n"
"        curl -F \"coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html\" \\\n"
"        http://www.post.com/postit.cgi\n"
"\n"
, stdout);
 fputs(
"  If the content-type is not specified, curl will try to guess from the file\n"
"  extension (it only knows a few), or use the previously specified type (from\n"
"  an earlier file if several files are specified in a list) or else it will\n"
"  use the default type 'application/octet-stream'.\n"
"\n"
"  Emulate a fill-in form with -F. Let's say you fill in three fields in a\n"
"  form. One field is a file name which to post, one field is your name and one\n"
, stdout);
 fputs(
"  field is a file description. We want to post the file we have written named\n"
"  \"cooltext.txt\". To let curl do the posting of this data instead of your\n"
"  favourite browser, you have to read the HTML source of the form page and\n"
"  find the names of the input fields. In our example, the input field names\n"
"  are 'file', 'yourname' and 'filedescription'.\n"
"\n"
"        curl -F \"file=@cooltext.txt\" -F \"yourname=Daniel\" \\\n"
"             -F \"filedescription=Cool text file with cool text inside\" \\\n"
, stdout);
 fputs(
"             http://www.post.com/postit.cgi\n"
"\n"
"  To send two files in one post you can do it in two ways:\n"
"\n"
"  1. Send multiple files in a single \"field\" with a single field name:\n"
"\n"
"        curl -F \"pictures=@dog.gif,cat.gif\"\n"
"\n"
"  2. Send two fields with two field names:\n"
"\n"
"        curl -F \"docpicture=@dog.gif\" -F \"catpicture=@cat.gif\"\n"
"\n"
"  To send a field value literally without interpreting a leading '@'\n"
"  or '<', or an embedded ';type=', use --form-string instead of\n"
, stdout);
 fputs(
"  -F. This is recommended when the value is obtained from a user or\n"
"  some other unpredictable source. Under these circumstances, using\n"
"  -F instead of --form-string would allow a user to trick curl into\n"
"  uploading a file.\n"
"\n"
"REFERRER\n"
"\n"
"  An HTTP request has the option to include information about which address\n"
"  referred it to the actual page.  Curl allows you to specify the\n"
"  referrer to be used on the command line. It is especially useful to\n"
, stdout);
 fputs(
"  fool or trick stupid servers or CGI scripts that rely on that information\n"
"  being available or contain certain data.\n"
"\n"
"        curl -e www.coolsite.com http://www.showme.com/\n"
"\n"
"  NOTE: The Referer: [sic] field is defined in the HTTP spec to be a full URL.\n"
"\n"
"USER AGENT\n"
"\n"
"  An HTTP request has the option to include information about the browser\n"
"  that generated the request. Curl allows it to be specified on the command\n"
"  line. It is especially useful to fool or trick stupid servers or CGI\n"
, stdout);
 fputs(
"  scripts that only accept certain browsers.\n"
"\n"
"  Example:\n"
"\n"
"  curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/\n"
"\n"
"  Other common strings:\n"
"    'Mozilla/3.0 (Win95; I)'     Netscape Version 3 for Windows 95\n"
"    'Mozilla/3.04 (Win95; U)'    Netscape Version 3 for Windows 95\n"
"    'Mozilla/2.02 (OS/2; U)'     Netscape Version 2 for OS/2\n"
"    'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)'           NS for AIX\n"
"    'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)'      NS for Linux\n"
"\n"
, stdout);
 fputs(
"  Note that Internet Explorer tries hard to be compatible in every way:\n"
"    'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)'    MSIE for W95\n"
"\n"
"  Mozilla is not the only possible User-Agent name:\n"
"    'Konqueror/1.0'             KDE File Manager desktop client\n"
"    'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser\n"
"\n"
"COOKIES\n"
"\n"
"  Cookies are generally used by web servers to keep state information at the\n"
"  client's side. The server sets cookies by sending a response line in the\n"
, stdout);
 fputs(
"  headers that looks like 'Set-Cookie: <data>' where the data part then\n"
"  typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n"
"  like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n"
"  path the \"cookie\" should be used for (by specifying \"path=value\"), when the\n"
"  cookie should expire (\"expire=DATE\"), for what domain to use it\n"
"  (\"domain=NAME\") and if it should be used on secure connections only\n"
"  (\"secure\").\n"
"\n"
, stdout);
 fputs(
"  If you've received a page from a server that contains a header like:\n"
"        Set-Cookie: sessionid=boo123; path=\"/foo\";\n"
"\n"
"  it means the server wants that first pair passed on when we get anything in\n"
"  a path beginning with \"/foo\".\n"
"\n"
"  Example, get a page that wants my name passed in a cookie:\n"
"\n"
"        curl -b \"name=Daniel\" www.sillypage.com\n"
"\n"
"  Curl also has the ability to use previously received cookies in following\n"
"  sessions. If you get cookies from a server and store them in a file in a\n"
, stdout);
 fputs(
"  manner similar to:\n"
"\n"
"        curl --dump-header headers www.example.com\n"
"\n"
"  ... you can then in a second connect to that (or another) site, use the\n"
"  cookies from the 'headers' file like:\n"
"\n"
"        curl -b headers www.example.com\n"
"\n"
"  While saving headers to a file is a working way to store cookies, it is\n"
"  however error-prone and not the preferred way to do this. Instead, make curl\n"
"  save the incoming cookies using the well-known netscape cookie format like\n"
"  this:\n"
"\n"
, stdout);
 fputs(
"        curl -c cookies.txt www.example.com\n"
"\n"
"  Note that by specifying -b you enable the \"cookie awareness\" and with -L\n"
"  you can make curl follow a location: (which often is used in combination\n"
"  with cookies). So that if a site sends cookies and a location, you can\n"
"  use a non-existing file to trigger the cookie awareness like:\n"
"\n"
"        curl -L -b empty.txt www.example.com\n"
"\n"
"  The file to read cookies from must be formatted using plain HTTP headers OR\n"
, stdout);
 fputs(
"  as netscape's cookie file. Curl will determine what kind it is based on the\n"
"  file contents.  In the above command, curl will parse the header and store\n"
"  the cookies received from www.example.com.  curl will send to the server the\n"
"  stored cookies which match the request as it follows the location.  The\n"
"  file \"empty.txt\" may be a nonexistent file.\n"
"\n"
"  Alas, to both read and write cookies from a netscape cookie file, you can\n"
"  set both -b and -c to use the same file:\n"
"\n"
, stdout);
 fputs(
"        curl -b cookies.txt -c cookies.txt www.example.com\n"
"\n"
"PROGRESS METER\n"
"\n"
"  The progress meter exists to show a user that something actually is\n"
"  happening. The different fields in the output have the following meaning:\n"
"\n"
"  % Total    % Received % Xferd  Average Speed          Time             Curr.\n"
"                                 Dload  Upload Total    Current  Left    Speed\n"
"  0  151M    0 38608    0     0   9406      0  4:41:43  0:00:04  4:41:39  9287\n"
"\n"
"  From left-to-right:\n"
, stdout);
 fputs(
"   %             - percentage completed of the whole transfer\n"
"   Total         - total size of the whole expected transfer\n"
"   %             - percentage completed of the download\n"
"   Received      - currently downloaded amount of bytes\n"
"   %             - percentage completed of the upload\n"
"   Xferd         - currently uploaded amount of bytes\n"
"   Average Speed\n"
"   Dload         - the average transfer speed of the download\n"
"   Average Speed\n"
"   Upload        - the average transfer speed of the upload\n"
, stdout);
 fputs(
"   Time Total    - expected time to complete the operation\n"
"   Time Current  - time passed since the invoke\n"
"   Time Left     - expected time left to completion\n"
"   Curr.Speed    - the average transfer speed the last 5 seconds (the first\n"
"                   5 seconds of a transfer is based on less time of course.)\n"
"\n"
"  The -# option will display a totally different progress bar that doesn't\n"
"  need much explanation!\n"
"\n"
"SPEED LIMIT\n"
"\n"
, stdout);
 fputs(
"  Curl allows the user to set the transfer speed conditions that must be met\n"
"  to let the transfer keep going. By using the switch -y and -Y you\n"
"  can make curl abort transfers if the transfer speed is below the specified\n"
"  lowest limit for a specified time.\n"
"\n"
"  To have curl abort the download if the speed is slower than 3000 bytes per\n"
"  second for 1 minute, run:\n"
"\n"
"        curl -Y 3000 -y 60 www.far-away-site.com\n"
"\n"
"  This can very well be used in combination with the overall time limit, so\n"
, stdout);
 fputs(
"  that the above operation must be completed in whole within 30 minutes:\n"
"\n"
"        curl -m 1800 -Y 3000 -y 60 www.far-away-site.com\n"
"\n"
"  Forcing curl not to transfer data faster than a given rate is also possible,\n"
"  which might be useful if you're using a limited bandwidth connection and you\n"
"  don't want your transfer to use all of it (sometimes referred to as\n"
"  \"bandwidth throttle\").\n"
"\n"
"  Make curl transfer data no faster than 10 kilobytes per second:\n"
"\n"
, stdout);
 fputs(
"        curl --limit-rate 10K www.far-away-site.com\n"
"\n"
"    or\n"
"\n"
"        curl --limit-rate 10240 www.far-away-site.com\n"
"\n"
"  Or prevent curl from uploading data faster than 1 megabyte per second:\n"
"\n"
"        curl -T upload --limit-rate 1M ftp://uploadshereplease.com\n"
"\n"
"  When using the --limit-rate option, the transfer rate is regulated on a\n"
"  per-second basis, which will cause the total transfer speed to become lower\n"
"  than the given number. Sometimes of course substantially lower, if your\n"
, stdout);
 fputs(
"  transfer stalls during periods.\n"
"\n"
"CONFIG FILE\n"
"\n"
"  Curl automatically tries to read the .curlrc file (or _curlrc file on win32\n"
"  systems) from the user's home dir on startup.\n"
"\n"
"  The config file could be made up with normal command line switches, but you\n"
"  can also specify the long options without the dashes to make it more\n"
"  readable. You can separate the options and the parameter with spaces, or\n"
"  with = or :. Comments can be used within the file. If the first letter on a\n"
, stdout);
 fputs(
"  line is a '#'-symbol the rest of the line is treated as a comment.\n"
"\n"
"  If you want the parameter to contain spaces, you must enclose the entire\n"
"  parameter within double quotes (\"). Within those quotes, you specify a\n"
"  quote as \\\".\n"
"\n"
"  NOTE: You must specify options and their arguments on the same line.\n"
"\n"
"  Example, set default time out and proxy in a config file:\n"
"\n"
"        # We want a 30 minute timeout:\n"
"        -m 1800\n"
"        # ... and we use a proxy for all accesses:\n"
, stdout);
 fputs(
"        proxy = proxy.our.domain.com:8080\n"
"\n"
"  White spaces ARE significant at the end of lines, but all white spaces\n"
"  leading up to the first characters of each line are ignored.\n"
"\n"
"  Prevent curl from reading the default file by using -q as the first command\n"
"  line parameter, like:\n"
"\n"
"        curl -q www.thatsite.com\n"
"\n"
"  Force curl to get and display a local help page in case it is invoked\n"
"  without URL by making a config file similar to:\n"
"\n"
"        # default url to get\n"
, stdout);
 fputs(
"        url = \"http://help.with.curl.com/curlhelp.html\"\n"
"\n"
"  You can specify another config file to be read by using the -K/--config\n"
"  flag. If you set config file name to \"-\" it'll read the config from stdin,\n"
"  which can be handy if you want to hide options from being visible in process\n"
"  tables etc:\n"
"\n"
"        echo \"user = user:passwd\" | curl -K - http://that.secret.site.com\n"
"\n"
"EXTRA HEADERS\n"
"\n"
"  When using curl in your own very special programs, you may end up needing\n"
, stdout);
 fputs(
"  to pass on your own custom headers when getting a web page. You can do\n"
"  this by using the -H flag.\n"
"\n"
"  Example, send the header \"X-you-and-me: yes\" to the server when getting a\n"
"  page:\n"
"\n"
"        curl -H \"X-you-and-me: yes\" www.love.com\n"
"\n"
"  This can also be useful in case you want curl to send a different text in a\n"
"  header than it normally does. The -H header you specify then replaces the\n"
"  header curl would normally send. If you replace an internal header with an\n"
, stdout);
 fputs(
"  empty one, you prevent that header from being sent. To prevent the Host:\n"
"  header from being used:\n"
"\n"
"        curl -H \"Host:\" www.server.com\n"
"\n"
"FTP and PATH NAMES\n"
"\n"
"  Do note that when getting files with the ftp:// URL, the given path is\n"
"  relative the directory you enter. To get the file 'README' from your home\n"
"  directory at your ftp site, do:\n"
"\n"
"        curl ftp://user:passwd@my.site.com/README\n"
"\n"
"  But if you want the README file from the root directory of that very same\n"
, stdout);
 fputs(
"  site, you need to specify the absolute file name:\n"
"\n"
"        curl ftp://user:passwd@my.site.com//README\n"
"\n"
"  (I.e with an extra slash in front of the file name.)\n"
"\n"
"SFTP and SCP and PATH NAMES\n"
"\n"
"  With sftp: and scp: URLs, the path name given is the absolute name on the\n"
"  server. To access a file relative to the remote user's home directory,\n"
"  prefix the file with /~/ , such as:\n"
"\n"
"        curl -u $USER sftp://home.example.com/~/.bashrc\n"
"\n"
"FTP and firewalls\n"
"\n"
, stdout);
 fputs(
"  The FTP protocol requires one of the involved parties to open a second\n"
"  connection as soon as data is about to get transferred. There are two ways to\n"
"  do this.\n"
"\n"
"  The default way for curl is to issue the PASV command which causes the\n"
"  server to open another port and await another connection performed by the\n"
"  client. This is good if the client is behind a firewall that doesn't allow\n"
"  incoming connections.\n"
"\n"
"        curl ftp.download.com\n"
"\n"
, stdout);
 fputs(
"  If the server, for example, is behind a firewall that doesn't allow connections\n"
"  on ports other than 21 (or if it just doesn't support the PASV command), the\n"
"  other way to do it is to use the PORT command and instruct the server to\n"
"  connect to the client on the given IP number and port (as parameters to the\n"
"  PORT command).\n"
"\n"
"  The -P flag to curl supports a few different options. Your machine may have\n"
"  several IP-addresses and/or network interfaces and curl allows you to select\n"
, stdout);
 fputs(
"  which of them to use. Default address can also be used:\n"
"\n"
"        curl -P - ftp.download.com\n"
"\n"
"  Download with PORT but use the IP address of our 'le0' interface (this does\n"
"  not work on windows):\n"
"\n"
"        curl -P le0 ftp.download.com\n"
"\n"
"  Download with PORT but use 192.168.0.10 as our IP address to use:\n"
"\n"
"        curl -P 192.168.0.10 ftp.download.com\n"
"\n"
"NETWORK INTERFACE\n"
"\n"
"  Get a web page from a server using a specified port for the interface:\n"
"\n"
, stdout);
 fputs(
"        curl --interface eth0:1 http://www.netscape.com/\n"
"\n"
"  or\n"
"\n"
"        curl --interface 192.168.1.10 http://www.netscape.com/\n"
"\n"
"HTTPS\n"
"\n"
"  Secure HTTP requires SSL libraries to be installed and used when curl is\n"
"  built. If that is done, curl is capable of retrieving and posting documents\n"
"  using the HTTPS protocol.\n"
"\n"
"  Example:\n"
"\n"
"        curl https://www.secure-site.com\n"
"\n"
"  Curl is also capable of using your personal certificates to get/post files\n"
, stdout);
 fputs(
"  from sites that require valid certificates. The only drawback is that the\n"
"  certificate needs to be in PEM-format. PEM is a standard and open format to\n"
"  store certificates with, but it is not used by the most commonly used\n"
"  browsers (Netscape and MSIE both use the so called PKCS#12 format). If you\n"
"  want curl to use the certificates you use with your (favourite) browser, you\n"
"  may need to download/compile a converter that can convert your browser's\n"
, stdout);
 fputs(
"  formatted certificates to PEM formatted ones. This kind of converter is\n"
"  included in recent versions of OpenSSL, and for older versions Dr Stephen\n"
"  N. Henson has written a patch for SSLeay that adds this functionality. You\n"
"  can get his patch (that requires an SSLeay installation) from his site at:\n"
"  http://www.drh-consultancy.demon.co.uk/\n"
"\n"
"  Example on how to automatically retrieve a document using a certificate with\n"
"  a personal password:\n"
"\n"
, stdout);
 fputs(
"        curl -E /path/to/cert.pem:password https://secure.site.com/\n"
"\n"
"  If you neglect to specify the password on the command line, you will be\n"
"  prompted for the correct password before any data can be received.\n"
"\n"
"  Many older SSL-servers have problems with SSLv3 or TLS, which newer versions\n"
"  of OpenSSL etc use, therefore it is sometimes useful to specify what\n"
"  SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL\n"
"  version to use (for SSLv3, SSLv2 or TLSv1 respectively):\n"
"\n"
, stdout);
 fputs(
"        curl -2 https://secure.site.com/\n"
"\n"
"  Otherwise, curl will first attempt to use v3 and then v2.\n"
"\n"
"  To use OpenSSL to convert your favourite browser's certificate into a PEM\n"
"  formatted one that curl can use, do something like this:\n"
"\n"
"    In Netscape, you start with hitting the 'Security' menu button.\n"
"\n"
"    Select 'certificates->yours' and then pick a certificate in the list\n"
"\n"
"    Press the 'Export' button\n"
"\n"
"    enter your PIN code for the certs\n"
"\n"
"    select a proper place to save it\n"
"\n"
, stdout);
 fputs(
"    Run the 'openssl' application to convert the certificate. If you cd to the\n"
"    openssl installation, you can do it like:\n"
"\n"
"     # ./apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile]\n"
"\n"
"    In Firefox, select Options, then Advanced, then the Encryption tab,\n"
"    View Certificates. This opens the Certificate Manager, where you can\n"
"    Export. Be sure to select PEM for the Save as type.\n"
"\n"
"    In Internet Explorer, select Internet Options, then the Content tab, then\n"
, stdout);
 fputs(
"    Certificates. Then you can Export, and depending on the format you may\n"
"    need to convert to PEM.\n"
"\n"
"    In Chrome, select Settings, then Show Advanced Settings. Under HTTPS/SSL\n"
"    select Manage Certificates.\n"
"\n"
"RESUMING FILE TRANSFERS\n"
"\n"
" To continue a file transfer where it was previously aborted, curl supports\n"
" resume on HTTP(S) downloads as well as FTP uploads and downloads.\n"
"\n"
" Continue downloading a document:\n"
"\n"
"        curl -C - -o file ftp://ftp.server.com/path/file\n"
"\n"
, stdout);
 fputs(
" Continue uploading a document(*1):\n"
"\n"
"        curl -C - -T file ftp://ftp.server.com/path/file\n"
"\n"
" Continue downloading a document from a web server(*2):\n"
"\n"
"        curl -C - -o file http://www.server.com/\n"
"\n"
" (*1) = This requires that the FTP server supports the non-standard command\n"
"        SIZE. If it doesn't, curl will say so.\n"
"\n"
" (*2) = This requires that the web server supports at least HTTP/1.1. If it\n"
"        doesn't, curl will say so.\n"
"\n"
"TIME CONDITIONS\n"
"\n"
, stdout);
 fputs(
" HTTP allows a client to specify a time condition for the document it\n"
" requests. It is If-Modified-Since or If-Unmodified-Since. Curl allows you to\n"
" specify them with the -z/--time-cond flag.\n"
"\n"
" For example, you can easily make a download that only gets performed if the\n"
" remote file is newer than a local copy. It would be made like:\n"
"\n"
"        curl -z local.html http://remote.server.com/remote.html\n"
"\n"
" Or you can download a file only if the local file is newer than the remote\n"
, stdout);
 fputs(
" one. Do this by prepending the date string with a '-', as in:\n"
"\n"
"        curl -z -local.html http://remote.server.com/remote.html\n"
"\n"
" You can specify a \"free text\" date as condition. Tell curl to only download\n"
" the file if it was updated since January 12, 2012:\n"
"\n"
"        curl -z \"Jan 12 2012\" http://remote.server.com/remote.html\n"
"\n"
" Curl will then accept a wide range of date formats. You always make the date\n"
" check the other way around by prepending it with a dash '-'.\n"
"\n"
"DICT\n"
"\n"
"  For fun try\n"
"\n"
, stdout);
 fputs(
"        curl dict://dict.org/m:curl\n"
"        curl dict://dict.org/d:heisenbug:jargon\n"
"        curl dict://dict.org/d:daniel:web1913\n"
"\n"
"  Aliases for 'm' are 'match' and 'find', and aliases for 'd' are 'define'\n"
"  and 'lookup'. For example,\n"
"\n"
"        curl dict://dict.org/find:curl\n"
"\n"
"  Commands that break the URL description of the RFC (but not the DICT\n"
"  protocol) are\n"
"\n"
"        curl dict://dict.org/show:db\n"
"        curl dict://dict.org/show:strat\n"
"\n"
, stdout);
 fputs(
"  Authentication is still missing (but this is not required by the RFC)\n"
"\n"
"LDAP\n"
"\n"
"  If you have installed the OpenLDAP library, curl can take advantage of it\n"
"  and offer ldap:// support.\n"
"\n"
"  LDAP is a complex thing and writing an LDAP query is not an easy task. I do\n"
"  advise you to dig up the syntax description for that elsewhere. Two places\n"
"  that might suit you are:\n"
"\n"
"  Netscape's \"Netscape Directory SDK 3.0 for C Programmer's Guide Chapter 10:\n"
"  Working with LDAP URLs\":\n"
, stdout);
 fputs(
"  http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm\n"
"\n"
"  RFC 2255, \"The LDAP URL Format\" http://curl.haxx.se/rfc/rfc2255.txt\n"
"\n"
"  To show you an example, this is how I can get all people from my local LDAP\n"
"  server that has a certain sub-domain in their email address:\n"
"\n"
"        curl -B \"ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se\"\n"
"\n"
"  If I want the same info in HTML format, I can get it by not using the -B\n"
"  (enforce ASCII) flag.\n"
"\n"
"ENVIRONMENT VARIABLES\n"
"\n"
, stdout);
 fputs(
"  Curl reads and understands the following environment variables:\n"
"\n"
"        http_proxy, HTTPS_PROXY, FTP_PROXY\n"
"\n"
"  They should be set for protocol-specific proxies. General proxy should be\n"
"  set with\n"
"\n"
"        ALL_PROXY\n"
"\n"
"  A comma-separated list of host names that shouldn't go through any proxy is\n"
"  set in (only an asterisk, '*' matches all hosts)\n"
"\n"
"        NO_PROXY\n"
"\n"
"  If the host name matches one of these strings, or the host is within the\n"
, stdout);
 fputs(
"  domain of one of these strings, transactions with that node will not be\n"
"  proxied.\n"
"\n"
"\n"
"  The usage of the -x/--proxy flag overrides the environment variables.\n"
"\n"
"NETRC\n"
"\n"
"  Unix introduced the .netrc concept a long time ago. It is a way for a user\n"
"  to specify name and password for commonly visited FTP sites in a file so\n"
"  that you don't have to type them in each time you visit those sites. You\n"
"  realize this is a big security risk if someone else gets hold of your\n"
, stdout);
 fputs(
"  passwords, so therefore most unix programs won't read this file unless it is\n"
"  only readable by yourself (curl doesn't care though).\n"
"\n"
"  Curl supports .netrc files if told to (using the -n/--netrc and\n"
"  --netrc-optional options). This is not restricted to just FTP,\n"
"  so curl can use it for all protocols where authentication is used.\n"
"\n"
"  A very simple .netrc file could look something like:\n"
"\n"
"        machine curl.haxx.se login iamdaniel password mysecret\n"
"\n"
"CUSTOM OUTPUT\n"
"\n"
, stdout);
 fputs(
"  To better allow script programmers to get to know about the progress of\n"
"  curl, the -w/--write-out option was introduced. Using this, you can specify\n"
"  what information from the previous transfer you want to extract.\n"
"\n"
"  To display the amount of bytes downloaded together with some text and an\n"
"  ending newline:\n"
"\n"
"        curl -w 'We downloaded %{size_download} bytes\\n' www.download.com\n"
"\n"
"KERBEROS FTP TRANSFER\n"
"\n"
"  Curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need\n"
, stdout);
 fputs(
"  the kerberos package installed and used at curl build time for it to be\n"
"  available.\n"
"\n"
"  First, get the krb-ticket the normal way, like with the kinit/kauth tool.\n"
"  Then use curl in way similar to:\n"
"\n"
"        curl --krb private ftp://krb4site.com -u username:fakepwd\n"
"\n"
"  There's no use for a password on the -u switch, but a blank one will make\n"
"  curl ask for one and you already entered the real password to kinit/kauth.\n"
"\n"
"TELNET\n"
"\n"
, stdout);
 fputs(
"  The curl telnet support is basic and very easy to use. Curl passes all data\n"
"  passed to it on stdin to the remote server. Connect to a remote telnet\n"
"  server using a command line similar to:\n"
"\n"
"        curl telnet://remote.server.com\n"
"\n"
"  And enter the data to pass to the server on stdin. The result will be sent\n"
"  to stdout or to the file you specify with -o.\n"
"\n"
"  You might want the -N/--no-buffer option to switch off the buffered output\n"
"  for slow connections or similar.\n"
"\n"
, stdout);
 fputs(
"  Pass options to the telnet protocol negotiation, by using the -t option. To\n"
"  tell the server we use a vt100 terminal, try something like:\n"
"\n"
"        curl -tTTYPE=vt100 telnet://remote.server.com\n"
"\n"
"  Other interesting options for it -t include:\n"
"\n"
"   - XDISPLOC=<X display> Sets the X display location.\n"
"\n"
"   - NEW_ENV=<var,val> Sets an environment variable.\n"
"\n"
"  NOTE: The telnet protocol does not specify any way to login with a specified\n"
, stdout);
 fputs(
"  user and password so curl can't do that automatically. To do that, you need\n"
"  to track when the login prompt is received and send the username and\n"
"  password accordingly.\n"
"\n"
"PERSISTENT CONNECTIONS\n"
"\n"
"  Specifying multiple files on a single command line will make curl transfer\n"
"  all of them, one after the other in the specified order.\n"
"\n"
"  libcurl will attempt to use persistent connections for the transfers so that\n"
"  the second transfer to the same host can use the same connection that was\n"
, stdout);
 fputs(
"  already initiated and was left open in the previous transfer. This greatly\n"
"  decreases connection time for all but the first transfer and it makes a far\n"
"  better use of the network.\n"
"\n"
"  Note that curl cannot use persistent connections for transfers that are used\n"
"  in subsequence curl invokes. Try to stuff as many URLs as possible on the\n"
"  same command line if they are using the same host, as that'll make the\n"
"  transfers faster. If you use an HTTP proxy for file transfers, practically\n"
, stdout);
 fputs(
"  all transfers will be persistent.\n"
"\n"
"MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE\n"
"\n"
"  As is mentioned above, you can download multiple files with one command line\n"
"  by simply adding more URLs. If you want those to get saved to a local file\n"
"  instead of just printed to stdout, you need to add one save option for each\n"
"  URL you specify. Note that this also goes for the -O option (but not\n"
"  --remote-name-all).\n"
"\n"
"  For example: get two files and use -O for the first and a custom file\n"
, stdout);
 fputs(
"  name for the second:\n"
"\n"
"    curl -O http://url.com/file.txt ftp://ftp.com/moo.exe -o moo.jpg\n"
"\n"
"  You can also upload multiple files in a similar fashion:\n"
"\n"
"    curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt\n"
"\n"
"IPv6\n"
"\n"
"  curl will connect to a server with IPv6 when a host lookup returns an IPv6\n"
"  address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6\n"
"  options can specify which address to use when both are available. IPv6\n"
, stdout);
 fputs(
"  addresses can also be specified directly in URLs using the syntax:\n"
"\n"
"    http://[2001:1890:1112:1::20]/overview.html\n"
"\n"
"  When this style is used, the -g option must be given to stop curl from\n"
"  interpreting the square brackets as special globbing characters.  Link local\n"
"  and site local addresses including a scope identifier, such as fe80::1234%1,\n"
"  may also be used, but the scope portion must be numeric and the percent\n"
"  character must be URL escaped. The previous example in an SFTP URL might\n"
, stdout);
 fputs(
"  look like:\n"
"\n"
"    sftp://[fe80::1234%251]/\n"
"\n"
"  IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface\n"
"  or --ftp-port options) should not be URL encoded.\n"
"\n"
"METALINK\n"
"\n"
"  Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way\n"
"  to list multiple URIs and hashes for a file. Curl will make use of the mirrors\n"
"  listed within for failover if there are errors (such as the file or server not\n"
, stdout);
 fputs(
"  being available). It will also verify the hash of the file after the download\n"
"  completes. The Metalink file itself is downloaded and processed in memory and\n"
"  not stored in the local file system.\n"
"\n"
"  Example to use a remote Metalink file:\n"
"\n"
"    curl --metalink http://www.example.com/example.metalink\n"
"\n"
"  To use a Metalink file in the local file system, use FILE protocol (file://):\n"
"\n"
"    curl --metalink file://example.metalink\n"
"\n"
, stdout);
 fputs(
"  Please note that if FILE protocol is disabled, there is no way to use a local\n"
"  Metalink file at the time of this writing. Also note that if --metalink and\n"
"  --include are used together, --include will be ignored. This is because including\n"
"  headers in the response will break Metalink parser and if the headers are included\n"
"  in the file described in Metalink file, hash check will fail.\n"
"\n"
"MAILING LISTS\n"
"\n"
"  For your convenience, we have several open mailing lists to discuss curl,\n"
, stdout);
 fputs(
"  its development and things relevant to this. Get all info at\n"
"  http://curl.haxx.se/mail/. Some of the lists available are:\n"
"\n"
"  curl-users\n"
"\n"
"    Users of the command line tool. How to use it, what doesn't work, new\n"
"    features, related tools, questions, news, installations, compilations,\n"
"    running, porting etc.\n"
"\n"
"  curl-library\n"
"\n"
"    Developers using or developing libcurl. Bugs, extensions, improvements.\n"
"\n"
"  curl-announce\n"
"\n"
, stdout);
 fputs(
"    Low-traffic. Only receives announcements of new public versions. At worst,\n"
"    that makes something like one or two mails per month, but usually only one\n"
"    mail every second month.\n"
"\n"
"  curl-and-php\n"
"\n"
"    Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP\n"
"    with a curl angle.\n"
"\n"
"  curl-and-python\n"
"\n"
"    Python hackers using curl with or without the python binding pycurl.\n"
"\n"
"  Please direct curl questions, feature requests and trouble reports to one of\n"
, stdout);
 fputs(
"  these mailing lists instead of mailing any individual.\n"
, stdout) ;
}
#endif /* USE_MANUAL */
#else
/*
 * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
 * Generation time: Mon Dec  9 18:02:50 2013
 */
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
void hugehelp(void)
{
   fputs(
"                                  _   _ ____  _\n"
"  Project                     ___| | | |  _ \\| |\n"
"                             / __| | | | |_) | |\n"
"                            | (__| |_| |  _ <| |___\n"
"                             \\___|\\___/|_| \\_\\_____|\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"     NAME\n"
"          curl - transfer a URL\n"
"\n"
"     SYNOPSIS\n"
"          curl [options] [URL...]\n"
"\n"
"     DESCRIPTION\n"
, stdout);
 fputs(
"          curl is a tool to transfer data from or to a server, using\n"
"          one of the supported protocols (DICT, FILE, FTP, FTPS,\n"
"          GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S,\n"
"          RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP).  The\n"
"          command is designed to work without user interaction.\n"
"\n"
"          curl offers a busload of useful tricks like proxy support,\n"
"          user authentication, FTP upload, HTTP post, SSL connections,\n"
, stdout);
 fputs(
"          cookies, file transfer resume, Metalink, and more. As you\n"
"          will see below, the number of features will make your head\n"
"          spin!\n"
"\n"
"          curl is powered by libcurl for all transfer-related fea-\n"
"          tures. See libcurl(3) for details.\n"
"\n"
"     URL\n"
"          The URL syntax is protocol-dependent. You'll find a detailed\n"
"          description in RFC 3986.\n"
"\n"
"          You can specify multiple URLs or parts of URLs by writing\n"
"          part sets within braces as in:\n"
"\n"
, stdout);
 fputs(
"           http://site.{one,two,three}.com\n"
"\n"
"          or you can get sequences of alphanumeric series by using []\n"
"          as in:\n"
"\n"
"           ftp://ftp.numericals.com/file[1-100].txt\n"
"           ftp://ftp.numericals.com/file[001-100].txt    (with leading\n"
"          zeros)\n"
"           ftp://ftp.letters.com/file[a-z].txt\n"
"\n"
"          Nested sequences are not supported, but you can use several\n"
"          ones next to each other:\n"
"\n"
"           http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html\n"
"\n"
, stdout);
 fputs(
"          You can specify any amount of URLs on the command line. They\n"
"          will be fetched in a sequential manner in the specified\n"
"          order.\n"
"\n"
"          You can specify a step counter for the ranges to get every\n"
"          Nth number or letter:\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"           http://www.numericals.com/file[1-100:10].txt\n"
"           http://www.letters.com/file[a-z:2].txt\n"
"\n"
, stdout);
 fputs(
"          If you specify URL without protocol:// prefix, curl will\n"
"          attempt to guess what protocol you might want. It will then\n"
"          default to HTTP but try other protocols based on often-used\n"
"          host name prefixes. For example, for host names starting\n"
"          with \"ftp.\" curl will assume you want to speak FTP.\n"
"\n"
"          curl will do its best to use what you pass to it as a URL.\n"
"          It is not trying to validate it as a syntactically correct\n"
, stdout);
 fputs(
"          URL by any means but is instead very liberal with what it\n"
"          accepts.\n"
"\n"
"          curl will attempt to re-use connections for multiple file\n"
"          transfers, so that getting many files from the same server\n"
"          will not do multiple connects / handshakes. This improves\n"
"          speed. Of course this is only done on files specified on a\n"
"          single command line and cannot be used between separate curl\n"
"          invokes.\n"
"\n"
"     PROGRESS METER\n"
, stdout);
 fputs(
"          curl normally displays a progress meter during operations,\n"
"          indicating the amount of transferred data, transfer speeds\n"
"          and estimated time left, etc.\n"
"\n"
"          curl displays this data to the terminal by default, so if\n"
"          you invoke curl to do an operation and it is about to write\n"
"          data to the terminal, it disables the progress meter as oth-\n"
"          erwise it would mess up the output mixing progress meter and\n"
"          response data.\n"
"\n"
, stdout);
 fputs(
"          If you want a progress meter for HTTP POST or PUT requests,\n"
"          you need to redirect the response output to a file, using\n"
"          shell redirect (>), -o [file] or similar.\n"
"\n"
"          It is not the same case for FTP upload as that operation\n"
"          does not spit out any response data to the terminal.\n"
"\n"
"          If you prefer a progress \"bar\" instead of the regular meter,\n"
"          -# is your friend.\n"
"\n"
"     OPTIONS\n"
, stdout);
 fputs(
"          Options start with one or two dashes. Many of the options\n"
"          require an addition value next to it.\n"
"\n"
"          The short \"single-dash\" form of the options, -d for example,\n"
"          may be used with or without a space between it and its\n"
"          value, although a space is a recommended separator. The long\n"
"          \"double-dash\" form, --data for example, requires a space\n"
"          between it and its value.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"          Short version options that don't need any additional values\n"
"          can be used immediately next to each other, like for example\n"
"          you can specify all the options -O, -L and -v at once as\n"
"          -OLv.\n"
"\n"
"          In general, all boolean options are enabled with --option\n"
"          and yet again disabled with --no-option. That is, you use\n"
"          the exact same option name but prefix it with \"no-\". How-\n"
"          ever, in this list we mostly only list and show the --option\n"
, stdout);
 fputs(
"          version of them. (This concept with --no options was added\n"
"          in 7.19.0. Previously most options were toggled on/off on\n"
"          repeated use of the same command line option.)\n"
"\n"
"          -#, --progress-bar\n"
"               Make curl display progress as a simple progress bar\n"
"               instead of the standard, more informational, meter.\n"
"\n"
"          -0, --http1.0\n"
"               (HTTP) Tells curl to use HTTP version 1.0 instead of\n"
, stdout);
 fputs(
"               using its internally preferred: HTTP 1.1.\n"
"\n"
"          --http1.1\n"
"               (HTTP) Tells curl to use HTTP version 1.1. This is the\n"
"               internal default version. (Added in 7.33.0)\n"
"\n"
"          --http2.0\n"
"               (HTTP) Tells curl to issue its requests using HTTP 2.0.\n"
"               This requires that the underlying libcurl was built to\n"
"               support it. (Added in 7.33.0)\n"
"\n"
"          -1, --tlsv1\n"
, stdout);
 fputs(
"               (SSL) Forces curl to use TLS version 1 when negotiating\n"
"               with a remote TLS server.\n"
"\n"
"          -2, --sslv2\n"
"               (SSL) Forces curl to use SSL version 2 when negotiating\n"
"               with a remote SSL server.\n"
"\n"
"          -3, --sslv3\n"
"               (SSL) Forces curl to use SSL version 3 when negotiating\n"
"               with a remote SSL server.\n"
"\n"
"          -4, --ipv4\n"
"               If curl is capable of resolving an address to multiple\n"
, stdout);
 fputs(
"               IP versions (which it is if it is IPv6-capable), this\n"
"               option tells curl to resolve names to IPv4 addresses\n"
"               only.\n"
"\n"
"          -6, --ipv6\n"
"               If curl is capable of resolving an address to multiple\n"
"               IP versions (which it is if it is IPv6-capable), this\n"
"               option tells curl to resolve names to IPv6 addresses\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               only.\n"
"\n"
, stdout);
 fputs(
"          -a, --append\n"
"               (FTP/SFTP) When used in an upload, this will tell curl\n"
"               to append to the target file instead of overwriting it.\n"
"               If the file doesn't exist, it will be created.  Note\n"
"               that this flag is ignored by some SSH servers (includ-\n"
"               ing OpenSSH).\n"
"\n"
"          -A, --user-agent <agent string>\n"
"               (HTTP) Specify the User-Agent string to send to the\n"
, stdout);
 fputs(
"               HTTP server. Some badly done CGIs fail if this field\n"
"               isn't set to \"Mozilla/4.0\". To encode blanks in the\n"
"               string, surround the string with single quote marks.\n"
"               This can also be set with the -H, --header option of\n"
"               course.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --anyauth\n"
"               (HTTP) Tells curl to figure out authentication method\n"
, stdout);
 fputs(
"               by itself, and use the most secure one the remote site\n"
"               claims to support. This is done by first doing a\n"
"               request and checking the response-headers, thus possi-\n"
"               bly inducing an extra network round-trip. This is used\n"
"               instead of setting a specific authentication method,\n"
"               which you can do with --basic, --digest, --ntlm, and\n"
"               --negotiate.\n"
"\n"
, stdout);
 fputs(
"               Note that using --anyauth is not recommended if you do\n"
"               uploads from stdin, since it may require data to be\n"
"               sent twice and then the client must be able to rewind.\n"
"               If the need should arise when uploading from stdin, the\n"
"               upload operation will fail.\n"
"\n"
"          -b, --cookie <name=data>\n"
"               (HTTP) Pass the data to the HTTP server as a cookie. It\n"
"               is supposedly the data previously received from the\n"
, stdout);
 fputs(
"               server in a \"Set-Cookie:\" line.  The data should be in\n"
"               the format \"NAME1=VALUE1; NAME2=VALUE2\".\n"
"\n"
"               If no '=' symbol is used in the line, it is treated as\n"
"               a filename to use to read previously stored cookie\n"
"               lines from, which should be used in this session if\n"
"               they match. Using this method also activates the\n"
"               \"cookie parser\" which will make curl record incoming\n"
, stdout);
 fputs(
"               cookies too, which may be handy if you're using this in\n"
"               combination with the -L, --location option. The file\n"
"               format of the file to read cookies from should be plain\n"
"               HTTP headers or the Netscape/Mozilla cookie file for-\n"
"               mat.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               NOTE that the file specified with -b, --cookie is only\n"
, stdout);
 fputs(
"               used as input. No cookies will be stored in the file.\n"
"               To store cookies, use the -c, --cookie-jar option or\n"
"               you could even save the HTTP headers to a file using\n"
"               -D, --dump-header!\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -B, --use-ascii\n"
"               (FTP/LDAP) Enable ASCII transfer. For FTP, this can\n"
"               also be enforced by using an URL that ends with\n"
, stdout);
 fputs(
"               \";type=A\". This option causes data sent to stdout to be\n"
"               in text mode for win32 systems.\n"
"\n"
"          --basic\n"
"               (HTTP) Tells curl to use HTTP Basic authentication.\n"
"               This is the default and this option is usually point-\n"
"               less, unless you use it to override a previously set\n"
"               option that sets a different authentication method\n"
"               (such as --ntlm, --digest, or --negotiate).\n"
"\n"
, stdout);
 fputs(
"          -c, --cookie-jar <file name>\n"
"               (HTTP) Specify to which file you want curl to write all\n"
"               cookies after a completed operation. Curl writes all\n"
"               cookies previously read from a specified file as well\n"
"               as all cookies received from remote server(s). If no\n"
"               cookies are known, no file will be written. The file\n"
"               will be written using the Netscape cookie file format.\n"
, stdout);
 fputs(
"               If you set the file name to a single dash, \"-\", the\n"
"               cookies will be written to stdout.\n"
"\n"
"               This command line option will activate the cookie\n"
"               engine that makes curl record and use cookies. Another\n"
"               way to activate it is to use the -b, --cookie option.\n"
"               If the cookie jar can't be created or written to, the\n"
"               whole curl operation won't fail or even report an error\n"
, stdout);
 fputs(
"               clearly. Using -v will get a warning displayed, but\n"
"               that is the only visible feedback you get about this\n"
"               possibly lethal situation.\n"
"\n"
"               If this option is used several times, the last speci-\n"
"               fied file name will be used.\n"
"\n"
"          -C, --continue-at <offset>\n"
"               Continue/Resume a previous file transfer at the given\n"
"               offset. The given offset is the exact number of bytes\n"
, stdout);
 fputs(
"               that will be skipped, counting from the beginning of\n"
"               the source file before it is transferred to the desti-\n"
"               nation.  If used with uploads, the FTP server command\n"
"               SIZE will not be used by curl.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               Use \"-C -\" to tell curl to automatically find out\n"
"               where/how to resume the transfer. It then uses the\n"
, stdout);
 fputs(
"               given output/input files to figure that out.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --ciphers <list of ciphers>\n"
"               (SSL) Specifies which ciphers to use in the connection.\n"
"               The list of ciphers must specify valid ciphers. Read up\n"
"               on SSL cipher list details on this URL:\n"
"               http://www.openssl.org/docs/apps/ciphers.html\n"
"\n"
, stdout);
 fputs(
"               NSS ciphers are done differently than OpenSSL and\n"
"               GnuTLS. The full list of NSS ciphers is in the NSSCi-\n"
"               pherSuite entry at this URL:\n"
"               http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --compressed\n"
"               (HTTP) Request a compressed response using one of the\n"
, stdout);
 fputs(
"               algorithms curl supports, and save the uncompressed\n"
"               document.  If this option is used and the server sends\n"
"               an unsupported encoding, curl will report an error.\n"
"\n"
"          --connect-timeout <seconds>\n"
"               Maximum time in seconds that you allow the connection\n"
"               to the server to take.  This only limits the connection\n"
"               phase, once curl has connected this option is of no\n"
, stdout);
 fputs(
"               more use.  Since 7.32.0, this option accepts decimal\n"
"               values, but the actual timeout will decrease in accu-\n"
"               racy as the specified timeout increases in decimal pre-\n"
"               cision. See also the -m, --max-time option.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --create-dirs\n"
"               When used in conjunction with the -o option, curl will\n"
, stdout);
 fputs(
"               create the necessary local directory hierarchy as\n"
"               needed. This option creates the dirs mentioned with the\n"
"               -o option, nothing else. If the -o file name uses no\n"
"               dir or if the dirs it mentions already exist, no dir\n"
"               will be created.\n"
"\n"
"               To create remote directories when using FTP or SFTP,\n"
"               try --ftp-create-dirs.\n"
"\n"
"          --crlf\n"
"               (FTP) Convert LF to CRLF in upload. Useful for MVS\n"
"\n"
, stdout);
 fputs(
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               (OS/390).\n"
"\n"
"          --crlfile <file>\n"
"               (HTTPS/FTPS) Provide a file using PEM format with a\n"
"               Certificate Revocation List that may specify peer cer-\n"
"               tificates that are to be considered revoked.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"               (Added in 7.19.7)\n"
"          -d, --data <data>\n"
, stdout);
 fputs(
"               (HTTP) Sends the specified data in a POST request to\n"
"               the HTTP server, in the same way that a browser does\n"
"               when a user has filled in an HTML form and presses the\n"
"               submit button. This will cause curl to pass the data to\n"
"               the server using the content-type application/x-www-\n"
"               form-urlencoded.  Compare to -F, --form.\n"
"\n"
"               -d, --data is the same as --data-ascii. To post data\n"
, stdout);
 fputs(
"               purely binary, you should instead use the --data-binary\n"
"               option. To URL-encode the value of a form field you may\n"
"               use --data-urlencode.\n"
"\n"
"               If any of these options is used more than once on the\n"
"               same command line, the data pieces specified will be\n"
"               merged together with a separating &-symbol. Thus, using\n"
"               '-d name=daniel -d skill=lousy' would generate a post\n"
, stdout);
 fputs(
"               chunk that looks like 'name=daniel&skill=lousy'.\n"
"\n"
"               If you start the data with the letter @, the rest\n"
"               should be a file name to read the data from, or - if\n"
"               you want curl to read the data from stdin.  The con-\n"
"               tents of the file must already be URL-encoded. Multiple\n"
"               files can also be specified. Posting data from a file\n"
"               named 'foobar' would thus be done with --data @foobar.\n"
, stdout);
 fputs(
"               When --data is told to read from a file like that, car-\n"
"               riage returns and newlines will be stripped out.\n"
"\n"
"          -D, --dump-header <file>\n"
"               Write the protocol headers to the specified file.\n"
"\n"
"               This option is handy to use when you want to store the\n"
"               headers that an HTTP site sends to you. Cookies from\n"
"               the headers could then be read in a second curl invoca-\n"
, stdout);
 fputs(
"               tion by using the -b, --cookie option! The -c, --\n"
"               cookie-jar option is however a better way to store\n"
"               cookies.\n"
"\n"
"               When used in FTP, the FTP server response lines are\n"
"               considered being \"headers\" and thus are saved there.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --data-ascii <data>\n"
, stdout);
 fputs(
"               See -d, --data.\n"
"\n"
"          --data-binary <data>\n"
"               (HTTP) This posts data exactly as specified with no\n"
"               extra processing whatsoever.\n"
"\n"
"               If you start the data with the letter @, the rest\n"
"               should be a filename.  Data is posted in a similar man-\n"
"               ner as --data-ascii does, except that newlines and car-\n"
"               riage returns are preserved and conversions are never\n"
"               done.\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the ones follow-\n"
"               ing the first will append data as described in -d, --\n"
"               data.\n"
"\n"
"          --data-urlencode <data>\n"
"               (HTTP) This posts data, similar to the other --data\n"
"               options with the exception that this performs URL-\n"
"               encoding. (Added in 7.18.0)\n"
"\n"
"               To be CGI-compliant, the <data> part should begin with\n"
, stdout);
 fputs(
"               a name followed by a separator and a content specifica-\n"
"               tion. The <data> part can be passed to curl using one\n"
"               of the following syntaxes:\n"
"\n"
"               content\n"
"                    This will make curl URL-encode the content and\n"
"                    pass that on. Just be careful so that the content\n"
"                    doesn't contain any = or @ symbols, as that will\n"
"                    then make the syntax match one of the other cases\n"
, stdout);
 fputs(
"                    below!\n"
"\n"
"               =content\n"
"                    This will make curl URL-encode the content and\n"
"                    pass that on. The preceding = symbol is not\n"
"                    included in the data.\n"
"\n"
"               name=content\n"
"                    This will make curl URL-encode the content part\n"
"                    and pass that on. Note that the name part is\n"
"                    expected to be URL-encoded already.\n"
"\n"
"               @filename\n"
, stdout);
 fputs(
"                    This will make curl load data from the given file\n"
"                    (including any newlines), URL-encode that data and\n"
"                    pass it on in the POST.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               name@filename\n"
"                    This will make curl load data from the given file\n"
"                    (including any newlines), URL-encode that data and\n"
"                    pass it on in the POST. The name part gets an\n"
, stdout);
 fputs(
"                    equal sign appended, resulting in\n"
"                    name=urlencoded-file-content. Note that the name\n"
"                    is expected to be URL-encoded already.\n"
"\n"
"          --delegation LEVEL\n"
"               Set LEVEL to tell the server what it is allowed to del-\n"
"               egate when it comes to user credentials. Used with\n"
"               GSS/kerberos.\n"
"\n"
"               none Don't allow any delegation.\n"
"\n"
"               policy\n"
, stdout);
 fputs(
"                    Delegates if and only if the OK-AS-DELEGATE flag\n"
"                    is set in the Kerberos service ticket, which is a\n"
"                    matter of realm policy.\n"
"\n"
"               always\n"
"                    Unconditionally allow the server to delegate.\n"
"\n"
"          --digest\n"
"               (HTTP) Enables HTTP Digest authentication. This is an\n"
"               authentication scheme that prevents the password from\n"
"               being sent over the wire in clear text. Use this in\n"
, stdout);
 fputs(
"               combination with the normal -u, --user option to set\n"
"               user name and password. See also --ntlm, --negotiate\n"
"               and --anyauth for related options.\n"
"\n"
"               If this option is used several times, only the first\n"
"               one is used.\n"
"\n"
"          --disable-eprt\n"
"               (FTP) Tell curl to disable the use of the EPRT and LPRT\n"
"               commands when doing active FTP transfers. Curl will\n"
, stdout);
 fputs(
"               normally always first attempt to use EPRT, then LPRT\n"
"               before using PORT, but with this option, it will use\n"
"               PORT right away. EPRT and LPRT are extensions to the\n"
"               original FTP protocol, and may not work on all servers,\n"
"               but they enable more functionality in a better way than\n"
"               the traditional PORT command.\n"
"\n"
"               --eprt can be used to explicitly enable EPRT again and\n"
, stdout);
 fputs(
"               --no-eprt is an alias for --disable-eprt.\n"
"\n"
"               Disabling EPRT only changes the active behavior. If you\n"
"               want to switch to passive mode you need to not use -P,\n"
"               --ftp-port or force it with --ftp-pasv.\n"
"\n"
"          --disable-epsv\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               (FTP) Tell curl to disable the use of the EPSV command\n"
"               when doing passive FTP transfers. Curl will normally\n"
, stdout);
 fputs(
"               always first attempt to use EPSV before PASV, but with\n"
"               this option, it will not try using EPSV.\n"
"\n"
"               --epsv can be used to explicitly enable EPSV again and\n"
"               --no-epsv is an alias for --disable-epsv.\n"
"\n"
"               Disabling EPSV only changes the passive behavior. If\n"
"               you want to switch to active mode you need to use -P,\n"
"               --ftp-port.\n"
"\n"
"          --dns-interface <interface>\n"
, stdout);
 fputs(
"               Tell curl to send outgoing DNS requests through <inter-\n"
"               face>. This option is a counterpart to --interface\n"
"               (which does not affect DNS). The supplied string must\n"
"               be an interface name (not an address).\n"
"\n"
"               This option requires that libcurl was built with a\n"
"               resolver backend that supports this operation. The c-\n"
"               ares backend is the only such one. (Added in 7.33.0)\n"
"\n"
, stdout);
 fputs(
"          --dns-ipv4-addr <ip-address>\n"
"               Tell curl to bind to <ip-address> when making IPv4 DNS\n"
"               requests, so that the DNS requests originate from this\n"
"               address. The argument should be a single IPv4 address.\n"
"\n"
"               This option requires that libcurl was built with a\n"
"               resolver backend that supports this operation. The c-\n"
"               ares backend is the only such one.  (Added in 7.33.0)\n"
"\n"
"          --dns-ipv6-addr <ip-address>\n"
, stdout);
 fputs(
"               Tell curl to bind to <ip-address> when making IPv6 DNS\n"
"               requests, so that the DNS requests originate from this\n"
"               address. The argument should be a single IPv6 address.\n"
"\n"
"               This option requires that libcurl was built with a\n"
"               resolver backend that supports this operation. The c-\n"
"               ares backend is the only such one.  (Added in 7.33.0)\n"
"\n"
"          --dns-servers <ip-address,ip-address>\n"
, stdout);
 fputs(
"               Set the list of DNS servers to be used instead of the\n"
"               system default.  The list of IP addresses should be\n"
"               separated with commas. Port numbers may also optionally\n"
"               be given as :<port-number> after each IP address.\n"
"\n"
"               This option requires that libcurl was built with a\n"
"               resolver backend that supports this operation. The c-\n"
"               ares backend is the only such one.  (Added in 7.33.0)\n"
"\n"
, stdout);
 fputs(
"          -e, --referer <URL>\n"
"               (HTTP) Sends the \"Referer Page\" information to the HTTP\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               server. This can also be set with the -H, --header flag\n"
"               of course.  When used with -L, --location you can\n"
"               append \";auto\" to the --referer URL to make curl auto-\n"
"               matically set the previous URL when it follows a Loca-\n"
, stdout);
 fputs(
"               tion: header. The \";auto\" string can be used alone,\n"
"               even if you don't set an initial --referer.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -E, --cert <certificate[:password]>\n"
"               (SSL) Tells curl to use the specified client certifi-\n"
"               cate file when getting a file with HTTPS, FTPS or\n"
"               another SSL-based protocol. The certificate must be in\n"
, stdout);
 fputs(
"               PKCS#12 format if using Secure Transport, or PEM format\n"
"               if using any other engine.  If the optional password\n"
"               isn't specified, it will be queried for on the termi-\n"
"               nal. Note that this option assumes a \"certificate\" file\n"
"               that is the private key and the private certificate\n"
"               concatenated! See --cert and --key to specify them\n"
"               independently.\n"
"\n"
, stdout);
 fputs(
"               If curl is built against the NSS SSL library then this\n"
"               option can tell curl the nickname of the certificate to\n"
"               use within the NSS database defined by the environment\n"
"               variable SSL_DIR (or by default /etc/pki/nssdb). If the\n"
"               NSS PEM PKCS#11 module (libnsspem.so) is available then\n"
"               PEM files may be loaded. If you want to use a file from\n"
"               the current directory, please precede it with \"./\" pre-\n"
, stdout);
 fputs(
"               fix, in order to avoid confusion with a nickname.  If\n"
"               the nickname contains \":\", it needs to be preceded by\n"
"               \"\\\" so that it is not recognized as password delimiter.\n"
"               If the nickname contains \"\\\", it needs to be escaped as\n"
"               \"\\\\\" so that it is not recognized as an escape charac-\n"
"               ter.\n"
"\n"
"               (iOS and Mac OS X only) If curl is built against Secure\n"
, stdout);
 fputs(
"               Transport, then the certificate string can either be\n"
"               the name of a certificate/private key in the system or\n"
"               user keychain, or the path to a PKCS#12-encoded cer-\n"
"               tificate and private key. If you want to use a file\n"
"               from the current directory, please precede it with \"./\"\n"
"               prefix, in order to avoid confusion with a nickname.\n"
"\n"
"               If this option is used several times, the last one will\n"
, stdout);
 fputs(
"               be used.\n"
"\n"
"          --engine <name>\n"
"               Select the OpenSSL crypto engine to use for cipher\n"
"               operations. Use --engine list to print a list of\n"
"               build-time supported engines. Note that not all (or\n"
"               none) of the engines may be available at run-time.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          --environment\n"
"               (RISC OS ONLY) Sets a range of environment variables,\n"
, stdout);
 fputs(
"               using the names the -w option supports, to allow easier\n"
"               extraction of useful information after having run curl.\n"
"\n"
"          --egd-file <file>\n"
"               (SSL) Specify the path name to the Entropy Gathering\n"
"               Daemon socket. The socket is used to seed the random\n"
"               engine for SSL connections. See also the --random-file\n"
"               option.\n"
"\n"
"          --cert-type <type>\n"
"               (SSL) Tells curl what certificate type the provided\n"
, stdout);
 fputs(
"               certificate is in. PEM, DER and ENG are recognized\n"
"               types.  If not specified, PEM is assumed.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --cacert <CA certificate>\n"
"               (SSL) Tells curl to use the specified certificate file\n"
"               to verify the peer. The file may contain multiple CA\n"
"               certificates. The certificate(s) must be in PEM format.\n"
, stdout);
 fputs(
"               Normally curl is built to use a default file for this,\n"
"               so this option is typically used to alter that default\n"
"               file.\n"
"\n"
"               curl recognizes the environment variable named\n"
"               'CURL_CA_BUNDLE' if it is set, and uses the given path\n"
"               as a path to a CA cert bundle. This option overrides\n"
"               that variable.\n"
"\n"
"               The windows version of curl will automatically look for\n"
, stdout);
 fputs(
"               a CA certs file named 'curl-ca-bundle.crt', either in\n"
"               the same directory as curl.exe, or in the Current Work-\n"
"               ing Directory, or in any folder along your PATH.\n"
"\n"
"               If curl is built against the NSS SSL library, the NSS\n"
"               PEM PKCS#11 module (libnsspem.so) needs to be available\n"
"               for this option to work properly.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
, stdout);
 fputs(
"          --capath <CA certificate directory>\n"
"               (SSL) Tells curl to use the specified certificate\n"
"               directory to verify the peer. Multiple paths can be\n"
"               provided by separating them with \":\" (e.g.\n"
"               \"path1:path2:path3\"). The certificates must be in PEM\n"
"               format, and if curl is built against OpenSSL, the\n"
"               directory must have been processed using the c_rehash\n"
, stdout);
 fputs(
"               utility supplied with OpenSSL. Using --capath can allow\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               OpenSSL-powered curl to make SSL-connections much more\n"
"               efficiently than using --cacert if the --cacert file\n"
"               contains many CA certificates.\n"
"\n"
"               If this option is set, the default capath value will be\n"
"               ignored, and if it is used several times, the last one\n"
"               will be used.\n"
"\n"
, stdout);
 fputs(
"          -f, --fail\n"
"               (HTTP) Fail silently (no output at all) on server\n"
"               errors. This is mostly done to better enable scripts\n"
"               etc to better deal with failed attempts. In normal\n"
"               cases when an HTTP server fails to deliver a document,\n"
"               it returns an HTML document stating so (which often\n"
"               also describes why and more). This flag will prevent\n"
"               curl from outputting that and return error 22.\n"
"\n"
, stdout);
 fputs(
"               This method is not fail-safe and there are occasions\n"
"               where non-successful response codes will slip through,\n"
"               especially when authentication is involved (response\n"
"               codes 401 and 407).\n"
"\n"
"          -F, --form <name=content>\n"
"               (HTTP) This lets curl emulate a filled-in form in which\n"
"               a user has pressed the submit button. This causes curl\n"
"               to POST data using the Content-Type multipart/form-data\n"
, stdout);
 fputs(
"               according to RFC 2388. This enables uploading of binary\n"
"               files etc. To force the 'content' part to be a file,\n"
"               prefix the file name with an @ sign. To just get the\n"
"               content part from a file, prefix the file name with the\n"
"               symbol <. The difference between @ and < is then that @\n"
"               makes a file get attached in the post as a file upload,\n"
"               while the < makes a text field and just get the con-\n"
, stdout);
 fputs(
"               tents for that text field from a file.\n"
"\n"
"               Example, to send your password file to the server,\n"
"               where 'password' is the name of the form-field to which\n"
"               /etc/passwd will be the input:\n"
"\n"
"               curl -F password=@/etc/passwd www.mypasswords.com\n"
"\n"
"               To read content from stdin instead of a file, use - as\n"
"               the filename. This goes for both @ and < constructs.\n"
"\n"
, stdout);
 fputs(
"               You can also tell curl what Content-Type to use by\n"
"               using 'type=', in a manner similar to:\n"
"\n"
"               curl -F \"web=@index.html;type=text/html\" url.com\n"
"\n"
"               or\n"
"\n"
"               curl -F \"name=daniel;type=text/foo\" url.com\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               You can also explicitly change the name field of a file\n"
"               upload part by setting filename=, like this:\n"
"\n"
, stdout);
 fputs(
"               curl -F \"file=@localfile;filename=nameinpost\" url.com\n"
"\n"
"               If filename/path contains ',' or ';', it must be quoted\n"
"               by double-quotes like:\n"
"\n"
"               curl -F \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\"\n"
"               url.com\n"
"\n"
"               or\n"
"\n"
"               curl -F 'file=@\"localfile\";filename=\"nameinpost\"'\n"
"               url.com\n"
"\n"
"               Note that if a filename/path is quoted by double-\n"
, stdout);
 fputs(
"               quotes, any double-quote or backslash within the file-\n"
"               name must be escaped by backslash.\n"
"\n"
"               See further examples and details in the MANUAL.\n"
"\n"
"               This option can be used multiple times.\n"
"\n"
"          --ftp-account [data]\n"
"               (FTP) When an FTP server asks for \"account data\" after\n"
"               user name and password has been provided, this data is\n"
"               sent off using the ACCT command. (Added in 7.13.0)\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --ftp-alternative-to-user <command>\n"
"               (FTP) If authenticating with the USER and PASS commands\n"
"               fails, send this command.  When connecting to\n"
"               Tumbleweed's Secure Transport server over FTPS using a\n"
"               client certificate, using \"SITE AUTH\" will tell the\n"
"               server to retrieve the username from the certificate.\n"
, stdout);
 fputs(
"               (Added in 7.15.5)\n"
"          --ftp-create-dirs\n"
"               (FTP/SFTP) When an FTP or SFTP URL/operation uses a\n"
"               path that doesn't currently exist on the server, the\n"
"               standard behavior of curl is to fail. Using this\n"
"               option, curl will instead attempt to create missing\n"
"               directories.\n"
"\n"
"          --ftp-method [method]\n"
"               (FTP) Control what method curl should use to reach a\n"
, stdout);
 fputs(
"               file on an FTP(S) server. The method argument should be\n"
"               one of the following alternatives:\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               multicwd\n"
"                    curl does a single CWD operation for each path\n"
"                    part in the given URL. For deep hierarchies this\n"
"                    means very many commands. This is how RFC 1738\n"
"                    says it should be done. This is the default but\n"
, stdout);
 fputs(
"                    the slowest behavior.\n"
"\n"
"               nocwd\n"
"                    curl does no CWD at all. curl will do SIZE, RETR,\n"
"                    STOR etc and give a full path to the server for\n"
"                    all these commands. This is the fastest behavior.\n"
"\n"
"               singlecwd\n"
"                    curl does one CWD with the full target directory\n"
"                    and then operates on the file \"normally\" (like in\n"
, stdout);
 fputs(
"                    the multicwd case). This is somewhat more stan-\n"
"                    dards compliant than 'nocwd' but without the full\n"
"                    penalty of 'multicwd'.\n"
"          (Added in 7.15.1)\n"
"\n"
"          --ftp-pasv\n"
"               (FTP) Use passive mode for the data connection. Passive\n"
"               is the internal default behavior, but using this option\n"
"               can be used to override a previous -P/-ftp-port option.\n"
"               (Added in 7.11.0)\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, only the first\n"
"               one is used. Undoing an enforced passive really isn't\n"
"               doable but you must then instead enforce the correct\n"
"               -P, --ftp-port again.\n"
"\n"
"               Passive mode means that curl will try the EPSV command\n"
"               first and then PASV, unless --disable-epsv is used.\n"
"\n"
"          --ftp-skip-pasv-ip\n"
"               (FTP) Tell curl to not use the IP address the server\n"
, stdout);
 fputs(
"               suggests in its response to curl's PASV command when\n"
"               curl connects the data connection. Instead curl will\n"
"               re-use the same IP address it already uses for the con-\n"
"               trol connection. (Added in 7.14.2)\n"
"\n"
"               This option has no effect if PORT, EPRT or EPSV is used\n"
"               instead of PASV.\n"
"\n"
"          --ftp-pret\n"
"               (FTP) Tell curl to send a PRET command before PASV (and\n"
, stdout);
 fputs(
"               EPSV). Certain FTP servers, mainly drftpd, require this\n"
"               non-standard command for directory listings as well as\n"
"               up and downloads in PASV mode.  (Added in 7.20.x)\n"
"\n"
"          --ftp-ssl-ccc\n"
"               (FTP) Use CCC (Clear Command Channel) Shuts down the\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               SSL/TLS layer after authenticating. The rest of the\n"
, stdout);
 fputs(
"               control channel communication will be unencrypted. This\n"
"               allows NAT routers to follow the FTP transaction. The\n"
"               default mode is passive. See --ftp-ssl-ccc-mode for\n"
"               other modes.  (Added in 7.16.1)\n"
"\n"
"          --ftp-ssl-ccc-mode [active/passive]\n"
"               (FTP) Use CCC (Clear Command Channel) Sets the CCC\n"
"               mode. The passive mode will not initiate the shutdown,\n"
, stdout);
 fputs(
"               but instead wait for the server to do it, and will not\n"
"               reply to the shutdown from the server. The active mode\n"
"               initiates the shutdown and waits for a reply from the\n"
"               server.  (Added in 7.16.2)\n"
"\n"
"          --ftp-ssl-control\n"
"               (FTP) Require SSL/TLS for the FTP login, clear for\n"
"               transfer.  Allows secure authentication, but non-\n"
"               encrypted data transfers for efficiency.  Fails the\n"
, stdout);
 fputs(
"               transfer if the server doesn't support SSL/TLS.  (Added\n"
"               in 7.16.0) that can still be used but will be removed\n"
"               in a future version.\n"
"\n"
"          --form-string <name=string>\n"
"               (HTTP) Similar to --form except that the value string\n"
"               for the named parameter is used literally. Leading '@'\n"
"               and '<' characters, and the ';type=' string in the\n"
"               value have no special meaning. Use this in preference\n"
, stdout);
 fputs(
"               to --form if there's any possibility that the string\n"
"               value may accidentally trigger the '@' or '<' features\n"
"               of --form.\n"
"\n"
"          -g, --globoff\n"
"               This option switches off the \"URL globbing parser\".\n"
"               When you set this option, you can specify URLs that\n"
"               contain the letters {}[] without having them being\n"
"               interpreted by curl itself. Note that these letters are\n"
, stdout);
 fputs(
"               not normal legal URL contents but they should be\n"
"               encoded according to the URI standard.\n"
"\n"
"          -G, --get\n"
"               When used, this option will make all data specified\n"
"               with -d, --data or --data-binary to be used in an HTTP\n"
"               GET request instead of the POST request that otherwise\n"
"               would be used. The data will be appended to the URL\n"
"               with a '?' separator.\n"
"\n"
, stdout);
 fputs(
"               If used in combination with -I, the POST data will\n"
"               instead be appended to the URL with a HEAD request.\n"
"\n"
"               If this option is used several times, only the first\n"
"               one is used. This is because undoing a GET doesn't make\n"
"               sense, but you should then instead enforce the\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               alternative method you prefer.\n"
"\n"
"          -H, --header <header>\n"
, stdout);
 fputs(
"               (HTTP) Extra header to use when getting a web page. You\n"
"               may specify any number of extra headers. Note that if\n"
"               you should add a custom header that has the same name\n"
"               as one of the internal ones curl would use, your exter-\n"
"               nally set header will be used instead of the internal\n"
"               one. This allows you to make even trickier stuff than\n"
"               curl would normally do. You should not replace inter-\n"
, stdout);
 fputs(
"               nally set headers without knowing perfectly well what\n"
"               you're doing. Remove an internal header by giving a\n"
"               replacement without content on the right side of the\n"
"               colon, as in: -H \"Host:\". If you send the custom header\n"
"               with no-value then its header must be terminated with a\n"
"               semicolon, such as -H \"X-Custom-Header;\" to send \"X-\n"
"               Custom-Header:\".\n"
"\n"
, stdout);
 fputs(
"               curl will make sure that each header you add/replace is\n"
"               sent with the proper end-of-line marker, you should\n"
"               thus not add that as a part of the header content: do\n"
"               not add newlines or carriage returns, they will only\n"
"               mess things up for you.\n"
"\n"
"               See also the -A, --user-agent and -e, --referer\n"
"               options.\n"
"\n"
"               This option can be used multiple times to\n"
, stdout);
 fputs(
"               add/replace/remove multiple headers.\n"
"\n"
"          --hostpubmd5 <md5>\n"
"               (SCP/SFTP) Pass a string containing 32 hexadecimal dig-\n"
"               its. The string should be the 128 bit MD5 checksum of\n"
"               the remote host's public key, curl will refuse the con-\n"
"               nection with the host unless the md5sums match. (Added\n"
"               in 7.17.1)\n"
"\n"
"          --ignore-content-length\n"
"               (HTTP) Ignore the Content-Length header. This is par-\n"
, stdout);
 fputs(
"               ticularly useful for servers running Apache 1.x, which\n"
"               will report incorrect Content-Length for files larger\n"
"               than 2 gigabytes.\n"
"\n"
"          -i, --include\n"
"               (HTTP) Include the HTTP-header in the output. The\n"
"               HTTP-header includes things like server-name, date of\n"
"               the document, HTTP-version and more...\n"
"\n"
"          -I, --head\n"
"               (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-\n"
, stdout);
 fputs(
"               servers feature the command HEAD which this uses to get\n"
"               nothing but the header of a document. When used on an\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               FTP or FILE file, curl displays the file size and last\n"
"               modification time only.\n"
"\n"
"          --interface <name>\n"
"               Perform an operation using a specified interface. You\n"
"               can enter interface name, IP address or host name. An\n"
, stdout);
 fputs(
"               example could look like:\n"
"\n"
"                curl --interface eth0:1 http://www.netscape.com/\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -j, --junk-session-cookies\n"
"               (HTTP) When curl is told to read cookies from a given\n"
"               file, this option will make it discard all \"session\n"
"               cookies\". This will basically have the same effect as\n"
, stdout);
 fputs(
"               if a new session is started. Typical browsers always\n"
"               discard session cookies when they're closed down.\n"
"\n"
"          -J, --remote-header-name\n"
"               (HTTP) This option tells the -O, --remote-name option\n"
"               to use the server-specified Content-Disposition file-\n"
"               name instead of extracting a filename from the URL.\n"
"\n"
"          -k, --insecure\n"
"               (SSL) This option explicitly allows curl to perform\n"
, stdout);
 fputs(
"               \"insecure\" SSL connections and transfers. All SSL con-\n"
"               nections are attempted to be made secure by using the\n"
"               CA certificate bundle installed by default. This makes\n"
"               all connections considered \"insecure\" fail unless -k,\n"
"               --insecure is used.\n"
"\n"
"               See this online resource for further details:\n"
"               http://curl.haxx.se/docs/sslcerts.html\n"
"\n"
"          -K, --config <config file>\n"
, stdout);
 fputs(
"               Specify which config file to read curl arguments from.\n"
"               The config file is a text file in which command line\n"
"               arguments can be written which then will be used as if\n"
"               they were written on the actual command line. Options\n"
"               and their parameters must be specified on the same con-\n"
"               fig file line, separated by whitespace, colon, the\n"
"               equals sign or any combination thereof (however, the\n"
, stdout);
 fputs(
"               preferred separator is the equals sign). If the parame-\n"
"               ter is to contain whitespace, the parameter must be\n"
"               enclosed within quotes. Within double quotes, the fol-\n"
"               lowing escape sequences are available: \\\\, \\\", \\t, \\n,\n"
"               \\r and \\v. A backslash preceding any other letter is\n"
"               ignored. If the first column of a config line is a '#'\n"
"               character, the rest of the line will be treated as a\n"
, stdout);
 fputs(
"               comment. Only write one option per physical line in the\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               config file.\n"
"\n"
"               Specify the filename to -K, --config as '-' to make\n"
"               curl read the file from stdin.\n"
"\n"
"               Note that to be able to specify a URL in the config\n"
"               file, you need to specify it using the --url option,\n"
"               and not by simply writing the URL on its own line. So,\n"
, stdout);
 fputs(
"               it could look similar to this:\n"
"\n"
"               url = \"http://curl.haxx.se/docs/\"\n"
"\n"
"               Long option names can optionally be given in the config\n"
"               file without the initial double dashes.\n"
"\n"
"               When curl is invoked, it always (unless -q is used)\n"
"               checks for a default config file and uses it if found.\n"
"               The default config file is checked for in the following\n"
"               places in this order:\n"
"\n"
, stdout);
 fputs(
"               1) curl tries to find the \"home dir\": It first checks\n"
"               for the CURL_HOME and then the HOME environment vari-\n"
"               ables. Failing that, it uses getpwuid() on UNIX-like\n"
"               systems (which returns the home dir given the current\n"
"               user in your system). On Windows, it then checks for\n"
"               the APPDATA variable, or as a last resort the\n"
"               '%USERPROFILE%\\Application Data'.\n"
"\n"
, stdout);
 fputs(
"               2) On windows, if there is no _curlrc file in the home\n"
"               dir, it checks for one in the same dir the curl exe-\n"
"               cutable is placed. On UNIX-like systems, it will simply\n"
"               try to load .curlrc from the determined home dir.\n"
"\n"
"               # --- Example file ---\n"
"               # this is a comment\n"
"               url = \"curl.haxx.se\"\n"
"               output = \"curlhere.html\"\n"
"               user-agent = \"superagent/1.0\"\n"
"\n"
, stdout);
 fputs(
"               # and fetch another URL too\n"
"               url = \"curl.haxx.se/docs/manpage.html\"\n"
"               -O\n"
"               referer = \"http://nowhereatall.com/\"\n"
"               # --- End of example file ---\n"
"\n"
"               This option can be used multiple times to load multiple\n"
"               config files.\n"
"\n"
"          --keepalive-time <seconds>\n"
"               This option sets the time a connection needs to remain\n"
"               idle before sending keepalive probes and the time\n"
, stdout);
 fputs(
"               between individual keepalive probes. It is currently\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               effective on operating systems offering the\n"
"               TCP_KEEPIDLE and TCP_KEEPINTVL socket options (meaning\n"
"               Linux, recent AIX, HP-UX and more). This option has no\n"
"               effect if --no-keepalive is used. (Added in 7.18.0)\n"
"\n"
"               If this option is used several times, the last one will\n"
, stdout);
 fputs(
"               be used. If unspecified, the option defaults to 60 sec-\n"
"               onds.\n"
"\n"
"          --key <key>\n"
"               (SSL/SSH) Private key file name. Allows you to provide\n"
"               your private key in this separate file.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --key-type <type>\n"
"               (SSL) Private key file type. Specify which type your\n"
, stdout);
 fputs(
"               --key provided private key is. DER, PEM, and ENG are\n"
"               supported. If not specified, PEM is assumed.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --krb <level>\n"
"               (FTP) Enable Kerberos authentication and use. The level\n"
"               must be entered and should be one of 'clear', 'safe',\n"
"               'confidential', or 'private'. Should you use a level\n"
, stdout);
 fputs(
"               that is not one of these, 'private' will instead be\n"
"               used.\n"
"\n"
"               This option requires a library built with kerberos4 or\n"
"               GSSAPI (GSS-Negotiate) support. This is not very com-\n"
"               mon. Use -V, --version to see if your curl supports it.\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -l, --list-only\n"
"               (FTP) When listing an FTP directory, this switch forces\n"
, stdout);
 fputs(
"               a name-only view.  Especially useful if you want to\n"
"               machine-parse the contents of an FTP directory since\n"
"               the normal directory view doesn't use a standard look\n"
"               or format.\n"
"\n"
"               This option causes an FTP NLST command to be sent.\n"
"               Some FTP servers list only files in their response to\n"
"               NLST; they do not include subdirectories and symbolic\n"
"               links.\n"
"\n"
"          -L, --location\n"
"\n"
, stdout);
 fputs(
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               (HTTP/HTTPS) If the server reports that the requested\n"
"               page has moved to a different location (indicated with\n"
"               a Location: header and a 3XX response code), this\n"
"               option will make curl redo the request on the new\n"
"               place. If used together with -i, --include or -I, --\n"
"               head, headers from all requested pages will be shown.\n"
, stdout);
 fputs(
"               When authentication is used, curl only sends its cre-\n"
"               dentials to the initial host. If a redirect takes curl\n"
"               to a different host, it won't be able to intercept the\n"
"               user+password. See also --location-trusted on how to\n"
"               change this. You can limit the amount of redirects to\n"
"               follow by using the --max-redirs option.\n"
"\n"
"               When curl follows a redirect and the request is not a\n"
, stdout);
 fputs(
"               plain GET (for example POST or PUT), it will do the\n"
"               following request with a GET if the HTTP response was\n"
"               301, 302, or 303. If the response code was any other\n"
"               3xx code, curl will re-send the following request using\n"
"               the same unmodified method.\n"
"\n"
"          --libcurl <file>\n"
"               Append this option to any ordinary curl command line,\n"
"               and you will get a libcurl-using C source code written\n"
, stdout);
 fputs(
"               to the file that does the equivalent of what your\n"
"               command-line operation does!\n"
"\n"
"               If this option is used several times, the last given\n"
"               file name will be used. (Added in 7.16.1)\n"
"\n"
"          --limit-rate <speed>\n"
"               Specify the maximum transfer rate you want curl to use.\n"
"               This feature is useful if you have a limited pipe and\n"
"               you'd like your transfer not to use your entire band-\n"
"               width.\n"
"\n"
, stdout);
 fputs(
"               The given speed is measured in bytes/second, unless a\n"
"               suffix is appended.  Appending 'k' or 'K' will count\n"
"               the number as kilobytes, 'm' or M' makes it megabytes,\n"
"               while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m\n"
"               and 1G.\n"
"\n"
"               The given rate is the average speed counted during the\n"
"               entire transfer. It means that curl might use higher\n"
, stdout);
 fputs(
"               transfer speeds in short bursts, but over time it uses\n"
"               no more than the given rate.\n"
"\n"
"               If you also use the -Y, --speed-limit option, that\n"
"               option will take precedence and might cripple the\n"
"               rate-limiting slightly, to help keeping the speed-limit\n"
"               logic working.\n"
"\n"
"               If this option is used several times, the last one will\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"               be used.\n"
"\n"
"          --local-port <num>[-num]\n"
"               Set a preferred number or range of local port numbers\n"
"               to use for the connection(s).  Note that port numbers\n"
"               by nature are a scarce resource that will be busy at\n"
"               times so setting this range to something too narrow\n"
"               might cause unnecessary connection setup failures.\n"
"               (Added in 7.15.2)\n"
"\n"
"          --location-trusted\n"
, stdout);
 fputs(
"               (HTTP/HTTPS) Like -L, --location, but will allow send-\n"
"               ing the name + password to all hosts that the site may\n"
"               redirect to. This may or may not introduce a security\n"
"               breach if the site redirects you to a site to which\n"
"               you'll send your authentication info (which is plain-\n"
"               text in the case of HTTP Basic authentication).\n"
"\n"
"          -m, --max-time <seconds>\n"
, stdout);
 fputs(
"               Maximum time in seconds that you allow the whole opera-\n"
"               tion to take.  This is useful for preventing your batch\n"
"               jobs from hanging for hours due to slow networks or\n"
"               links going down.  Since 7.32.0, this option accepts\n"
"               decimal values, but the actual timeout will decrease in\n"
"               accuracy as the specified timeout increases in decimal\n"
"               precision.  See also the --connect-timeout option.\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --mail-auth <address>\n"
"               (SMTP) Specify a single address. This will be used to\n"
"               specify the authentication address (identity) of a sub-\n"
"               mitted message that is being relayed to another server.\n"
"\n"
"               (Added in 7.25.0)\n"
"\n"
"          --mail-from <address>\n"
"               (SMTP) Specify a single address that the given mail\n"
, stdout);
 fputs(
"               should get sent from.\n"
"\n"
"               (Added in 7.20.0)\n"
"\n"
"          --max-filesize <bytes>\n"
"               Specify the maximum size (in bytes) of a file to down-\n"
"               load. If the file requested is larger than this value,\n"
"               the transfer will not start and curl will return with\n"
"               exit code 63.\n"
"\n"
"               NOTE: The file size is not always known prior to down-\n"
"               load, and for such files this option has no effect even\n"
, stdout);
 fputs(
"               if the file transfer ends up being larger than this\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               given limit. This concerns both FTP and HTTP transfers.\n"
"\n"
"          --mail-rcpt <address>\n"
"               (SMTP) Specify a single address that the given mail\n"
"               should get sent to. This option can be used multiple\n"
"               times to specify many recipients.\n"
"\n"
"               (Added in 7.20.0)\n"
"\n"
"          --max-redirs <num>\n"
, stdout);
 fputs(
"               Set maximum number of redirection-followings allowed.\n"
"               If -L, --location is used, this option can be used to\n"
"               prevent curl from following redirections \"in absurdum\".\n"
"               By default, the limit is set to 50 redirections. Set\n"
"               this option to -1 to make it limitless.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --metalink\n"
, stdout);
 fputs(
"               This option can tell curl to parse and process a given\n"
"               URI as Metalink file (both version 3 and 4 (RFC 5854)\n"
"               are supported) and make use of the mirrors listed\n"
"               within for failover if there are errors (such as the\n"
"               file or server not being available). It will also ver-\n"
"               ify the hash of the file after the download completes.\n"
"               The Metalink file itself is downloaded and processed in\n"
, stdout);
 fputs(
"               memory and not stored in the local file system.\n"
"\n"
"               Example to use a remote Metalink file:\n"
"\n"
"               curl --metalink http://www.example.com/example.metalink\n"
"\n"
"               To use a Metalink file in the local file system, use\n"
"               FILE protocol (file://):\n"
"\n"
"               curl --metalink file://example.metalink\n"
"\n"
"               Please note that if FILE protocol is disabled, there is\n"
"               no way to use a local Metalink file at the time of this\n"
, stdout);
 fputs(
"               writing. Also note that if --metalink and --include are\n"
"               used together, --include will be ignored. This is\n"
"               because including headers in the response will break\n"
"               Metalink parser and if the headers are included in the\n"
"               file described in Metalink file, hash check will fail.\n"
"\n"
"               (Added in 7.27.0, if built against the libmetalink\n"
"               library.)\n"
"\n"
"          -n, --netrc\n"
, stdout);
 fputs(
"               Makes curl scan the .netrc (_netrc on Windows) file in\n"
"               the user's home directory for login name and password.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               This is typically used for FTP on UNIX. If used with\n"
"               HTTP, curl will enable user authentication. See\n"
"               netrc(4) or ftp(1) for details on the file format. Curl\n"
"               will not complain if that file doesn't have the right\n"
, stdout);
 fputs(
"               permissions (it should not be either world- or group-\n"
"               readable). The environment variable \"HOME\" is used to\n"
"               find the home directory.\n"
"\n"
"               A quick and very simple example of how to setup a\n"
"               .netrc to allow curl to FTP to the machine\n"
"               host.domain.com with user name 'myself' and password\n"
"               'secret' should look similar to:\n"
"\n"
"               machine host.domain.com login myself password secret\n"
"\n"
, stdout);
 fputs(
"          -N, --no-buffer\n"
"               Disables the buffering of the output stream. In normal\n"
"               work situations, curl will use a standard buffered out-\n"
"               put stream that will have the effect that it will out-\n"
"               put the data in chunks, not necessarily exactly when\n"
"               the data arrives.  Using this option will disable that\n"
"               buffering.\n"
"\n"
"               Note that this is the negated option name documented.\n"
, stdout);
 fputs(
"               You can thus use --buffer to enforce the buffering.\n"
"\n"
"          --netrc-file\n"
"               This option is similar to --netrc, except that you pro-\n"
"               vide the path (absolute or relative) to the netrc file\n"
"               that Curl should use.  You can only specify one netrc\n"
"               file per invocation. If several --netrc-file options\n"
"               are provided, only the last one will be used.  (Added\n"
"               in 7.21.5)\n"
"\n"
, stdout);
 fputs(
"               This option overrides any use of --netrc as they are\n"
"               mutually exclusive.  It will also abide by --netrc-\n"
"               optional if specified.\n"
"\n"
"          --netrc-optional\n"
"               Very similar to --netrc, but this option makes the\n"
"               .netrc usage optional and not mandatory as the --netrc\n"
"               option does.\n"
"\n"
"          --negotiate\n"
"               (HTTP) Enables GSS-Negotiate authentication. The GSS-\n"
, stdout);
 fputs(
"               Negotiate method was designed by Microsoft and is used\n"
"               in their web applications. It is primarily meant as a\n"
"               support for Kerberos5 authentication but may be also\n"
"               used along with another authentication method. For more\n"
"               information see IETF draft draft-brezak-spnego-http-\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               04.txt.\n"
"\n"
, stdout);
 fputs(
"               If you want to enable Negotiate for your proxy authen-\n"
"               tication, then use --proxy-negotiate.\n"
"\n"
"               This option requires a library built with GSSAPI sup-\n"
"               port. This is not very common. Use -V, --version to see\n"
"               if your version supports GSS-Negotiate.\n"
"\n"
"               When using this option, you must also provide a fake\n"
"               -u, --user option to activate the authentication code\n"
, stdout);
 fputs(
"               properly. Sending a '-u :' is enough as the user name\n"
"               and password from the -u option aren't actually used.\n"
"\n"
"               If this option is used several times, only the first\n"
"               one is used.\n"
"\n"
"          --no-keepalive\n"
"               Disables the use of keepalive messages on the TCP con-\n"
"               nection, as by default curl enables them.\n"
"\n"
"               Note that this is the negated option name documented.\n"
, stdout);
 fputs(
"               You can thus use --keepalive to enforce keepalive.\n"
"\n"
"          --no-sessionid\n"
"               (SSL) Disable curl's use of SSL session-ID caching.  By\n"
"               default all transfers are done using the cache. Note\n"
"               that while nothing should ever get hurt by attempting\n"
"               to reuse SSL session-IDs, there seem to be broken SSL\n"
"               implementations in the wild that may require you to\n"
, stdout);
 fputs(
"               disable this in order for you to succeed. (Added in\n"
"               7.16.0)\n"
"\n"
"               Note that this is the negated option name documented.\n"
"               You can thus use --sessionid to enforce session-ID\n"
"               caching.\n"
"\n"
"          --noproxy <no-proxy-list>\n"
"               Comma-separated list of hosts which do not use a proxy,\n"
"               if one is specified.  The only wildcard is a single *\n"
"               character, which matches all hosts, and effectively\n"
, stdout);
 fputs(
"               disables the proxy. Each name in this list is matched\n"
"               as either a domain which contains the hostname, or the\n"
"               hostname itself. For example, local.com would match\n"
"               local.com, local.com:80, and www.local.com, but not\n"
"               www.notlocal.com.  (Added in 7.19.4).\n"
"\n"
"          --ntlm\n"
"               (HTTP) Enables NTLM authentication. The NTLM authenti-\n"
"               cation method was designed by Microsoft and is used by\n"
, stdout);
 fputs(
"               IIS web servers. It is a proprietary protocol,\n"
"               reverse-engineered by clever people and implemented in\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               curl based on their efforts. This kind of behavior\n"
"               should not be endorsed, you should encourage everyone\n"
"               who uses NTLM to switch to a public and documented\n"
"               authentication method instead, such as Digest.\n"
"\n"
, stdout);
 fputs(
"               If you want to enable NTLM for your proxy authentica-\n"
"               tion, then use --proxy-ntlm.\n"
"\n"
"               This option requires a library built with SSL support.\n"
"               Use -V, --version to see if your curl supports NTLM.\n"
"               If this option is used several times, only the first\n"
"               one is used.\n"
"\n"
"          -o, --output <file>\n"
"               Write output to <file> instead of stdout. If you are\n"
, stdout);
 fputs(
"               using {} or [] to fetch multiple documents, you can use\n"
"               '#' followed by a number in the <file> specifier. That\n"
"               variable will be replaced with the current string for\n"
"               the URL being fetched. Like in:\n"
"\n"
"                 curl http://{one,two}.site.com -o \"file_#1.txt\"\n"
"\n"
"               or use several variables like:\n"
"\n"
"                 curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n"
"\n"
, stdout);
 fputs(
"               You may use this option as many times as the number of\n"
"               URLs you have.\n"
"\n"
"               See also the --create-dirs option to create the local\n"
"               directories dynamically. Specifying the output as '-'\n"
"               (a single dash) will force the output to be done to\n"
"               stdout.\n"
"\n"
"          -O, --remote-name\n"
"               Write output to a local file named like the remote file\n"
"               we get. (Only the file part of the remote file is used,\n"
, stdout);
 fputs(
"               the path is cut off.)\n"
"\n"
"               The remote file name to use for saving is extracted\n"
"               from the given URL, nothing else.\n"
"\n"
"               Consequentially, the file will be saved in the current\n"
"               working directory. If you want the file saved in a dif-\n"
"               ferent directory, make sure you change current working\n"
"               directory before you invoke curl with the -O, --\n"
"               remote-name flag!\n"
"\n"
, stdout);
 fputs(
"               You may use this option as many times as the number of\n"
"               URLs you have.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          --oauth2-bearer\n"
"               (IMAP/POP3/SMTP) Specify the Bearer Token for OAUTH 2.0\n"
"               server authentication.  The Bearer Token is used in\n"
"               conjuction with the user name which can be specified as\n"
"               part of the --url or -u, --user options.\n"
"\n"
, stdout);
 fputs(
"               The Bearer Token and user name are formatted according\n"
"               to RFC 6750.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -p, --proxytunnel\n"
"               When an HTTP proxy is used (-x, --proxy), this option\n"
"               will cause non-HTTP protocols to attempt to tunnel\n"
"               through the proxy instead of merely using it to do\n"
"               HTTP-like operations. The tunnel approach is made with\n"
, stdout);
 fputs(
"               the HTTP proxy CONNECT request and requires that the\n"
"               proxy allows direct connect to the remote port number\n"
"               curl wants to tunnel through to.\n"
"\n"
"          -P, --ftp-port <address>\n"
"               (FTP) Reverses the default initiator/listener roles\n"
"               when connecting with FTP. This switch makes curl use\n"
"               active mode. In practice, curl then tells the server to\n"
"               connect back to the client's specified address and\n"
, stdout);
 fputs(
"               port, while passive mode asks the server to setup an IP\n"
"               address and port for it to connect to. <address> should\n"
"               be one of:\n"
"\n"
"               interface\n"
"                    i.e \"eth0\" to specify which interface's IP address\n"
"                    you want to use (Unix only)\n"
"\n"
"               IP address\n"
"                    i.e \"192.168.10.1\" to specify the exact IP address\n"
"\n"
"               host name\n"
, stdout);
 fputs(
"                    i.e \"my.host.domain\" to specify the machine\n"
"\n"
"               -    make curl pick the same IP address that is already\n"
"                    used for the control connection\n"
"\n"
"          If this option is used several times, the last one will be\n"
"          used. Disable the use of PORT with --ftp-pasv. Disable the\n"
"          attempt to use the EPRT command instead of PORT by using --\n"
"          disable-eprt. EPRT is really PORT++.\n"
"\n"
, stdout);
 fputs(
"          Starting in 7.19.5, you can append \":[start]-[end]\" to the\n"
"          right of the address, to tell curl what TCP port range to\n"
"          use. That means you specify a port range, from a lower to a\n"
"          higher number. A single number works as well, but do note\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          that it increases the risk of failure since the port may not\n"
"          be available.\n"
"\n"
"          --pass <phrase>\n"
, stdout);
 fputs(
"               (SSL/SSH) Passphrase for the private key\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --post301\n"
"               (HTTP) Tells curl to respect RFC 2616/10.3.2 and not\n"
"               convert POST requests into GET requests when following\n"
"               a 301 redirection. The non-RFC behaviour is ubiquitous\n"
"               in web browsers, so curl does the conversion by default\n"
, stdout);
 fputs(
"               to maintain consistency. However, a server may require\n"
"               a POST to remain a POST after such a redirection. This\n"
"               option is meaningful only when using -L, --location\n"
"               (Added in 7.17.1)\n"
"\n"
"          --post302\n"
"               (HTTP) Tells curl to respect RFC 2616/10.3.2 and not\n"
"               convert POST requests into GET requests when following\n"
"               a 302 redirection. The non-RFC behaviour is ubiquitous\n"
, stdout);
 fputs(
"               in web browsers, so curl does the conversion by default\n"
"               to maintain consistency. However, a server may require\n"
"               a POST to remain a POST after such a redirection. This\n"
"               option is meaningful only when using -L, --location\n"
"               (Added in 7.19.1)\n"
"\n"
"          --post303\n"
"               (HTTP) Tells curl to respect RFC 2616/10.3.2 and not\n"
"               convert POST requests into GET requests when following\n"
, stdout);
 fputs(
"               a 303 redirection. The non-RFC behaviour is ubiquitous\n"
"               in web browsers, so curl does the conversion by default\n"
"               to maintain consistency. However, a server may require\n"
"               a POST to remain a POST after such a redirection. This\n"
"               option is meaningful only when using -L, --location\n"
"               (Added in 7.26.0)\n"
"\n"
"          --proto <protocols>\n"
"               Tells curl to use the listed protocols for its initial\n"
, stdout);
 fputs(
"               retrieval. Protocols are evaluated left to right, are\n"
"               comma separated, and are each a protocol name or 'all',\n"
"               optionally prefixed by zero or more modifiers. Avail-\n"
"               able modifiers are:\n"
"\n"
"               +  Permit this protocol in addition to protocols\n"
"                  already permitted (this is the default if no modi-\n"
"                  fier is used).\n"
"\n"
"               -  Deny this protocol, removing it from the list of\n"
, stdout);
 fputs(
"                  protocols already permitted.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               =  Permit only this protocol (ignoring the list already\n"
"                  permitted), though subject to later modification by\n"
"                  subsequent entries in the comma separated list.\n"
"\n"
"               For example:\n"
"\n"
"               --proto -ftps  uses the default protocols, but disables\n"
"                              ftps\n"
"\n"
, stdout);
 fputs(
"               --proto -all,https,+http\n"
"                              only enables http and https\n"
"\n"
"               --proto =http,https\n"
"                              also only enables http and https\n"
"\n"
"               Unknown protocols produce a warning. This allows\n"
"               scripts to safely rely on being able to disable poten-\n"
"               tially dangerous protocols, without relying upon sup-\n"
"               port for that protocol being built into curl to avoid\n"
"               an error.\n"
"\n"
, stdout);
 fputs(
"               This option can be used multiple times, in which case\n"
"               the effect is the same as concatenating the protocols\n"
"               into one instance of the option.\n"
"\n"
"               (Added in 7.20.2)\n"
"\n"
"          --proto-redir <protocols>\n"
"               Tells curl to use the listed protocols after a redi-\n"
"               rect. See --proto for how protocols are represented.\n"
"\n"
"               (Added in 7.20.2)\n"
"\n"
"          --proxy-anyauth\n"
, stdout);
 fputs(
"               Tells curl to pick a suitable authentication method\n"
"               when communicating with the given proxy. This might\n"
"               cause an extra request/response round-trip. (Added in\n"
"               7.13.2)\n"
"\n"
"          --proxy-basic\n"
"               Tells curl to use HTTP Basic authentication when commu-\n"
"               nicating with the given proxy. Use --basic for enabling\n"
"               HTTP Basic with a remote host. Basic is the default\n"
, stdout);
 fputs(
"               authentication method curl uses with proxies.\n"
"\n"
"          --proxy-digest\n"
"               Tells curl to use HTTP Digest authentication when com-\n"
"               municating with the given proxy. Use --digest for\n"
"               enabling HTTP Digest with a remote host.\n"
"\n"
"          --proxy-negotiate\n"
"               Tells curl to use HTTP Negotiate authentication when\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"               communicating with the given proxy. Use --negotiate for\n"
"               enabling HTTP Negotiate with a remote host. (Added in\n"
"               7.17.1)\n"
"\n"
"          --proxy-ntlm\n"
"               Tells curl to use HTTP NTLM authentication when commu-\n"
"               nicating with the given proxy. Use --ntlm for enabling\n"
"               NTLM with a remote host.\n"
"\n"
"          --proxy1.0 <proxyhost[:port]>\n"
"               Use the specified HTTP 1.0 proxy. If the port number is\n"
, stdout);
 fputs(
"               not specified, it is assumed at port 1080.\n"
"\n"
"               The only difference between this and the HTTP proxy\n"
"               option (-x, --proxy), is that attempts to use CONNECT\n"
"               through the proxy will specify an HTTP 1.0 protocol\n"
"               instead of the default HTTP 1.1.\n"
"\n"
"          --pubkey <key>\n"
"               (SSH) Public key file name. Allows you to provide your\n"
"               public key in this separate file.\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -q   If used as the first parameter on the command line, the\n"
"               curlrc config file will not be read and used. See the\n"
"               -K, --config for details on the default config file\n"
"               search path.\n"
"\n"
"          -Q, --quote <command>\n"
"               (FTP/SFTP) Send an arbitrary command to the remote FTP\n"
"               or SFTP server. Quote commands are sent BEFORE the\n"
, stdout);
 fputs(
"               transfer takes place (just after the initial PWD com-\n"
"               mand in an FTP transfer, to be exact). To make commands\n"
"               take place after a successful transfer, prefix them\n"
"               with a dash '-'.  To make commands be sent after curl\n"
"               has changed the working directory, just before the\n"
"               transfer command(s), prefix the command with a '+'\n"
"               (this is only supported for FTP). You may specify any\n"
, stdout);
 fputs(
"               number of commands. If the server returns failure for\n"
"               one of the commands, the entire operation will be\n"
"               aborted. You must send syntactically correct FTP com-\n"
"               mands as RFC 959 defines to FTP servers, or one of the\n"
"               commands listed below to SFTP servers.  This option can\n"
"               be used multiple times. When speaking to an FTP server,\n"
"               prefix the command with an asterisk (*) to make curl\n"
, stdout);
 fputs(
"               continue even if the command fails as by default curl\n"
"               will stop at first failure.\n"
"\n"
"               SFTP is a binary protocol. Unlike for FTP, curl inter-\n"
"               prets SFTP quote commands itself before sending them to\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               the server.  File names may be quoted shell-style to\n"
"               embed spaces or special characters.  Following is the\n"
, stdout);
 fputs(
"               list of all supported SFTP quote commands:\n"
"\n"
"               chgrp group file\n"
"                    The chgrp command sets the group ID of the file\n"
"                    named by the file operand to the group ID speci-\n"
"                    fied by the group operand. The group operand is a\n"
"                    decimal integer group ID.\n"
"\n"
"               chmod mode file\n"
"                    The chmod command modifies the file mode bits of\n"
, stdout);
 fputs(
"                    the specified file. The mode operand is an octal\n"
"                    integer mode number.\n"
"\n"
"               chown user file\n"
"                    The chown command sets the owner of the file named\n"
"                    by the file operand to the user ID specified by\n"
"                    the user operand. The user operand is a decimal\n"
"                    integer user ID.\n"
"\n"
"               ln source_file target_file\n"
"                    The ln and symlink commands create a symbolic link\n"
, stdout);
 fputs(
"                    at the target_file location pointing to the\n"
"                    source_file location.\n"
"\n"
"               mkdir directory_name\n"
"                    The mkdir command creates the directory named by\n"
"                    the directory_name operand.\n"
"\n"
"               pwd  The pwd command returns the absolute pathname of\n"
"                    the current working directory.\n"
"\n"
"               rename source target\n"
"                    The rename command renames the file or directory\n"
, stdout);
 fputs(
"                    named by the source operand to the destination\n"
"                    path named by the target operand.\n"
"\n"
"               rm file\n"
"                    The rm command removes the file specified by the\n"
"                    file operand.\n"
"\n"
"               rmdir directory\n"
"                    The rmdir command removes the directory entry\n"
"                    specified by the directory operand, provided it is\n"
"                    empty.\n"
"\n"
"               symlink source_file target_file\n"
, stdout);
 fputs(
"                    See ln.\n"
"\n"
"          -r, --range <range>\n"
"               (HTTP/FTP/SFTP/FILE) Retrieve a byte range (i.e a\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               partial document) from a HTTP/1.1, FTP or SFTP server\n"
"               or a local FILE. Ranges can be specified in a number of\n"
"               ways.\n"
"\n"
"               0-499     specifies the first 500 bytes\n"
"\n"
"               500-999   specifies the second 500 bytes\n"
"\n"
, stdout);
 fputs(
"               -500      specifies the last 500 bytes\n"
"\n"
"               9500-     specifies the bytes from offset 9500 and for-\n"
"                         ward\n"
"\n"
"               0-0,-1    specifies the first and last byte only(*)(H)\n"
"\n"
"               500-700,600-799\n"
"                         specifies 300 bytes from offset 500(H)\n"
"\n"
"               100-199,500-599\n"
"                         specifies two separate 100-byte ranges(*)(H)\n"
"\n"
"          (*) = NOTE that this will cause the server to reply with a\n"
, stdout);
 fputs(
"          multipart response!\n"
"\n"
"          Only digit characters (0-9) are valid in the 'start' and\n"
"          'stop' fields of the 'start-stop' range syntax. If a non-\n"
"          digit character is given in the range, the server's response\n"
"          will be unspecified, depending on the server's configura-\n"
"          tion.\n"
"\n"
"          You should also be aware that many HTTP/1.1 servers do not\n"
"          have this feature enabled, so that when you attempt to get a\n"
, stdout);
 fputs(
"          range, you'll instead get the whole document.\n"
"\n"
"          FTP and SFTP range downloads only support the simple\n"
"          'start-stop' syntax (optionally with one of the numbers\n"
"          omitted). FTP use depends on the extended FTP command SIZE.\n"
"\n"
"          If this option is used several times, the last one will be\n"
"          used.\n"
"\n"
"          -R, --remote-time\n"
"               When used, this will make curl attempt to figure out\n"
, stdout);
 fputs(
"               the timestamp of the remote file, and if that is avail-\n"
"               able make the local file get that same timestamp.\n"
"\n"
"          --random-file <file>\n"
"               (SSL) Specify the path name to file containing what\n"
"               will be considered as random data. The data is used to\n"
"               seed the random engine for SSL connections.  See also\n"
"               the --egd-file option.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"          --raw\n"
"               (HTTP) When used, it disables all internal HTTP decod-\n"
"               ing of content or transfer encodings and instead makes\n"
"               them passed on unaltered, raw. (Added in 7.16.2)\n"
"\n"
"          --remote-name-all\n"
"               This option changes the default action for all given\n"
"               URLs to be dealt with as if -O, --remote-name were used\n"
"               for each one. So if you want to disable that for a spe-\n"
, stdout);
 fputs(
"               cific URL after --remote-name-all has been used, you\n"
"               must use \"-o -\" or --no-remote-name. (Added in 7.19.0)\n"
"\n"
"          --resolve <host:port:address>\n"
"               Provide a custom address for a specific host and port\n"
"               pair. Using this, you can make the curl requests(s) use\n"
"               a specified address and prevent the otherwise normally\n"
"               resolved address to be used. Consider it a sort of\n"
, stdout);
 fputs(
"               /etc/hosts alternative provided on the command line.\n"
"               The port number should be the number used for the spe-\n"
"               cific protocol the host will be used for. It means you\n"
"               need several entries if you want to provide address for\n"
"               the same host but different ports.\n"
"\n"
"               This option can be used many times to add many host\n"
"               names to resolve.\n"
"               (Added in 7.21.3)\n"
"\n"
"          --retry <num>\n"
, stdout);
 fputs(
"               If a transient error is returned when curl tries to\n"
"               perform a transfer, it will retry this number of times\n"
"               before giving up. Setting the number to 0 makes curl do\n"
"               no retries (which is the default). Transient error\n"
"               means either: a timeout, an FTP 4xx response code or an\n"
"               HTTP 5xx response code.\n"
"\n"
"               When curl is about to retry a transfer, it will first\n"
, stdout);
 fputs(
"               wait one second and then for all forthcoming retries it\n"
"               will double the waiting time until it reaches 10 min-\n"
"               utes which then will be the delay between the rest of\n"
"               the retries.  By using --retry-delay you disable this\n"
"               exponential backoff algorithm. See also --retry-max-\n"
"               time to limit the total time allowed for retries.\n"
"               (Added in 7.12.3)\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --retry-delay <seconds>\n"
"               Make curl sleep this amount of time before each retry\n"
"               when a transfer has failed with a transient error (it\n"
"               changes the default backoff time algorithm between\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               retries). This option is only interesting if --retry is\n"
, stdout);
 fputs(
"               also used. Setting this delay to zero will make curl\n"
"               use the default backoff time.  (Added in 7.12.3)\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --retry-max-time <seconds>\n"
"               The retry timer is reset before the first transfer\n"
"               attempt. Retries will be done as usual (see --retry) as\n"
"               long as the timer hasn't reached this given limit.\n"
, stdout);
 fputs(
"               Notice that if the timer hasn't reached the limit, the\n"
"               request will be made and while performing, it may take\n"
"               longer than this given time period. To limit a single\n"
"               request's maximum time, use -m, --max-time.  Set this\n"
"               option to zero to not timeout retries. (Added in\n"
"               7.12.3)\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -s, --silent\n"
, stdout);
 fputs(
"               Silent or quiet mode. Don't show progress meter or\n"
"               error messages.  Makes Curl mute. It will still output\n"
"               the data you ask for, potentially even to the\n"
"               terminal/stdout unless you redirect it.\n"
"\n"
"          --sasl-ir\n"
"               Enable initial response in SASL authentication.  (Added\n"
"               in 7.31.0)\n"
"\n"
"          -S, --show-error\n"
"               When used with -s it makes curl show an error message\n"
"               if it fails.\n"
"\n"
, stdout);
 fputs(
"          --ssl\n"
"               (FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for the con-\n"
"               nection.  Reverts to a non-secure connection if the\n"
"               server doesn't support SSL/TLS.  See also --ftp-ssl-\n"
"               control and --ssl-reqd for different levels of encryp-\n"
"               tion required. (Added in 7.20.0)\n"
"\n"
"               This option was formerly known as --ftp-ssl (Added in\n"
"               7.11.0). That option name can still be used but will be\n"
, stdout);
 fputs(
"               removed in a future version.\n"
"\n"
"          --ssl-reqd\n"
"               (FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connec-\n"
"               tion.  Terminates the connection if the server doesn't\n"
"               support SSL/TLS. (Added in 7.20.0)\n"
"\n"
"               This option was formerly known as --ftp-ssl-reqd (added\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               in 7.15.5). That option name can still be used but will\n"
, stdout);
 fputs(
"               be removed in a future version.\n"
"\n"
"          --ssl-allow-beast\n"
"               (SSL) This option tells curl to not work around a secu-\n"
"               rity flaw in the SSL3 and TLS1.0 protocols known as\n"
"               BEAST.  If this option isn't used, the SSL layer may\n"
"               use work-arounds known to cause interoperability prob-\n"
"               lems with some older SSL implementations. WARNING: this\n"
"               option loosens the SSL security, and by using this flag\n"
, stdout);
 fputs(
"               you ask for exactly that.  (Added in 7.25.0)\n"
"\n"
"          --socks4 <host[:port]>\n"
"               Use the specified SOCKS4 proxy. If the port number is\n"
"               not specified, it is assumed at port 1080. (Added in\n"
"               7.15.2)\n"
"\n"
"               This option overrides any previous use of -x, --proxy,\n"
"               as they are mutually exclusive.\n"
"\n"
"               Since 7.21.7, this option is superfluous since you can\n"
, stdout);
 fputs(
"               specify a socks4 proxy with -x, --proxy using a\n"
"               socks4:// protocol prefix.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --socks4a <host[:port]>\n"
"               Use the specified SOCKS4a proxy. If the port number is\n"
"               not specified, it is assumed at port 1080. (Added in\n"
"               7.18.0)\n"
"\n"
"               This option overrides any previous use of -x, --proxy,\n"
, stdout);
 fputs(
"               as they are mutually exclusive.\n"
"\n"
"               Since 7.21.7, this option is superfluous since you can\n"
"               specify a socks4a proxy with -x, --proxy using a\n"
"               socks4a:// protocol prefix.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --socks5-hostname <host[:port]>\n"
"               Use the specified SOCKS5 proxy (and let the proxy\n"
"               resolve the host name). If the port number is not spec-\n"
, stdout);
 fputs(
"               ified, it is assumed at port 1080. (Added in 7.18.0)\n"
"\n"
"               This option overrides any previous use of -x, --proxy,\n"
"               as they are mutually exclusive.\n"
"\n"
"               Since 7.21.7, this option is superfluous since you can\n"
"               specify a socks5 hostname proxy with -x, --proxy using\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               a socks5h:// protocol prefix.\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used. (This option was previously wrongly documented\n"
"               and used as --socks without the number appended.)\n"
"\n"
"          --socks5 <host[:port]>\n"
"               Use the specified SOCKS5 proxy - but resolve the host\n"
"               name locally. If the port number is not specified, it\n"
"               is assumed at port 1080.\n"
"\n"
"               This option overrides any previous use of -x, --proxy,\n"
, stdout);
 fputs(
"               as they are mutually exclusive.\n"
"\n"
"               Since 7.21.7, this option is superfluous since you can\n"
"               specify a socks5 proxy with -x, --proxy using a\n"
"               socks5:// protocol prefix.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used. (This option was previously wrongly documented\n"
"               and used as --socks without the number appended.)\n"
"\n"
"               This option (as well as --socks4) does not work with\n"
, stdout);
 fputs(
"               IPV6, FTPS or LDAP.\n"
"\n"
"          --socks5-gssapi-service <servicename>\n"
"               The default service name for a socks server is\n"
"               rcmd/server-fqdn. This option allows you to change it.\n"
"\n"
"               Examples: --socks5 proxy-name --socks5-gssapi-service\n"
"               sockd would use sockd/proxy-name --socks5 proxy-name\n"
"               --socks5-gssapi-service sockd/real-name would use\n"
"               sockd/real-name for cases where the proxy-name does not\n"
, stdout);
 fputs(
"               match the principal name.  (Added in 7.19.4).\n"
"\n"
"          --socks5-gssapi-nec\n"
"               As part of the gssapi negotiation a protection mode is\n"
"               negotiated. RFC 1961 says in section 4.3/4.4 it should\n"
"               be protected, but the NEC reference implementation does\n"
"               not.  The option --socks5-gssapi-nec allows the unpro-\n"
"               tected exchange of the protection mode negotiation.\n"
"               (Added in 7.19.4).\n"
"\n"
, stdout);
 fputs(
"          --stderr <file>\n"
"               Redirect all writes to stderr to the specified file\n"
"               instead. If the file name is a plain '-', it is instead\n"
"               written to stdout.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -t, --telnet-option <OPT=val>\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               Pass options to the telnet protocol. Supported options\n"
"               are:\n"
"\n"
, stdout);
 fputs(
"               TTYPE=<term> Sets the terminal type.\n"
"\n"
"               XDISPLOC=<X display> Sets the X display location.\n"
"\n"
"               NEW_ENV=<var,val> Sets an environment variable.\n"
"\n"
"          -T, --upload-file <file>\n"
"               This transfers the specified local file to the remote\n"
"               URL. If there is no file part in the specified URL,\n"
"               Curl will append the local file name. NOTE that you\n"
"               must use a trailing / on the last directory to really\n"
, stdout);
 fputs(
"               prove to Curl that there is no file name or curl will\n"
"               think that your last directory name is the remote file\n"
"               name to use. That will most likely cause the upload\n"
"               operation to fail. If this is used on an HTTP(S)\n"
"               server, the PUT command will be used.\n"
"\n"
"               Use the file name \"-\" (a single dash) to use stdin\n"
"               instead of a given file.  Alternately, the file name\n"
, stdout);
 fputs(
"               \".\" (a single period) may be specified instead of \"-\"\n"
"               to use stdin in non-blocking mode to allow reading\n"
"               server output while stdin is being uploaded.\n"
"\n"
"               You can specify one -T for each URL on the command\n"
"               line. Each -T + URL pair specifies what to upload and\n"
"               to where. curl also supports \"globbing\" of the -T argu-\n"
"               ment, meaning that you can upload multiple files to a\n"
, stdout);
 fputs(
"               single URL by using the same URL globbing style sup-\n"
"               ported in the URL, like this:\n"
"\n"
"               curl -T \"{file1,file2}\" http://www.uploadtothissite.com\n"
"\n"
"               or even\n"
"\n"
"               curl -T \"img[1-1000].png\"\n"
"               ftp://ftp.picturemania.com/upload/\n"
"\n"
"          --tcp-nodelay\n"
"               Turn on the TCP_NODELAY option. See the\n"
"               curl_easy_setopt(3) man page for details about this\n"
"               option. (Added in 7.11.2)\n"
"\n"
, stdout);
 fputs(
"          --tftp-blksize <value>\n"
"               (TFTP) Set TFTP BLKSIZE option (must be >512). This is\n"
"               the block size that curl will try to use when transfer-\n"
"               ring data to or from a TFTP server. By default 512\n"
"               bytes will be used.\n"
"\n"
"               If this option is used several times, the last one will\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               be used.\n"
"\n"
"               (Added in 7.20.0)\n"
"\n"
, stdout);
 fputs(
"          --tlsauthtype <authtype>\n"
"               Set TLS authentication type. Currently, the only sup-\n"
"               ported option is \"SRP\", for TLS-SRP (RFC 5054). If --\n"
"               tlsuser and --tlspassword are specified but --\n"
"               tlsauthtype is not, then this option defaults to \"SRP\".\n"
"               (Added in 7.21.4)\n"
"\n"
"          --tlsuser <user>\n"
"               Set username for use with the TLS authentication method\n"
"               specified with --tlsauthtype. Requires that --\n"
, stdout);
 fputs(
"               tlspassword also be set.  (Added in 7.21.4)\n"
"\n"
"          --tlspassword <password>\n"
"               Set password for use with the TLS authentication method\n"
"               specified with --tlsauthtype. Requires that --tlsuser\n"
"               also be set.  (Added in 7.21.4)\n"
"\n"
"          --tr-encoding\n"
"               (HTTP) Request a compressed Transfer-Encoding response\n"
"               using one of the algorithms curl supports, and uncom-\n"
"               press the data while receiving it.\n"
"\n"
, stdout);
 fputs(
"               (Added in 7.21.6)\n"
"\n"
"          --trace <file>\n"
"               Enables a full trace dump of all incoming and outgoing\n"
"               data, including descriptive information, to the given\n"
"               output file. Use \"-\" as filename to have the output\n"
"               sent to stdout.\n"
"\n"
"               This option overrides previous uses of -v, --verbose or\n"
"               --trace-ascii.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
, stdout);
 fputs(
"          --trace-ascii <file>\n"
"               Enables a full trace dump of all incoming and outgoing\n"
"               data, including descriptive information, to the given\n"
"               output file. Use \"-\" as filename to have the output\n"
"               sent to stdout.\n"
"\n"
"               This is very similar to --trace, but leaves out the hex\n"
"               part and only shows the ASCII part of the dump. It\n"
"               makes smaller output that might be easier to read for\n"
, stdout);
 fputs(
"               untrained humans.\n"
"\n"
"               This option overrides previous uses of -v, --verbose or\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               --trace.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --trace-time\n"
"               Prepends a time stamp to each trace or verbose line\n"
"               that curl displays.  (Added in 7.14.0)\n"
"\n"
"          -u, --user <user:password;options>\n"
, stdout);
 fputs(
"               Specify the user name, password and optional login\n"
"               options to use for server authentication. Overrides -n,\n"
"               --netrc and --netrc-optional.\n"
"\n"
"               If you simply specify the user name, with or without\n"
"               the login options, curl will prompt for a password.\n"
"\n"
"               If you use an SSPI-enabled curl binary and perform NTLM\n"
"               authentication, you can force curl to select the user\n"
, stdout);
 fputs(
"               name and password from your environment by simply spec-\n"
"               ifying a single colon with this option: \"-u :\" or by\n"
"               specfying the login options on their own, for example\n"
"               \"-u ;auth=NTLM\".\n"
"\n"
"               You can use the optional login options part to specify\n"
"               protocol specific options that may be used during\n"
"               authentication. At present only IMAP, POP3 and SMTP\n"
, stdout);
 fputs(
"               support login options as part of the user login infor-\n"
"               mation. For more information about the login options\n"
"               please see RFC 2384, RFC 5092 and IETF draft draft-\n"
"               earhart-url-smtp-00.txt (Added in 7.31.0).\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -U, --proxy-user <user:password>\n"
"               Specify the user name and password to use for proxy\n"
, stdout);
 fputs(
"               authentication.\n"
"\n"
"               If you use an SSPI-enabled curl binary and do NTLM\n"
"               authentication, you can force curl to pick up the user\n"
"               name and password from your environment by simply spec-\n"
"               ifying a single colon with this option: \"-U :\".\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --url <URL>\n"
"               Specify a URL to fetch. This option is mostly handy\n"
, stdout);
 fputs(
"               when you want to specify URL(s) in a config file.\n"
"\n"
"               This option may be used any number of times. To control\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               where this URL is written, use the -o, --output or the\n"
"               -O, --remote-name options.\n"
"\n"
"          -v, --verbose\n"
"               Makes the fetching more verbose/talkative. Mostly use-\n"
"               ful for debugging. A line starting with '>' means\n"
, stdout);
 fputs(
"               \"header data\" sent by curl, '<' means \"header data\"\n"
"               received by curl that is hidden in normal cases, and a\n"
"               line starting with '*' means additional info provided\n"
"               by curl.\n"
"\n"
"               Note that if you only want HTTP headers in the output,\n"
"               -i, --include might be the option you're looking for.\n"
"\n"
"               If you think this option still doesn't give you enough\n"
, stdout);
 fputs(
"               details, consider using --trace or --trace-ascii\n"
"               instead.\n"
"\n"
"               This option overrides previous uses of --trace-ascii or\n"
"               --trace.\n"
"\n"
"               Use -s, --silent to make curl quiet.\n"
"\n"
"          -w, --write-out <format>\n"
"               Defines what to display on stdout after a completed and\n"
"               successful operation. The format is a string that may\n"
"               contain plain text mixed with any number of variables.\n"
, stdout);
 fputs(
"               The string can be specified as \"string\", to get read\n"
"               from a particular file you specify it \"@filename\" and\n"
"               to tell curl to read the format from stdin you write\n"
"               \"@-\".\n"
"\n"
"               The variables present in the output format will be sub-\n"
"               stituted by the value or text that curl thinks fit, as\n"
"               described below. All variables are specified as\n"
"               %{variable_name} and to output a normal % you just\n"
, stdout);
 fputs(
"               write them as %%. You can output a newline by using \\n,\n"
"               a carriage return with \\r and a tab space with \\t.\n"
"\n"
"               NOTE: The %-symbol is a special symbol in the win32-\n"
"               environment, where all occurrences of % must be doubled\n"
"               when using this option.\n"
"\n"
"               The variables available are:\n"
"\n"
"               content_type   The Content-Type of the requested docu-\n"
"                              ment, if there was any.\n"
"\n"
, stdout);
 fputs(
"               filename_effective\n"
"                              The ultimate filename that curl writes\n"
"                              out to. This is only meaningful if curl\n"
"                              is told to write to a file with the --\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"                              remote-name or --output option. It's\n"
"                              most useful in combination with the --\n"
, stdout);
 fputs(
"                              remote-header-name option. (Added in\n"
"                              7.25.1)\n"
"\n"
"               ftp_entry_path The initial path curl ended up in when\n"
"                              logging on to the remote FTP server.\n"
"                              (Added in 7.15.4)\n"
"\n"
"               http_code      The numerical response code that was\n"
"                              found in the last retrieved HTTP(S) or\n"
"                              FTP(s) transfer. In 7.18.2 the alias\n"
, stdout);
 fputs(
"                              response_code was added to show the same\n"
"                              info.\n"
"\n"
"               http_connect   The numerical code that was found in the\n"
"                              last response (from a proxy) to a curl\n"
"                              CONNECT request. (Added in 7.12.4)\n"
"\n"
"               local_ip       The IP address of the local end of the\n"
"                              most recently done connection - can be\n"
, stdout);
 fputs(
"                              either IPv4 or IPv6 (Added in 7.29.0)\n"
"\n"
"               local_port     The local port number of the most\n"
"                              recently done connection (Added in\n"
"                              7.29.0)\n"
"\n"
"               num_connects   Number of new connects made in the\n"
"                              recent transfer. (Added in 7.12.3)\n"
"\n"
"               num_redirects  Number of redirects that were followed\n"
, stdout);
 fputs(
"                              in the request. (Added in 7.12.3)\n"
"\n"
"               redirect_url   When an HTTP request was made without -L\n"
"                              to follow redirects, this variable will\n"
"                              show the actual URL a redirect would\n"
"                              take you to. (Added in 7.18.2)\n"
"\n"
"               remote_ip      The remote IP address of the most\n"
"                              recently done connection - can be either\n"
, stdout);
 fputs(
"                              IPv4 or IPv6 (Added in 7.29.0)\n"
"\n"
"               remote_port    The remote port number of the most\n"
"                              recently done connection (Added in\n"
"                              7.29.0)\n"
"\n"
"               size_download  The total amount of bytes that were\n"
"                              downloaded.\n"
"\n"
"               size_header    The total amount of bytes of the down-\n"
"                              loaded headers.\n"
"\n"
, stdout);
 fputs(
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               size_request   The total amount of bytes that were sent\n"
"                              in the HTTP request.\n"
"\n"
"               size_upload    The total amount of bytes that were\n"
"                              uploaded.\n"
"\n"
"               speed_download The average download speed that curl\n"
"                              measured for the complete download.\n"
"                              Bytes per second.\n"
"\n"
, stdout);
 fputs(
"               speed_upload   The average upload speed that curl mea-\n"
"                              sured for the complete upload. Bytes per\n"
"                              second.\n"
"\n"
"               ssl_verify_result\n"
"                              The result of the SSL peer certificate\n"
"                              verification that was requested. 0 means\n"
"                              the verification was successful. (Added\n"
"                              in 7.19.0)\n"
"\n"
"               time_appconnect\n"
, stdout);
 fputs(
"                              The time, in seconds, it took from the\n"
"                              start until the SSL/SSH/etc\n"
"                              connect/handshake to the remote host was\n"
"                              completed. (Added in 7.19.0)\n"
"\n"
"               time_connect   The time, in seconds, it took from the\n"
"                              start until the TCP connect to the\n"
"                              remote host (or proxy) was completed.\n"
"\n"
"               time_namelookup\n"
, stdout);
 fputs(
"                              The time, in seconds, it took from the\n"
"                              start until the name resolving was com-\n"
"                              pleted.\n"
"\n"
"               time_pretransfer\n"
"                              The time, in seconds, it took from the\n"
"                              start until the file transfer was just\n"
"                              about to begin. This includes all pre-\n"
"                              transfer commands and negotiations that\n"
, stdout);
 fputs(
"                              are specific to the particular\n"
"                              protocol(s) involved.\n"
"\n"
"               time_redirect  The time, in seconds, it took for all\n"
"                              redirection steps include name lookup,\n"
"                              connect, pretransfer and transfer before\n"
"                              the final transaction was started.\n"
"                              time_redirect shows the complete execu-\n"
, stdout);
 fputs(
"                              tion time for multiple redirections.\n"
"                              (Added in 7.12.3)\n"
"\n"
"               time_starttransfer\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"                              The time, in seconds, it took from the\n"
"                              start until the first byte was just\n"
"                              about to be transferred. This includes\n"
"                              time_pretransfer and also the time the\n"
, stdout);
 fputs(
"                              server needed to calculate the result.\n"
"\n"
"               time_total     The total time, in seconds, that the\n"
"                              full operation lasted. The time will be\n"
"                              displayed with millisecond resolution.\n"
"\n"
"               url_effective  The URL that was fetched last. This is\n"
"                              most meaningful if you've told curl to\n"
"                              follow location: headers.\n"
"\n"
, stdout);
 fputs(
"          If this option is used several times, the last one will be\n"
"          used.\n"
"\n"
"          -x, --proxy <[protocol://][user:password@]proxyhost[:port]>\n"
"               Use the specified proxy.\n"
"\n"
"               The proxy string can be specified with a protocol://\n"
"               prefix to specify alternative proxy protocols. Use\n"
"               socks4://, socks4a://, socks5:// or socks5h:// to\n"
"               request the specific SOCKS version to be used. No pro-\n"
, stdout);
 fputs(
"               tocol specified, http:// and all others will be treated\n"
"               as HTTP proxies. (The protocol support was added in\n"
"               curl 7.21.7)\n"
"\n"
"               If the port number is not specified in the proxy\n"
"               string, it is assumed to be 1080.\n"
"\n"
"               This option overrides existing environment variables\n"
"               that set the proxy to use. If there's an environment\n"
"               variable setting a proxy, you can set proxy to \"\" to\n"
, stdout);
 fputs(
"               override it.\n"
"\n"
"               All operations that are performed over an HTTP proxy\n"
"               will transparently be converted to HTTP. It means that\n"
"               certain protocol specific operations might not be\n"
"               available. This is not the case if you can tunnel\n"
"               through the proxy, as one with the -p, --proxytunnel\n"
"               option.\n"
"\n"
"               User and password that might be provided in the proxy\n"
, stdout);
 fputs(
"               string are URL decoded by curl. This allows you to pass\n"
"               in special characters such as @ by using %40 or pass in\n"
"               a colon with %3a.\n"
"\n"
"               The proxy host can be specified the exact same way as\n"
"               the proxy environment variables, including the protocol\n"
"               prefix (http://) and the embedded user + password.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -X, --request <command>\n"
"               (HTTP) Specifies a custom request method to use when\n"
"               communicating with the HTTP server.  The specified\n"
"               request will be used instead of the method otherwise\n"
"               used (which defaults to GET). Read the HTTP 1.1 speci-\n"
"               fication for details and explanations. Common addi-\n"
, stdout);
 fputs(
"               tional HTTP requests include PUT and DELETE, but\n"
"               related technologies like WebDAV offers PROPFIND, COPY,\n"
"               MOVE and more.\n"
"\n"
"               Normally you don't need this option. All sorts of GET,\n"
"               HEAD, POST and PUT requests are rather invoked by using\n"
"               dedicated command line options.\n"
"\n"
"               This option only changes the actual word used in the\n"
"               HTTP request, it does not alter the way curl behaves.\n"
, stdout);
 fputs(
"               So for example if you want to make a proper HEAD\n"
"               request, using -X HEAD will not suffice. You need to\n"
"               use the -I, --head option.\n"
"\n"
"               (FTP) Specifies a custom FTP command to use instead of\n"
"               LIST when doing file lists with FTP.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          --xattr\n"
"               When saving output to a file, this option tells curl to\n"
, stdout);
 fputs(
"               store certain file metadata in extended file\n"
"               attributes. Currently, the URL is stored in the\n"
"               xdg.origin.url attribute and, for HTTP, the content\n"
"               type is stored in the mime_type attribute. If the file\n"
"               system does not support extended attributes, a warning\n"
"               is issued.\n"
"\n"
"          -y, --speed-time <time>\n"
"               If a download is slower than speed-limit bytes per sec-\n"
, stdout);
 fputs(
"               ond during a speed-time period, the download gets\n"
"               aborted. If speed-time is used, the default speed-limit\n"
"               will be 1 unless set with -Y.\n"
"\n"
"               This option controls transfers and thus will not affect\n"
"               slow connects etc. If this is a concern for you, try\n"
"               the --connect-timeout option.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
, stdout);
 fputs(
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          -Y, --speed-limit <speed>\n"
"               If a download is slower than this given speed (in bytes\n"
"               per second) for speed-time seconds it gets aborted.\n"
"               speed-time is set with -y and is 30 if not set.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -z, --time-cond <date expression>|<file>\n"
, stdout);
 fputs(
"               (HTTP/FTP) Request a file that has been modified later\n"
"               than the given time and date, or one that has been mod-\n"
"               ified before that time. The <date expression> can be\n"
"               all sorts of date strings or if it doesn't match any\n"
"               internal ones, it is taken as a filename and tries to\n"
"               get the modification date (mtime) from <file> instead.\n"
"               See the curl_getdate(3) man pages for date expression\n"
, stdout);
 fputs(
"               details.\n"
"\n"
"               Start the date expression with a dash (-) to make it\n"
"               request for a document that is older than the given\n"
"               date/time, default is a document that is newer than the\n"
"               specified date/time.\n"
"\n"
"               If this option is used several times, the last one will\n"
"               be used.\n"
"\n"
"          -h, --help\n"
"               Usage help.\n"
"\n"
"          -M, --manual\n"
"               Manual. Display the huge help text.\n"
"\n"
, stdout);
 fputs(
"          -V, --version\n"
"               Displays information about curl and the libcurl version\n"
"               it uses.\n"
"\n"
"               The first line includes the full version of curl, lib-\n"
"               curl and other 3rd party libraries linked with the exe-\n"
"               cutable.\n"
"\n"
"               The second line (starts with \"Protocols:\") shows all\n"
"               protocols that libcurl reports to support.\n"
"\n"
"               The third line (starts with \"Features:\") shows specific\n"
, stdout);
 fputs(
"               features libcurl reports to offer. Available features\n"
"               include:\n"
"\n"
"               IPv6 You can use IPv6 with this.\n"
"\n"
"               krb4 Krb4 for FTP is supported.\n"
"\n"
"               SSL  HTTPS and FTPS are supported.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"               libz Automatic decompression of compressed files over\n"
"                    HTTP is supported.\n"
"\n"
"               NTLM NTLM authentication is supported.\n"
"\n"
, stdout);
 fputs(
"               GSS-Negotiate\n"
"                    Negotiate authentication and krb5 for FTP is sup-\n"
"                    ported.\n"
"\n"
"               Debug\n"
"                    This curl uses a libcurl built with Debug. This\n"
"                    enables more error-tracking and memory debugging\n"
"                    etc. For curl-developers only!\n"
"\n"
"               AsynchDNS\n"
"                    This curl uses asynchronous name resolves.\n"
"\n"
"               SPNEGO\n"
, stdout);
 fputs(
"                    SPNEGO Negotiate authentication is supported.\n"
"\n"
"               Largefile\n"
"                    This curl supports transfers of large files, files\n"
"                    larger than 2GB.\n"
"\n"
"               IDN  This curl supports IDN - international domain\n"
"                    names.\n"
"\n"
"               SSPI SSPI is supported. If you use NTLM and set a blank\n"
"                    user name, curl will authenticate with your cur-\n"
"                    rent user and password.\n"
"\n"
, stdout);
 fputs(
"               TLS-SRP\n"
"                    SRP (Secure Remote Password) authentication is\n"
"                    supported for TLS.\n"
"\n"
"               Metalink\n"
"                    This curl supports Metalink (both version 3 and 4\n"
"                    (RFC 5854)), which describes mirrors and hashes.\n"
"                    curl will use mirrors for failover if there are\n"
"                    errors (such as the file or server not being\n"
"                    available).\n"
"\n"
"     FILES\n"
"          ~/.curlrc\n"
, stdout);
 fputs(
"               Default config file, see -K, --config for details.\n"
"\n"
"     ENVIRONMENT\n"
"          The environment variables can be specified in lower case or\n"
"          upper case. The lower case version has precedence.\n"
"          http_proxy is an exception as it is only available in lower\n"
"          case.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          Using an environment variable to set the proxy has the same\n"
"          effect as using the --proxy option.\n"
"\n"
, stdout);
 fputs(
"          http_proxy [protocol://]<host>[:port]\n"
"               Sets the proxy server to use for HTTP.\n"
"          HTTPS_PROXY [protocol://]<host>[:port]\n"
"               Sets the proxy server to use for HTTPS.\n"
"\n"
"          [url-protocol]_PROXY [protocol://]<host>[:port]\n"
"               Sets the proxy server to use for [url-protocol], where\n"
"               the protocol is a protocol that curl supports and as\n"
"               specified in a URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP\n"
"               etc.\n"
"\n"
, stdout);
 fputs(
"          ALL_PROXY [protocol://]<host>[:port]\n"
"               Sets the proxy server to use if no protocol-specific\n"
"               proxy is set.\n"
"\n"
"          NO_PROXY <comma-separated list of hosts>\n"
"               list of host names that shouldn't go through any proxy.\n"
"               If set to a asterisk '*' only, it matches all hosts.\n"
"\n"
"     PROXY PROTOCOL PREFIXES\n"
"          Since curl version 7.21.7, the proxy string may be specified\n"
, stdout);
 fputs(
"          with a protocol:// prefix to specify alternative proxy pro-\n"
"          tocols.\n"
"\n"
"          If no protocol is specified in the proxy string or if the\n"
"          string doesn't match a supported one, the proxy will be\n"
"          treated as an HTTP proxy.\n"
"\n"
"          The supported proxy protocol prefixes are as follows:\n"
"\n"
"          socks4://\n"
"               Makes it the equivalent of --socks4\n"
"\n"
"          socks4a://\n"
"               Makes it the equivalent of --socks4a\n"
"\n"
"          socks5://\n"
, stdout);
 fputs(
"               Makes it the equivalent of --socks5\n"
"\n"
"          socks5h://\n"
"               Makes it the equivalent of --socks5-hostname\n"
"\n"
"     EXIT CODES\n"
"          There are a bunch of different error codes and their corre-\n"
"          sponding error messages that may appear during bad condi-\n"
"          tions. At the time of this writing, the exit codes are:\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          1    Unsupported protocol. This build of curl has no support\n"
, stdout);
 fputs(
"               for this protocol.\n"
"\n"
"          2    Failed to initialize.\n"
"\n"
"          3    URL malformed. The syntax was not correct.\n"
"\n"
"          4    A feature or option that was needed to perform the\n"
"               desired request was not enabled or was explicitly dis-\n"
"               abled at build-time. To make curl able to do this, you\n"
"               probably need another build of libcurl!\n"
"\n"
"          5    Couldn't resolve proxy. The given proxy host could not\n"
"               be resolved.\n"
"\n"
, stdout);
 fputs(
"          6    Couldn't resolve host. The given remote host was not\n"
"               resolved.\n"
"\n"
"          7    Failed to connect to host.\n"
"\n"
"          8    FTP weird server reply. The server sent data curl\n"
"               couldn't parse.\n"
"\n"
"          9    FTP access denied. The server denied login or denied\n"
"               access to the particular resource or directory you\n"
"               wanted to reach. Most often you tried to change to a\n"
"               directory that doesn't exist on the server.\n"
"\n"
, stdout);
 fputs(
"          11   FTP weird PASS reply. Curl couldn't parse the reply\n"
"               sent to the PASS request.\n"
"\n"
"          13   FTP weird PASV reply, Curl couldn't parse the reply\n"
"               sent to the PASV request.\n"
"\n"
"          14   FTP weird 227 format. Curl couldn't parse the 227-line\n"
"               the server sent.\n"
"\n"
"          15   FTP can't get host. Couldn't resolve the host IP we got\n"
"               in the 227-line.\n"
"\n"
"          17   FTP couldn't set binary. Couldn't change transfer\n"
, stdout);
 fputs(
"               method to binary.\n"
"\n"
"          18   Partial file. Only a part of the file was transferred.\n"
"\n"
"          19   FTP couldn't download/access the given file, the RETR\n"
"               (or similar) command failed.\n"
"\n"
"          21   FTP quote error. A quote command returned error from\n"
"               the server.\n"
"\n"
"          22   HTTP page not retrieved. The requested url was not\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"               found or returned another error with the HTTP error\n"
"               code being 400 or above. This return code only appears\n"
"               if -f, --fail is used.\n"
"\n"
"          23   Write error. Curl couldn't write data to a local\n"
"               filesystem or similar.\n"
"\n"
"          25   FTP couldn't STOR file. The server denied the STOR\n"
"               operation, used for FTP uploading.\n"
"\n"
"          26   Read error. Various reading problems.\n"
"\n"
, stdout);
 fputs(
"          27   Out of memory. A memory allocation request failed.\n"
"\n"
"          28   Operation timeout. The specified time-out period was\n"
"               reached according to the conditions.\n"
"\n"
"          30   FTP PORT failed. The PORT command failed. Not all FTP\n"
"               servers support the PORT command, try doing a transfer\n"
"               using PASV instead!\n"
"\n"
"          31   FTP couldn't use REST. The REST command failed. This\n"
"               command is used for resumed FTP transfers.\n"
"\n"
, stdout);
 fputs(
"          33   HTTP range error. The range \"command\" didn't work.\n"
"\n"
"          34   HTTP post error. Internal post-request generation\n"
"               error.\n"
"\n"
"          35   SSL connect error. The SSL handshaking failed.\n"
"\n"
"          36   FTP bad download resume. Couldn't continue an earlier\n"
"               aborted download.\n"
"\n"
"          37   FILE couldn't read file. Failed to open the file. Per-\n"
"               missions?\n"
"\n"
"          38   LDAP cannot bind. LDAP bind operation failed.\n"
"\n"
, stdout);
 fputs(
"          39   LDAP search failed.\n"
"\n"
"          41   Function not found. A required LDAP function was not\n"
"               found.\n"
"\n"
"          42   Aborted by callback. An application told curl to abort\n"
"               the operation.\n"
"\n"
"          43   Internal error. A function was called with a bad param-\n"
"               eter.\n"
"\n"
"          45   Interface error. A specified outgoing interface could\n"
"               not be used.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
, stdout);
 fputs(
"          47   Too many redirects. When following redirects, curl hit\n"
"               the maximum amount.\n"
"\n"
"          48   Unknown option specified to libcurl. This indicates\n"
"               that you passed a weird option to curl that was passed\n"
"               on to libcurl and rejected. Read up in the manual!\n"
"\n"
"          49   Malformed telnet option.\n"
"\n"
"          51   The peer's SSL certificate or SSH MD5 fingerprint was\n"
"               not OK.\n"
"\n"
, stdout);
 fputs(
"          52   The server didn't reply anything, which here is consid-\n"
"               ered an error.\n"
"\n"
"          53   SSL crypto engine not found.\n"
"\n"
"          54   Cannot set SSL crypto engine as default.\n"
"\n"
"          55   Failed sending network data.\n"
"\n"
"          56   Failure in receiving network data.\n"
"\n"
"          58   Problem with the local certificate.\n"
"\n"
"          59   Couldn't use specified SSL cipher.\n"
"\n"
"          60   Peer certificate cannot be authenticated with known CA\n"
, stdout);
 fputs(
"               certificates.\n"
"\n"
"          61   Unrecognized transfer encoding.\n"
"\n"
"          62   Invalid LDAP URL.\n"
"\n"
"          63   Maximum file size exceeded.\n"
"\n"
"          64   Requested FTP SSL level failed.\n"
"\n"
"          65   Sending the data requires a rewind that failed.\n"
"\n"
"          66   Failed to initialise SSL Engine.\n"
"\n"
"          67   The user name, password, or similar was not accepted\n"
"               and curl failed to log in.\n"
"\n"
"          68   File not found on TFTP server.\n"
"\n"
, stdout);
 fputs(
"          69   Permission problem on TFTP server.\n"
"\n"
"          70   Out of disk space on TFTP server.\n"
"\n"
"          71   Illegal TFTP operation.\n"
"\n"
"     curl(1)                  (27 July 2012)                   curl(1)\n"
"\n"
"          72   Unknown TFTP transfer ID.\n"
"\n"
"          73   File already exists (TFTP).\n"
"\n"
"          74   No such user (TFTP).\n"
"\n"
"          75   Character conversion failed.\n"
"\n"
"          76   Character conversion functions required.\n"
"\n"
, stdout);
 fputs(
"          77   Problem with reading the SSL CA cert (path? access\n"
"               rights?).\n"
"\n"
"          78   The resource referenced in the URL does not exist.\n"
"\n"
"          79   An unspecified error occurred during the SSH session.\n"
"\n"
"          80   Failed to shut down the SSL connection.\n"
"\n"
"          82   Could not load CRL file, missing or wrong format (added\n"
"               in 7.19.0).\n"
"\n"
"          83   Issuer check failed (added in 7.19.0).\n"
"\n"
"          84   The FTP PRET command failed\n"
"\n"
, stdout);
 fputs(
"          85   RTSP: mismatch of CSeq numbers\n"
"\n"
"          86   RTSP: mismatch of Session Identifiers\n"
"\n"
"          87   unable to parse FTP file list\n"
"\n"
"          88   FTP chunk callback reported error\n"
"\n"
"          XX   More error codes will appear here in future releases.\n"
"               The existing ones are meant to never change.\n"
"\n"
"     AUTHORS / CONTRIBUTORS\n"
"          Daniel Stenberg is the main author, but the whole list of\n"
"          contributors is found in the separate THANKS file.\n"
"\n"
"     WWW\n"
, stdout);
 fputs(
"          http://curl.haxx.se\n"
"\n"
"     FTP\n"
"          ftp://ftp.sunet.se/pub/www/utilities/curl/\n"
"\n"
"     SEE ALSO\n"
"          ftp(1), wget(1)\n"
"\n"
"LATEST VERSION\n"
"\n"
"  You always find news about what's going on as well as the latest versions\n"
"  from the curl web pages, located at:\n"
"\n"
"        http://curl.haxx.se\n"
"\n"
"SIMPLE USAGE\n"
"\n"
"  Get the main page from Netscape's web-server:\n"
"\n"
"        curl http://www.netscape.com/\n"
"\n"
"  Get the README file the user's home directory at funet's ftp-server:\n"
"\n"
, stdout);
 fputs(
"        curl ftp://ftp.funet.fi/README\n"
"\n"
"  Get a web page from a server using port 8000:\n"
"\n"
"        curl http://www.weirdserver.com:8000/\n"
"\n"
"  Get a directory listing of an FTP site:\n"
"\n"
"        curl ftp://cool.haxx.se/\n"
"\n"
"  Get the definition of curl from a dictionary:\n"
"\n"
"        curl dict://dict.org/m:curl\n"
"\n"
"  Fetch two documents at once:\n"
"\n"
"        curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/\n"
"\n"
"  Get a file off an FTPS server:\n"
"\n"
"        curl ftps://files.are.secure.com/secrets.txt\n"
"\n"
, stdout);
 fputs(
"  or use the more appropriate FTPS way to get the same file:\n"
"\n"
"        curl --ftp-ssl ftp://files.are.secure.com/secrets.txt\n"
"\n"
"  Get a file from an SSH server using SFTP:\n"
"\n"
"        curl -u username sftp://shell.example.com/etc/issue\n"
"\n"
"  Get a file from an SSH server using SCP using a private key to authenticate:\n"
"\n"
"        curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \\\n"
"            scp://shell.example.com/~/personal.txt\n"
"\n"
"  Get the main page from an IPv6 web server:\n"
"\n"
, stdout);
 fputs(
"        curl -g \"http://[2001:1890:1112:1::20]/\"\n"
"\n"
"DOWNLOAD TO A FILE\n"
"\n"
"  Get a web page and store in a local file with a specific name:\n"
"\n"
"        curl -o thatpage.html http://www.netscape.com/\n"
"\n"
"  Get a web page and store in a local file, make the local file get the name\n"
"  of the remote document (if no file name part is specified in the URL, this\n"
"  will fail):\n"
"\n"
"        curl -O http://www.netscape.com/index.html\n"
"\n"
"  Fetch two files and store them with their remote names:\n"
"\n"
, stdout);
 fputs(
"        curl -O www.haxx.se/index.html -O curl.haxx.se/download.html\n"
"\n"
"USING PASSWORDS\n"
"\n"
" FTP\n"
"\n"
"   To ftp files using name+passwd, include them in the URL like:\n"
"\n"
"        curl ftp://name:passwd@machine.domain:port/full/path/to/file\n"
"\n"
"   or specify them with the -u flag like\n"
"\n"
"        curl -u name:passwd ftp://machine.domain:port/full/path/to/file\n"
"\n"
" FTPS\n"
"\n"
"   It is just like for FTP, but you may also want to specify and use\n"
"   SSL-specific options for certificates etc.\n"
"\n"
, stdout);
 fputs(
"   Note that using FTPS:// as prefix is the \"implicit\" way as described in the\n"
"   standards while the recommended \"explicit\" way is done by using FTP:// and\n"
"   the --ftp-ssl option.\n"
"\n"
" SFTP / SCP\n"
"\n"
"   This is similar to FTP, but you can specify a private key to use instead of\n"
"   a password. Note that the private key may itself be protected by a password\n"
"   that is unrelated to the login password of the remote system.  If you\n"
"   provide a private key file you must also provide a public key file.\n"
, stdout);
 fputs(
"\n"
" HTTP\n"
"\n"
"   Curl also supports user and password in HTTP URLs, thus you can pick a file\n"
"   like:\n"
"\n"
"        curl http://name:passwd@machine.domain/full/path/to/file\n"
"\n"
"   or specify user and password separately like in\n"
"\n"
"        curl -u name:passwd http://machine.domain/full/path/to/file\n"
"\n"
"   HTTP offers many different methods of authentication and curl supports\n"
"   several: Basic, Digest, NTLM and Negotiate. Without telling which method to\n"
, stdout);
 fputs(
"   use, curl defaults to Basic. You can also ask curl to pick the most secure\n"
"   ones out of the ones that the server accepts for the given URL, by using\n"
"   --anyauth.\n"
"\n"
"   NOTE! According to the URL specification, HTTP URLs can not contain a user\n"
"   and password, so that style will not work when using curl via a proxy, even\n"
"   though curl allows it at other times. When using a proxy, you _must_ use\n"
"   the -u style for user and password.\n"
"\n"
" HTTPS\n"
"\n"
, stdout);
 fputs(
"   Probably most commonly used with private certificates, as explained below.\n"
"\n"
"PROXY\n"
"\n"
" curl supports both HTTP and SOCKS proxy servers, with optional authentication.\n"
" It does not have special support for FTP proxy servers since there are no\n"
" standards for those, but it can still be made to work with many of them. You\n"
" can also use both HTTP and SOCKS proxies to transfer files to and from FTP\n"
" servers.\n"
"\n"
" Get an ftp file using an HTTP proxy named my-proxy that uses port 888:\n"
"\n"
, stdout);
 fputs(
"        curl -x my-proxy:888 ftp://ftp.leachsite.com/README\n"
"\n"
" Get a file from an HTTP server that requires user and password, using the\n"
" same proxy as above:\n"
"\n"
"        curl -u user:passwd -x my-proxy:888 http://www.get.this/\n"
"\n"
" Some proxies require special authentication. Specify by using -U as above:\n"
"\n"
"        curl -U user:passwd -x my-proxy:888 http://www.get.this/\n"
"\n"
" A comma-separated list of hosts and domains which do not use the proxy can\n"
" be specified as:\n"
"\n"
, stdout);
 fputs(
"        curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/\n"
"\n"
" If the proxy is specified with --proxy1.0 instead of --proxy or -x, then\n"
" curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.\n"
"\n"
" curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n"
"\n"
" See also the environment variables Curl supports that offer further proxy\n"
" control.\n"
"\n"
" Most FTP proxy servers are set up to appear as a normal FTP server from the\n"
, stdout);
 fputs(
" client's perspective, with special commands to select the remote FTP server.\n"
" curl supports the -u, -Q and --ftp-account options that can be used to\n"
" set up transfers through many FTP proxies. For example, a file can be\n"
" uploaded to a remote FTP server using a Blue Coat FTP proxy with the\n"
" options:\n"
"\n"
"   curl -u \"Remote-FTP-Username@remote.ftp.server Proxy-Username:Remote-Pass\" \\\n"
"    --ftp-account Proxy-Password --upload-file local-file \\\n"
"    ftp://my-ftp.proxy.server:21/remote/upload/path/\n"
"\n"
, stdout);
 fputs(
" See the manual for your FTP proxy to determine the form it expects to set up\n"
" transfers, and curl's -v option to see exactly what curl is sending.\n"
"\n"
"RANGES\n"
"\n"
"  HTTP 1.1 introduced byte-ranges. Using this, a client can request\n"
"  to get only one or more subparts of a specified document. Curl supports\n"
"  this with the -r flag.\n"
"\n"
"  Get the first 100 bytes of a document:\n"
"\n"
"        curl -r 0-99 http://www.get.this/\n"
"\n"
"  Get the last 500 bytes of a document:\n"
"\n"
"        curl -r -500 http://www.get.this/\n"
"\n"
, stdout);
 fputs(
"  Curl also supports simple ranges for FTP files as well. Then you can only\n"
"  specify start and stop position.\n"
"\n"
"  Get the first 100 bytes of a document using FTP:\n"
"\n"
"        curl -r 0-99 ftp://www.get.this/README\n"
"\n"
"UPLOADING\n"
"\n"
" FTP / FTPS / SFTP / SCP\n"
"\n"
"  Upload all data on stdin to a specified server:\n"
"\n"
"        curl -T - ftp://ftp.upload.com/myfile\n"
"\n"
"  Upload data from a specified file, login with user and password:\n"
"\n"
"        curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile\n"
"\n"
, stdout);
 fputs(
"  Upload a local file to the remote site, and use the local file name at the remote\n"
"  site too:\n"
"\n"
"        curl -T uploadfile -u user:passwd ftp://ftp.upload.com/\n"
"\n"
"  Upload a local file to get appended to the remote file:\n"
"\n"
"        curl -T localfile -a ftp://ftp.upload.com/remotefile\n"
"\n"
"  Curl also supports ftp upload through a proxy, but only if the proxy is\n"
"  configured to allow that kind of tunneling. If it does, you can run curl in\n"
"  a fashion similar to:\n"
"\n"
, stdout);
 fputs(
"        curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n"
"\n"
" HTTP\n"
"\n"
"  Upload all data on stdin to a specified HTTP site:\n"
"\n"
"        curl -T - http://www.upload.com/myfile\n"
"\n"
"  Note that the HTTP server must have been configured to accept PUT before\n"
"  this can be done successfully.\n"
"\n"
"  For other ways to do HTTP data upload, see the POST section below.\n"
"\n"
"VERBOSE / DEBUG\n"
"\n"
"  If curl fails where it isn't supposed to, if the servers don't let you in,\n"
, stdout);
 fputs(
"  if you can't understand the responses: use the -v flag to get verbose\n"
"  fetching. Curl will output lots of info and what it sends and receives in\n"
"  order to let the user see all client-server interaction (but it won't show\n"
"  you the actual data).\n"
"\n"
"        curl -v ftp://ftp.upload.com/\n"
"\n"
"  To get even more details and information on what curl does, try using the\n"
"  --trace or --trace-ascii options with a given file name to log to, like\n"
"  this:\n"
"\n"
"        curl --trace trace.txt www.haxx.se\n"
"\n"
"\n"
, stdout);
 fputs(
"DETAILED INFORMATION\n"
"\n"
"  Different protocols provide different ways of getting detailed information\n"
"  about specific files/documents. To get curl to show detailed information\n"
"  about a single file, you should use -I/--head option. It displays all\n"
"  available info on a single file for HTTP and FTP. The HTTP information is a\n"
"  lot more extensive.\n"
"\n"
"  For HTTP, you can get the header information (the same as -I would show)\n"
"  shown before the data by using -i/--include. Curl understands the\n"
, stdout);
 fputs(
"  -D/--dump-header option when getting files from both FTP and HTTP, and it\n"
"  will then store the headers in the specified file.\n"
"\n"
"  Store the HTTP headers in a separate file (headers.txt in the example):\n"
"\n"
"        curl --dump-header headers.txt curl.haxx.se\n"
"\n"
"  Note that headers stored in a separate file can be very useful at a later\n"
"  time if you want curl to use cookies sent by the server. More about that in\n"
"  the cookies section.\n"
"\n"
"POST (HTTP)\n"
"\n"
, stdout);
 fputs(
"  It's easy to post data using curl. This is done using the -d <data>\n"
"  option.  The post data must be urlencoded.\n"
"\n"
"  Post a simple \"name\" and \"phone\" guestbook.\n"
"\n"
"        curl -d \"name=Rafael%20Sagula&phone=3320780\" \\\n"
"                http://www.where.com/guest.cgi\n"
"\n"
"  How to post a form with curl, lesson #1:\n"
"\n"
"  Dig out all the <input> tags in the form that you want to fill in. (There's\n"
"  a perl program called formfind.pl on the curl site that helps with this).\n"
"\n"
, stdout);
 fputs(
"  If there's a \"normal\" post, you use -d to post. -d takes a full \"post\n"
"  string\", which is in the format\n"
"\n"
"        <variable1>=<data1>&<variable2>=<data2>&...\n"
"\n"
"  The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
"  the data is the contents you want to fill in for the inputs. The data *must*\n"
"  be properly URL encoded. That means you replace space with + and that you\n"
"  replace weird letters with %XX where XX is the hexadecimal representation of\n"
, stdout);
 fputs(
"  the letter's ASCII code.\n"
"\n"
"  Example:\n"
"\n"
"  (page located at http://www.formpost.com/getthis/\n"
"\n"
"        <form action=\"post.cgi\" method=\"post\">\n"
"        <input name=user size=10>\n"
"        <input name=pass type=password size=10>\n"
"        <input name=id type=hidden value=\"blablabla\">\n"
"        <input name=ding value=\"submit\">\n"
"        </form>\n"
"\n"
"  We want to enter user 'foobar' with password '12345'.\n"
"\n"
"  To post to this, you enter a curl command line like:\n"
"\n"
, stdout);
 fputs(
"        curl -d \"user=foobar&pass=12345&id=blablabla&ding=submit\"  (continues)\n"
"          http://www.formpost.com/getthis/post.cgi\n"
"\n"
"\n"
"  While -d uses the application/x-www-form-urlencoded mime-type, generally\n"
"  understood by CGI's and similar, curl also supports the more capable\n"
"  multipart/form-data type. This latter type supports things like file upload.\n"
"\n"
"  -F accepts parameters like -F \"name=contents\". If you want the contents to\n"
, stdout);
 fputs(
"  be read from a file, use <@filename> as contents. When specifying a file,\n"
"  you can also specify the file content type by appending ';type=<mime type>'\n"
"  to the file name. You can also post the contents of several files in one\n"
"  field.  For example, the field name 'coolfiles' is used to send three files,\n"
"  with different content types using the following syntax:\n"
"\n"
"        curl -F \"coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html\" \\\n"
"        http://www.post.com/postit.cgi\n"
"\n"
, stdout);
 fputs(
"  If the content-type is not specified, curl will try to guess from the file\n"
"  extension (it only knows a few), or use the previously specified type (from\n"
"  an earlier file if several files are specified in a list) or else it will\n"
"  use the default type 'application/octet-stream'.\n"
"\n"
"  Emulate a fill-in form with -F. Let's say you fill in three fields in a\n"
"  form. One field is a file name which to post, one field is your name and one\n"
, stdout);
 fputs(
"  field is a file description. We want to post the file we have written named\n"
"  \"cooltext.txt\". To let curl do the posting of this data instead of your\n"
"  favourite browser, you have to read the HTML source of the form page and\n"
"  find the names of the input fields. In our example, the input field names\n"
"  are 'file', 'yourname' and 'filedescription'.\n"
"\n"
"        curl -F \"file=@cooltext.txt\" -F \"yourname=Daniel\" \\\n"
"             -F \"filedescription=Cool text file with cool text inside\" \\\n"
, stdout);
 fputs(
"             http://www.post.com/postit.cgi\n"
"\n"
"  To send two files in one post you can do it in two ways:\n"
"\n"
"  1. Send multiple files in a single \"field\" with a single field name:\n"
"\n"
"        curl -F \"pictures=@dog.gif,cat.gif\"\n"
"\n"
"  2. Send two fields with two field names:\n"
"\n"
"        curl -F \"docpicture=@dog.gif\" -F \"catpicture=@cat.gif\"\n"
"\n"
"  To send a field value literally without interpreting a leading '@'\n"
"  or '<', or an embedded ';type=', use --form-string instead of\n"
, stdout);
 fputs(
"  -F. This is recommended when the value is obtained from a user or\n"
"  some other unpredictable source. Under these circumstances, using\n"
"  -F instead of --form-string would allow a user to trick curl into\n"
"  uploading a file.\n"
"\n"
"REFERRER\n"
"\n"
"  An HTTP request has the option to include information about which address\n"
"  referred it to the actual page.  Curl allows you to specify the\n"
"  referrer to be used on the command line. It is especially useful to\n"
, stdout);
 fputs(
"  fool or trick stupid servers or CGI scripts that rely on that information\n"
"  being available or contain certain data.\n"
"\n"
"        curl -e www.coolsite.com http://www.showme.com/\n"
"\n"
"  NOTE: The Referer: [sic] field is defined in the HTTP spec to be a full URL.\n"
"\n"
"USER AGENT\n"
"\n"
"  An HTTP request has the option to include information about the browser\n"
"  that generated the request. Curl allows it to be specified on the command\n"
"  line. It is especially useful to fool or trick stupid servers or CGI\n"
, stdout);
 fputs(
"  scripts that only accept certain browsers.\n"
"\n"
"  Example:\n"
"\n"
"  curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/\n"
"\n"
"  Other common strings:\n"
"    'Mozilla/3.0 (Win95; I)'     Netscape Version 3 for Windows 95\n"
"    'Mozilla/3.04 (Win95; U)'    Netscape Version 3 for Windows 95\n"
"    'Mozilla/2.02 (OS/2; U)'     Netscape Version 2 for OS/2\n"
"    'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)'           NS for AIX\n"
"    'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)'      NS for Linux\n"
"\n"
, stdout);
 fputs(
"  Note that Internet Explorer tries hard to be compatible in every way:\n"
"    'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)'    MSIE for W95\n"
"\n"
"  Mozilla is not the only possible User-Agent name:\n"
"    'Konqueror/1.0'             KDE File Manager desktop client\n"
"    'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser\n"
"\n"
"COOKIES\n"
"\n"
"  Cookies are generally used by web servers to keep state information at the\n"
"  client's side. The server sets cookies by sending a response line in the\n"
, stdout);
 fputs(
"  headers that looks like 'Set-Cookie: <data>' where the data part then\n"
"  typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n"
"  like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n"
"  path the \"cookie\" should be used for (by specifying \"path=value\"), when the\n"
"  cookie should expire (\"expire=DATE\"), for what domain to use it\n"
"  (\"domain=NAME\") and if it should be used on secure connections only\n"
"  (\"secure\").\n"
"\n"
, stdout);
 fputs(
"  If you've received a page from a server that contains a header like:\n"
"        Set-Cookie: sessionid=boo123; path=\"/foo\";\n"
"\n"
"  it means the server wants that first pair passed on when we get anything in\n"
"  a path beginning with \"/foo\".\n"
"\n"
"  Example, get a page that wants my name passed in a cookie:\n"
"\n"
"        curl -b \"name=Daniel\" www.sillypage.com\n"
"\n"
"  Curl also has the ability to use previously received cookies in following\n"
"  sessions. If you get cookies from a server and store them in a file in a\n"
, stdout);
 fputs(
"  manner similar to:\n"
"\n"
"        curl --dump-header headers www.example.com\n"
"\n"
"  ... you can then in a second connect to that (or another) site, use the\n"
"  cookies from the 'headers' file like:\n"
"\n"
"        curl -b headers www.example.com\n"
"\n"
"  While saving headers to a file is a working way to store cookies, it is\n"
"  however error-prone and not the preferred way to do this. Instead, make curl\n"
"  save the incoming cookies using the well-known netscape cookie format like\n"
"  this:\n"
"\n"
, stdout);
 fputs(
"        curl -c cookies.txt www.example.com\n"
"\n"
"  Note that by specifying -b you enable the \"cookie awareness\" and with -L\n"
"  you can make curl follow a location: (which often is used in combination\n"
"  with cookies). So that if a site sends cookies and a location, you can\n"
"  use a non-existing file to trigger the cookie awareness like:\n"
"\n"
"        curl -L -b empty.txt www.example.com\n"
"\n"
"  The file to read cookies from must be formatted using plain HTTP headers OR\n"
, stdout);
 fputs(
"  as netscape's cookie file. Curl will determine what kind it is based on the\n"
"  file contents.  In the above command, curl will parse the header and store\n"
"  the cookies received from www.example.com.  curl will send to the server the\n"
"  stored cookies which match the request as it follows the location.  The\n"
"  file \"empty.txt\" may be a nonexistent file.\n"
"\n"
"  Alas, to both read and write cookies from a netscape cookie file, you can\n"
"  set both -b and -c to use the same file:\n"
"\n"
, stdout);
 fputs(
"        curl -b cookies.txt -c cookies.txt www.example.com\n"
"\n"
"PROGRESS METER\n"
"\n"
"  The progress meter exists to show a user that something actually is\n"
"  happening. The different fields in the output have the following meaning:\n"
"\n"
"  % Total    % Received % Xferd  Average Speed          Time             Curr.\n"
"                                 Dload  Upload Total    Current  Left    Speed\n"
"  0  151M    0 38608    0     0   9406      0  4:41:43  0:00:04  4:41:39  9287\n"
"\n"
"  From left-to-right:\n"
, stdout);
 fputs(
"   %             - percentage completed of the whole transfer\n"
"   Total         - total size of the whole expected transfer\n"
"   %             - percentage completed of the download\n"
"   Received      - currently downloaded amount of bytes\n"
"   %             - percentage completed of the upload\n"
"   Xferd         - currently uploaded amount of bytes\n"
"   Average Speed\n"
"   Dload         - the average transfer speed of the download\n"
"   Average Speed\n"
"   Upload        - the average transfer speed of the upload\n"
, stdout);
 fputs(
"   Time Total    - expected time to complete the operation\n"
"   Time Current  - time passed since the invoke\n"
"   Time Left     - expected time left to completion\n"
"   Curr.Speed    - the average transfer speed the last 5 seconds (the first\n"
"                   5 seconds of a transfer is based on less time of course.)\n"
"\n"
"  The -# option will display a totally different progress bar that doesn't\n"
"  need much explanation!\n"
"\n"
"SPEED LIMIT\n"
"\n"
, stdout);
 fputs(
"  Curl allows the user to set the transfer speed conditions that must be met\n"
"  to let the transfer keep going. By using the switch -y and -Y you\n"
"  can make curl abort transfers if the transfer speed is below the specified\n"
"  lowest limit for a specified time.\n"
"\n"
"  To have curl abort the download if the speed is slower than 3000 bytes per\n"
"  second for 1 minute, run:\n"
"\n"
"        curl -Y 3000 -y 60 www.far-away-site.com\n"
"\n"
"  This can very well be used in combination with the overall time limit, so\n"
, stdout);
 fputs(
"  that the above operation must be completed in whole within 30 minutes:\n"
"\n"
"        curl -m 1800 -Y 3000 -y 60 www.far-away-site.com\n"
"\n"
"  Forcing curl not to transfer data faster than a given rate is also possible,\n"
"  which might be useful if you're using a limited bandwidth connection and you\n"
"  don't want your transfer to use all of it (sometimes referred to as\n"
"  \"bandwidth throttle\").\n"
"\n"
"  Make curl transfer data no faster than 10 kilobytes per second:\n"
"\n"
, stdout);
 fputs(
"        curl --limit-rate 10K www.far-away-site.com\n"
"\n"
"    or\n"
"\n"
"        curl --limit-rate 10240 www.far-away-site.com\n"
"\n"
"  Or prevent curl from uploading data faster than 1 megabyte per second:\n"
"\n"
"        curl -T upload --limit-rate 1M ftp://uploadshereplease.com\n"
"\n"
"  When using the --limit-rate option, the transfer rate is regulated on a\n"
"  per-second basis, which will cause the total transfer speed to become lower\n"
"  than the given number. Sometimes of course substantially lower, if your\n"
, stdout);
 fputs(
"  transfer stalls during periods.\n"
"\n"
"CONFIG FILE\n"
"\n"
"  Curl automatically tries to read the .curlrc file (or _curlrc file on win32\n"
"  systems) from the user's home dir on startup.\n"
"\n"
"  The config file could be made up with normal command line switches, but you\n"
"  can also specify the long options without the dashes to make it more\n"
"  readable. You can separate the options and the parameter with spaces, or\n"
"  with = or :. Comments can be used within the file. If the first letter on a\n"
, stdout);
 fputs(
"  line is a '#'-symbol the rest of the line is treated as a comment.\n"
"\n"
"  If you want the parameter to contain spaces, you must enclose the entire\n"
"  parameter within double quotes (\"). Within those quotes, you specify a\n"
"  quote as \\\".\n"
"\n"
"  NOTE: You must specify options and their arguments on the same line.\n"
"\n"
"  Example, set default time out and proxy in a config file:\n"
"\n"
"        # We want a 30 minute timeout:\n"
"        -m 1800\n"
"        # ... and we use a proxy for all accesses:\n"
, stdout);
 fputs(
"        proxy = proxy.our.domain.com:8080\n"
"\n"
"  White spaces ARE significant at the end of lines, but all white spaces\n"
"  leading up to the first characters of each line are ignored.\n"
"\n"
"  Prevent curl from reading the default file by using -q as the first command\n"
"  line parameter, like:\n"
"\n"
"        curl -q www.thatsite.com\n"
"\n"
"  Force curl to get and display a local help page in case it is invoked\n"
"  without URL by making a config file similar to:\n"
"\n"
"        # default url to get\n"
, stdout);
 fputs(
"        url = \"http://help.with.curl.com/curlhelp.html\"\n"
"\n"
"  You can specify another config file to be read by using the -K/--config\n"
"  flag. If you set config file name to \"-\" it'll read the config from stdin,\n"
"  which can be handy if you want to hide options from being visible in process\n"
"  tables etc:\n"
"\n"
"        echo \"user = user:passwd\" | curl -K - http://that.secret.site.com\n"
"\n"
"EXTRA HEADERS\n"
"\n"
"  When using curl in your own very special programs, you may end up needing\n"
, stdout);
 fputs(
"  to pass on your own custom headers when getting a web page. You can do\n"
"  this by using the -H flag.\n"
"\n"
"  Example, send the header \"X-you-and-me: yes\" to the server when getting a\n"
"  page:\n"
"\n"
"        curl -H \"X-you-and-me: yes\" www.love.com\n"
"\n"
"  This can also be useful in case you want curl to send a different text in a\n"
"  header than it normally does. The -H header you specify then replaces the\n"
"  header curl would normally send. If you replace an internal header with an\n"
, stdout);
 fputs(
"  empty one, you prevent that header from being sent. To prevent the Host:\n"
"  header from being used:\n"
"\n"
"        curl -H \"Host:\" www.server.com\n"
"\n"
"FTP and PATH NAMES\n"
"\n"
"  Do note that when getting files with the ftp:// URL, the given path is\n"
"  relative the directory you enter. To get the file 'README' from your home\n"
"  directory at your ftp site, do:\n"
"\n"
"        curl ftp://user:passwd@my.site.com/README\n"
"\n"
"  But if you want the README file from the root directory of that very same\n"
, stdout);
 fputs(
"  site, you need to specify the absolute file name:\n"
"\n"
"        curl ftp://user:passwd@my.site.com//README\n"
"\n"
"  (I.e with an extra slash in front of the file name.)\n"
"\n"
"SFTP and SCP and PATH NAMES\n"
"\n"
"  With sftp: and scp: URLs, the path name given is the absolute name on the\n"
"  server. To access a file relative to the remote user's home directory,\n"
"  prefix the file with /~/ , such as:\n"
"\n"
"        curl -u $USER sftp://home.example.com/~/.bashrc\n"
"\n"
"FTP and firewalls\n"
"\n"
, stdout);
 fputs(
"  The FTP protocol requires one of the involved parties to open a second\n"
"  connection as soon as data is about to get transferred. There are two ways to\n"
"  do this.\n"
"\n"
"  The default way for curl is to issue the PASV command which causes the\n"
"  server to open another port and await another connection performed by the\n"
"  client. This is good if the client is behind a firewall that doesn't allow\n"
"  incoming connections.\n"
"\n"
"        curl ftp.download.com\n"
"\n"
, stdout);
 fputs(
"  If the server, for example, is behind a firewall that doesn't allow connections\n"
"  on ports other than 21 (or if it just doesn't support the PASV command), the\n"
"  other way to do it is to use the PORT command and instruct the server to\n"
"  connect to the client on the given IP number and port (as parameters to the\n"
"  PORT command).\n"
"\n"
"  The -P flag to curl supports a few different options. Your machine may have\n"
"  several IP-addresses and/or network interfaces and curl allows you to select\n"
, stdout);
 fputs(
"  which of them to use. Default address can also be used:\n"
"\n"
"        curl -P - ftp.download.com\n"
"\n"
"  Download with PORT but use the IP address of our 'le0' interface (this does\n"
"  not work on windows):\n"
"\n"
"        curl -P le0 ftp.download.com\n"
"\n"
"  Download with PORT but use 192.168.0.10 as our IP address to use:\n"
"\n"
"        curl -P 192.168.0.10 ftp.download.com\n"
"\n"
"NETWORK INTERFACE\n"
"\n"
"  Get a web page from a server using a specified port for the interface:\n"
"\n"
, stdout);
 fputs(
"        curl --interface eth0:1 http://www.netscape.com/\n"
"\n"
"  or\n"
"\n"
"        curl --interface 192.168.1.10 http://www.netscape.com/\n"
"\n"
"HTTPS\n"
"\n"
"  Secure HTTP requires SSL libraries to be installed and used when curl is\n"
"  built. If that is done, curl is capable of retrieving and posting documents\n"
"  using the HTTPS protocol.\n"
"\n"
"  Example:\n"
"\n"
"        curl https://www.secure-site.com\n"
"\n"
"  Curl is also capable of using your personal certificates to get/post files\n"
, stdout);
 fputs(
"  from sites that require valid certificates. The only drawback is that the\n"
"  certificate needs to be in PEM-format. PEM is a standard and open format to\n"
"  store certificates with, but it is not used by the most commonly used\n"
"  browsers (Netscape and MSIE both use the so called PKCS#12 format). If you\n"
"  want curl to use the certificates you use with your (favourite) browser, you\n"
"  may need to download/compile a converter that can convert your browser's\n"
, stdout);
 fputs(
"  formatted certificates to PEM formatted ones. This kind of converter is\n"
"  included in recent versions of OpenSSL, and for older versions Dr Stephen\n"
"  N. Henson has written a patch for SSLeay that adds this functionality. You\n"
"  can get his patch (that requires an SSLeay installation) from his site at:\n"
"  http://www.drh-consultancy.demon.co.uk/\n"
"\n"
"  Example on how to automatically retrieve a document using a certificate with\n"
"  a personal password:\n"
"\n"
, stdout);
 fputs(
"        curl -E /path/to/cert.pem:password https://secure.site.com/\n"
"\n"
"  If you neglect to specify the password on the command line, you will be\n"
"  prompted for the correct password before any data can be received.\n"
"\n"
"  Many older SSL-servers have problems with SSLv3 or TLS, which newer versions\n"
"  of OpenSSL etc use, therefore it is sometimes useful to specify what\n"
"  SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL\n"
"  version to use (for SSLv3, SSLv2 or TLSv1 respectively):\n"
"\n"
, stdout);
 fputs(
"        curl -2 https://secure.site.com/\n"
"\n"
"  Otherwise, curl will first attempt to use v3 and then v2.\n"
"\n"
"  To use OpenSSL to convert your favourite browser's certificate into a PEM\n"
"  formatted one that curl can use, do something like this:\n"
"\n"
"    In Netscape, you start with hitting the 'Security' menu button.\n"
"\n"
"    Select 'certificates->yours' and then pick a certificate in the list\n"
"\n"
"    Press the 'Export' button\n"
"\n"
"    enter your PIN code for the certs\n"
"\n"
"    select a proper place to save it\n"
"\n"
, stdout);
 fputs(
"    Run the 'openssl' application to convert the certificate. If you cd to the\n"
"    openssl installation, you can do it like:\n"
"\n"
"     # ./apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile]\n"
"\n"
"    In Firefox, select Options, then Advanced, then the Encryption tab,\n"
"    View Certificates. This opens the Certificate Manager, where you can\n"
"    Export. Be sure to select PEM for the Save as type.\n"
"\n"
"    In Internet Explorer, select Internet Options, then the Content tab, then\n"
, stdout);
 fputs(
"    Certificates. Then you can Export, and depending on the format you may\n"
"    need to convert to PEM.\n"
"\n"
"    In Chrome, select Settings, then Show Advanced Settings. Under HTTPS/SSL\n"
"    select Manage Certificates.\n"
"\n"
"RESUMING FILE TRANSFERS\n"
"\n"
" To continue a file transfer where it was previously aborted, curl supports\n"
" resume on HTTP(S) downloads as well as FTP uploads and downloads.\n"
"\n"
" Continue downloading a document:\n"
"\n"
"        curl -C - -o file ftp://ftp.server.com/path/file\n"
"\n"
, stdout);
 fputs(
" Continue uploading a document(*1):\n"
"\n"
"        curl -C - -T file ftp://ftp.server.com/path/file\n"
"\n"
" Continue downloading a document from a web server(*2):\n"
"\n"
"        curl -C - -o file http://www.server.com/\n"
"\n"
" (*1) = This requires that the FTP server supports the non-standard command\n"
"        SIZE. If it doesn't, curl will say so.\n"
"\n"
" (*2) = This requires that the web server supports at least HTTP/1.1. If it\n"
"        doesn't, curl will say so.\n"
"\n"
"TIME CONDITIONS\n"
"\n"
, stdout);
 fputs(
" HTTP allows a client to specify a time condition for the document it\n"
" requests. It is If-Modified-Since or If-Unmodified-Since. Curl allows you to\n"
" specify them with the -z/--time-cond flag.\n"
"\n"
" For example, you can easily make a download that only gets performed if the\n"
" remote file is newer than a local copy. It would be made like:\n"
"\n"
"        curl -z local.html http://remote.server.com/remote.html\n"
"\n"
" Or you can download a file only if the local file is newer than the remote\n"
, stdout);
 fputs(
" one. Do this by prepending the date string with a '-', as in:\n"
"\n"
"        curl -z -local.html http://remote.server.com/remote.html\n"
"\n"
" You can specify a \"free text\" date as condition. Tell curl to only download\n"
" the file if it was updated since January 12, 2012:\n"
"\n"
"        curl -z \"Jan 12 2012\" http://remote.server.com/remote.html\n"
"\n"
" Curl will then accept a wide range of date formats. You always make the date\n"
" check the other way around by prepending it with a dash '-'.\n"
"\n"
"DICT\n"
"\n"
"  For fun try\n"
"\n"
, stdout);
 fputs(
"        curl dict://dict.org/m:curl\n"
"        curl dict://dict.org/d:heisenbug:jargon\n"
"        curl dict://dict.org/d:daniel:web1913\n"
"\n"
"  Aliases for 'm' are 'match' and 'find', and aliases for 'd' are 'define'\n"
"  and 'lookup'. For example,\n"
"\n"
"        curl dict://dict.org/find:curl\n"
"\n"
"  Commands that break the URL description of the RFC (but not the DICT\n"
"  protocol) are\n"
"\n"
"        curl dict://dict.org/show:db\n"
"        curl dict://dict.org/show:strat\n"
"\n"
, stdout);
 fputs(
"  Authentication is still missing (but this is not required by the RFC)\n"
"\n"
"LDAP\n"
"\n"
"  If you have installed the OpenLDAP library, curl can take advantage of it\n"
"  and offer ldap:// support.\n"
"\n"
"  LDAP is a complex thing and writing an LDAP query is not an easy task. I do\n"
"  advise you to dig up the syntax description for that elsewhere. Two places\n"
"  that might suit you are:\n"
"\n"
"  Netscape's \"Netscape Directory SDK 3.0 for C Programmer's Guide Chapter 10:\n"
"  Working with LDAP URLs\":\n"
, stdout);
 fputs(
"  http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm\n"
"\n"
"  RFC 2255, \"The LDAP URL Format\" http://curl.haxx.se/rfc/rfc2255.txt\n"
"\n"
"  To show you an example, this is how I can get all people from my local LDAP\n"
"  server that has a certain sub-domain in their email address:\n"
"\n"
"        curl -B \"ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se\"\n"
"\n"
"  If I want the same info in HTML format, I can get it by not using the -B\n"
"  (enforce ASCII) flag.\n"
"\n"
"ENVIRONMENT VARIABLES\n"
"\n"
, stdout);
 fputs(
"  Curl reads and understands the following environment variables:\n"
"\n"
"        http_proxy, HTTPS_PROXY, FTP_PROXY\n"
"\n"
"  They should be set for protocol-specific proxies. General proxy should be\n"
"  set with\n"
"\n"
"        ALL_PROXY\n"
"\n"
"  A comma-separated list of host names that shouldn't go through any proxy is\n"
"  set in (only an asterisk, '*' matches all hosts)\n"
"\n"
"        NO_PROXY\n"
"\n"
"  If the host name matches one of these strings, or the host is within the\n"
, stdout);
 fputs(
"  domain of one of these strings, transactions with that node will not be\n"
"  proxied.\n"
"\n"
"\n"
"  The usage of the -x/--proxy flag overrides the environment variables.\n"
"\n"
"NETRC\n"
"\n"
"  Unix introduced the .netrc concept a long time ago. It is a way for a user\n"
"  to specify name and password for commonly visited FTP sites in a file so\n"
"  that you don't have to type them in each time you visit those sites. You\n"
"  realize this is a big security risk if someone else gets hold of your\n"
, stdout);
 fputs(
"  passwords, so therefore most unix programs won't read this file unless it is\n"
"  only readable by yourself (curl doesn't care though).\n"
"\n"
"  Curl supports .netrc files if told to (using the -n/--netrc and\n"
"  --netrc-optional options). This is not restricted to just FTP,\n"
"  so curl can use it for all protocols where authentication is used.\n"
"\n"
"  A very simple .netrc file could look something like:\n"
"\n"
"        machine curl.haxx.se login iamdaniel password mysecret\n"
"\n"
"CUSTOM OUTPUT\n"
"\n"
, stdout);
 fputs(
"  To better allow script programmers to get to know about the progress of\n"
"  curl, the -w/--write-out option was introduced. Using this, you can specify\n"
"  what information from the previous transfer you want to extract.\n"
"\n"
"  To display the amount of bytes downloaded together with some text and an\n"
"  ending newline:\n"
"\n"
"        curl -w 'We downloaded %{size_download} bytes\\n' www.download.com\n"
"\n"
"KERBEROS FTP TRANSFER\n"
"\n"
"  Curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need\n"
, stdout);
 fputs(
"  the kerberos package installed and used at curl build time for it to be\n"
"  available.\n"
"\n"
"  First, get the krb-ticket the normal way, like with the kinit/kauth tool.\n"
"  Then use curl in way similar to:\n"
"\n"
"        curl --krb private ftp://krb4site.com -u username:fakepwd\n"
"\n"
"  There's no use for a password on the -u switch, but a blank one will make\n"
"  curl ask for one and you already entered the real password to kinit/kauth.\n"
"\n"
"TELNET\n"
"\n"
, stdout);
 fputs(
"  The curl telnet support is basic and very easy to use. Curl passes all data\n"
"  passed to it on stdin to the remote server. Connect to a remote telnet\n"
"  server using a command line similar to:\n"
"\n"
"        curl telnet://remote.server.com\n"
"\n"
"  And enter the data to pass to the server on stdin. The result will be sent\n"
"  to stdout or to the file you specify with -o.\n"
"\n"
"  You might want the -N/--no-buffer option to switch off the buffered output\n"
"  for slow connections or similar.\n"
"\n"
, stdout);
 fputs(
"  Pass options to the telnet protocol negotiation, by using the -t option. To\n"
"  tell the server we use a vt100 terminal, try something like:\n"
"\n"
"        curl -tTTYPE=vt100 telnet://remote.server.com\n"
"\n"
"  Other interesting options for it -t include:\n"
"\n"
"   - XDISPLOC=<X display> Sets the X display location.\n"
"\n"
"   - NEW_ENV=<var,val> Sets an environment variable.\n"
"\n"
"  NOTE: The telnet protocol does not specify any way to login with a specified\n"
, stdout);
 fputs(
"  user and password so curl can't do that automatically. To do that, you need\n"
"  to track when the login prompt is received and send the username and\n"
"  password accordingly.\n"
"\n"
"PERSISTENT CONNECTIONS\n"
"\n"
"  Specifying multiple files on a single command line will make curl transfer\n"
"  all of them, one after the other in the specified order.\n"
"\n"
"  libcurl will attempt to use persistent connections for the transfers so that\n"
"  the second transfer to the same host can use the same connection that was\n"
, stdout);
 fputs(
"  already initiated and was left open in the previous transfer. This greatly\n"
"  decreases connection time for all but the first transfer and it makes a far\n"
"  better use of the network.\n"
"\n"
"  Note that curl cannot use persistent connections for transfers that are used\n"
"  in subsequence curl invokes. Try to stuff as many URLs as possible on the\n"
"  same command line if they are using the same host, as that'll make the\n"
"  transfers faster. If you use an HTTP proxy for file transfers, practically\n"
, stdout);
 fputs(
"  all transfers will be persistent.\n"
"\n"
"MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE\n"
"\n"
"  As is mentioned above, you can download multiple files with one command line\n"
"  by simply adding more URLs. If you want those to get saved to a local file\n"
"  instead of just printed to stdout, you need to add one save option for each\n"
"  URL you specify. Note that this also goes for the -O option (but not\n"
"  --remote-name-all).\n"
"\n"
"  For example: get two files and use -O for the first and a custom file\n"
, stdout);
 fputs(
"  name for the second:\n"
"\n"
"    curl -O http://url.com/file.txt ftp://ftp.com/moo.exe -o moo.jpg\n"
"\n"
"  You can also upload multiple files in a similar fashion:\n"
"\n"
"    curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt\n"
"\n"
"IPv6\n"
"\n"
"  curl will connect to a server with IPv6 when a host lookup returns an IPv6\n"
"  address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6\n"
"  options can specify which address to use when both are available. IPv6\n"
, stdout);
 fputs(
"  addresses can also be specified directly in URLs using the syntax:\n"
"\n"
"    http://[2001:1890:1112:1::20]/overview.html\n"
"\n"
"  When this style is used, the -g option must be given to stop curl from\n"
"  interpreting the square brackets as special globbing characters.  Link local\n"
"  and site local addresses including a scope identifier, such as fe80::1234%1,\n"
"  may also be used, but the scope portion must be numeric and the percent\n"
"  character must be URL escaped. The previous example in an SFTP URL might\n"
, stdout);
 fputs(
"  look like:\n"
"\n"
"    sftp://[fe80::1234%251]/\n"
"\n"
"  IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface\n"
"  or --ftp-port options) should not be URL encoded.\n"
"\n"
"METALINK\n"
"\n"
"  Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way\n"
"  to list multiple URIs and hashes for a file. Curl will make use of the mirrors\n"
"  listed within for failover if there are errors (such as the file or server not\n"
, stdout);
 fputs(
"  being available). It will also verify the hash of the file after the download\n"
"  completes. The Metalink file itself is downloaded and processed in memory and\n"
"  not stored in the local file system.\n"
"\n"
"  Example to use a remote Metalink file:\n"
"\n"
"    curl --metalink http://www.example.com/example.metalink\n"
"\n"
"  To use a Metalink file in the local file system, use FILE protocol (file://):\n"
"\n"
"    curl --metalink file://example.metalink\n"
"\n"
, stdout);
 fputs(
"  Please note that if FILE protocol is disabled, there is no way to use a local\n"
"  Metalink file at the time of this writing. Also note that if --metalink and\n"
"  --include are used together, --include will be ignored. This is because including\n"
"  headers in the response will break Metalink parser and if the headers are included\n"
"  in the file described in Metalink file, hash check will fail.\n"
"\n"
"MAILING LISTS\n"
"\n"
"  For your convenience, we have several open mailing lists to discuss curl,\n"
, stdout);
 fputs(
"  its development and things relevant to this. Get all info at\n"
"  http://curl.haxx.se/mail/. Some of the lists available are:\n"
"\n"
"  curl-users\n"
"\n"
"    Users of the command line tool. How to use it, what doesn't work, new\n"
"    features, related tools, questions, news, installations, compilations,\n"
"    running, porting etc.\n"
"\n"
"  curl-library\n"
"\n"
"    Developers using or developing libcurl. Bugs, extensions, improvements.\n"
"\n"
"  curl-announce\n"
"\n"
, stdout);
 fputs(
"    Low-traffic. Only receives announcements of new public versions. At worst,\n"
"    that makes something like one or two mails per month, but usually only one\n"
"    mail every second month.\n"
"\n"
"  curl-and-php\n"
"\n"
"    Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP\n"
"    with a curl angle.\n"
"\n"
"  curl-and-python\n"
"\n"
"    Python hackers using curl with or without the python binding pycurl.\n"
"\n"
"  Please direct curl questions, feature requests and trouble reports to one of\n"
, stdout);
 fputs(
"  these mailing lists instead of mailing any individual.\n"
, stdout) ;
}
#endif /* USE_MANUAL */
#endif /* HAVE_LIBZ */
