#include "tool_setup.h"
/*
 * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
 */
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
void hugehelp(void)
{
   fputs(
"                                  _   _ ____  _\n"
"  Project                     ___| | | |  _ \\| |\n"
"                             / __| | | | |_) | |\n"
"                            | (__| |_| |  _ <| |___\n"
"                             \\___|\\___/|_| \\_\\_____|\n"
"\n"
"NAME\n"
"       curl - transfer a URL\n"
"\n"
"SYNOPSIS\n"
"       curl [options] [URL...]\n"
"\n"
"DESCRIPTION\n"
"       curl  is  a tool to transfer data from or to a server, using one of the\n"
"       supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,  IMAP,\n"
, stdout);
 fputs(
"       IMAPS,  LDAP,  LDAPS,  POP3,  POP3S,  RTMP, RTSP, SCP, SFTP, SMB, SMBS,\n"
"       SMTP, SMTPS, TELNET and TFTP). The command is designed to work  without\n"
"       user interaction.\n"
"\n"
"       curl offers a busload of useful tricks like proxy support, user authen-\n"
"       tication, FTP upload, HTTP post, SSL connections, cookies, file  trans-\n"
"       fer  resume,  Metalink,  and more. As you will see below, the number of\n"
"       features will make your head spin!\n"
"\n"
, stdout);
 fputs(
"       curl is powered by  libcurl  for  all  transfer-related  features.  See\n"
"       libcurl(3) for details.\n"
"\n"
"URL\n"
"       The  URL  syntax is protocol-dependent. You'll find a detailed descrip-\n"
"       tion in RFC 3986.\n"
"\n"
"       You can specify multiple URLs or parts of URLs  by  writing  part  sets\n"
"       within braces as in:\n"
"\n"
"         http://site.{one,two,three}.com\n"
"\n"
"       or you can get sequences of alphanumeric series by using [] as in:\n"
"\n"
"         ftp://ftp.example.com/file[1-100].txt\n"
"\n"
, stdout);
 fputs(
"         ftp://ftp.example.com/file[001-100].txt    (with leading zeros)\n"
"\n"
"         ftp://ftp.example.com/file[a-z].txt\n"
"\n"
"       Nested  sequences  are not supported, but you can use several ones next\n"
"       to each other:\n"
"\n"
"         http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html\n"
"\n"
"       You can specify any amount of URLs on the command line.  They  will  be\n"
"       fetched in a sequential manner in the specified order.\n"
"\n"
, stdout);
 fputs(
"       You  can  specify a step counter for the ranges to get every Nth number\n"
"       or letter:\n"
"\n"
"         http://example.com/file[1-100:10].txt\n"
"\n"
"         http://example.com/file[a-z:2].txt\n"
"\n"
"       When using [] or {} sequences when invoked from a command line  prompt,\n"
"       you probably have to put the full URL within double quotes to avoid the\n"
"       shell from interfering with it. This also  goes  for  other  characters\n"
"       treated special, like for example '&', '?' and '*'.\n"
"\n"
, stdout);
 fputs(
"       Provide  the IPv6 zone index in the URL with an escaped percentage sign\n"
"       and the interface name. Like in\n"
"\n"
"         http://[fe80::3%25eth0]/\n"
"\n"
"       If you specify URL without protocol:// prefix,  curl  will  attempt  to\n"
"       guess  what  protocol  you might want. It will then default to HTTP but\n"
"       try other protocols based on often-used host name prefixes.  For  exam-\n"
"       ple,  for  host names starting with \"ftp.\" curl will assume you want to\n"
"       speak FTP.\n"
"\n"
, stdout);
 fputs(
"       curl will do its best to use what you pass to it as a URL.  It  is  not\n"
"       trying  to  validate it as a syntactically correct URL by any means but\n"
"       is instead very liberal with what it accepts.\n"
"\n"
"       curl will attempt to re-use connections for multiple file transfers, so\n"
"       that  getting many files from the same server will not do multiple con-\n"
"       nects / handshakes. This improves speed. Of course this is only done on\n"
, stdout);
 fputs(
"       files  specified  on  a  single command line and cannot be used between\n"
"       separate curl invokes.\n"
"\n"
"PROGRESS METER\n"
"       curl normally displays a progress meter during  operations,  indicating\n"
"       the  amount  of  transferred  data,  transfer speeds and estimated time\n"
"       left, etc. The progress meter displays number of bytes and  the  speeds\n"
"       are  in  bytes per second. The suffixes (k, M, G, T, P) are 1024 based.\n"
"       For example 1k is 1024 bytes. 1M is 1048576 bytes.\n"
"\n"
, stdout);
 fputs(
"       curl displays this data to the terminal by default, so  if  you  invoke\n"
"       curl  to do an operation and it is about to write data to the terminal,\n"
"       it disables the progress meter as otherwise it would mess up the output\n"
"       mixing progress meter and response data.\n"
"\n"
"       If you want a progress meter for HTTP POST or PUT requests, you need to\n"
"       redirect the response output to a file, using shell redirect  (>),  -o,\n"
"       --output or similar.\n"
"\n"
, stdout);
 fputs(
"       It  is not the same case for FTP upload as that operation does not spit\n"
"       out any response data to the terminal.\n"
"\n"
"       If you prefer a progress  \"bar\"  instead  of  the  regular  meter,  -#,\n"
"       --progress-bar  is your friend. You can also disable the progress meter\n"
"       completely with the -s, --silent option.\n"
"\n"
"OPTIONS\n"
"       Options start with one or two dashes. Many of the  options  require  an\n"
"       additional value next to them.\n"
"\n"
, stdout);
 fputs(
"       The  short  \"single-dash\"  form  of the options, -d for example, may be\n"
"       used with or without a space between it and its value, although a space\n"
"       is a recommended separator. The long \"double-dash\" form, -d, --data for\n"
"       example, requires a space between it and its value.\n"
"\n"
"       Short version options that don't need any additional values can be used\n"
"       immediately  next  to  each other, like for example you can specify all\n"
, stdout);
 fputs(
"       the options -O, -L and -v at once as -OLv.\n"
"\n"
"       In general, all boolean options are enabled with --option and yet again\n"
"       disabled  with --no-option. That is, you use the exact same option name\n"
"       but prefix it with \"no-\". However, in this list we mostly only list and\n"
"       show  the --option version of them. (This concept with --no options was\n"
"       added in  7.19.0.  Previously  most  options  were  toggled  on/off  on\n"
"       repeated use of the same command line option.)\n"
, stdout);
 fputs(
"\n"
"       --abstract-unix-socket <path>\n"
"              (HTTP)  Connect  through an abstract Unix domain socket, instead\n"
"              of using the network.   Note:  netstat  shows  the  path  of  an\n"
"              abstract  socket  prefixed with '@', however the <path> argument\n"
"              should not have this leading character.\n"
"\n"
"              Added in 7.53.0.\n"
"\n"
"       --anyauth\n"
"              (HTTP) Tells curl to figure out authentication method by itself,\n"
, stdout);
 fputs(
"              and  use  the most secure one the remote site claims to support.\n"
"              This is done by first doing a request and checking the response-\n"
"              headers,  thus  possibly  inducing  an extra network round-trip.\n"
"              This is  used  instead  of  setting  a  specific  authentication\n"
"              method,  which  you  can  do with --basic, --digest, --ntlm, and\n"
"              --negotiate.\n"
"\n"
, stdout);
 fputs(
"              Using --anyauth is not recommended if you do uploads from stdin,\n"
"              since  it  may require data to be sent twice and then the client\n"
"              must be able to rewind. If the need should arise when  uploading\n"
"              from stdin, the upload operation will fail.\n"
"\n"
"              Used together with -u, --user.\n"
"\n"
"              See also --proxy-anyauth and --basic and --digest.\n"
"\n"
"       -a, --append\n"
, stdout);
 fputs(
"              (FTP SFTP) When used in an upload, this makes curl append to the\n"
"              target file instead  of  overwriting  it.  If  the  remote  file\n"
"              doesn't  exist,  it  will  be  created.   Note that this flag is\n"
"              ignored by some SFTP servers (including OpenSSH).\n"
"\n"
"       --basic\n"
"              (HTTP) Tells curl to use  HTTP  Basic  authentication  with  the\n"
"              remote  host.  This  is  the  default and this option is usually\n"
, stdout);
 fputs(
"              pointless, unless you use it to override a previously set option\n"
"              that  sets  a  different  authentication method (such as --ntlm,\n"
"              --digest, or --negotiate).\n"
"\n"
"              Used together with -u, --user.\n"
"\n"
"              See also --proxy-basic.\n"
"\n"
"       --cacert <file>\n"
"              (TLS) Tells curl to use the specified certificate file to verify\n"
"              the  peer.  The  file  may contain multiple CA certificates. The\n"
, stdout);
 fputs(
"              certificate(s) must be in PEM format. Normally curl is built  to\n"
"              use a default file for this, so this option is typically used to\n"
"              alter that default file.\n"
"\n"
"              curl recognizes the environment variable named  'CURL_CA_BUNDLE'\n"
"              if  it  is  set,  and uses the given path as a path to a CA cert\n"
"              bundle. This option overrides that variable.\n"
"\n"
"              The windows version of curl will automatically  look  for  a  CA\n"
, stdout);
 fputs(
"              certs file named 'curl-ca-bundle.crt', either in the same direc-\n"
"              tory as curl.exe, or in the Current Working Directory, or in any\n"
"              folder along your PATH.\n"
"\n"
"              If  curl  is  built  against  the  NSS  SSL library, the NSS PEM\n"
"              PKCS#11 module (libnsspem.so) needs to  be  available  for  this\n"
"              option to work properly.\n"
"\n"
"              (iOS  and macOS only) If curl is built against Secure Transport,\n"
, stdout);
 fputs(
"              then this option is supported for  backward  compatibility  with\n"
"              other  SSL  engines,  but it should not be set. If the option is\n"
"              not set, then curl will use the certificates in the  system  and\n"
"              user  Keychain to verify the peer, which is the preferred method\n"
"              of verifying the peer's certificate chain.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --capath <dir>\n"
, stdout);
 fputs(
"              (TLS) Tells curl to use the specified certificate  directory  to\n"
"              verify  the  peer.  Multiple paths can be provided by separating\n"
"              them with \":\" (e.g.  \"path1:path2:path3\"). The certificates must\n"
"              be  in  PEM  format,  and  if curl is built against OpenSSL, the\n"
"              directory must have been processed using  the  c_rehash  utility\n"
"              supplied  with OpenSSL. Using --capath can allow OpenSSL-powered\n"
, stdout);
 fputs(
"              curl to make SSL-connections much more  efficiently  than  using\n"
"              --cacert if the --cacert file contains many CA certificates.\n"
"\n"
"              If this option is set, the default capath value will be ignored,\n"
"              and if it is used several times, the last one will be used.\n"
"\n"
"       --cert-status\n"
"              (TLS) Tells curl to verify the status of the server  certificate\n"
"              by using the Certificate Status Request (aka. OCSP stapling) TLS\n"
, stdout);
 fputs(
"              extension.\n"
"\n"
"              If this option is enabled and the server sends an invalid  (e.g.\n"
"              expired) response, if the response suggests that the server cer-\n"
"              tificate has been revoked, or no response at  all  is  received,\n"
"              the verification fails.\n"
"\n"
"              This  is  currently  only implemented in the OpenSSL, GnuTLS and\n"
"              NSS backends.\n"
"\n"
"              Added in 7.41.0.\n"
"\n"
"       --cert-type <type>\n"
, stdout);
 fputs(
"              (TLS) Tells curl what certificate type the provided  certificate\n"
"              is in. PEM, DER and ENG are recognized types.  If not specified,\n"
"              PEM is assumed.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -E, --cert and --key and --key-type.\n"
"\n"
"       -E, --cert <certificate[:password]>\n"
"              (TLS) Tells curl to use the specified  client  certificate  file\n"
, stdout);
 fputs(
"              when getting a file with HTTPS, FTPS or another SSL-based proto-\n"
"              col. The certificate must be in PKCS#12 format if  using  Secure\n"
"              Transport,  or  PEM  format  if  using any other engine.  If the\n"
"              optional password isn't specified, it will be queried for on the\n"
"              terminal.  Note  that  this  option assumes a \"certificate\" file\n"
"              that is the private key and the client certificate concatenated!\n"
, stdout);
 fputs(
"              See -E, --cert and --key to specify them independently.\n"
"\n"
"              If  curl  is  built against the NSS SSL library then this option\n"
"              can tell curl the nickname of the certificate to use within  the\n"
"              NSS  database defined by the environment variable SSL_DIR (or by\n"
"              default /etc/pki/nssdb). If the NSS  PEM  PKCS#11  module  (lib-\n"
"              nsspem.so)  is  available  then  PEM files may be loaded. If you\n"
, stdout);
 fputs(
"              want to use a file from the current directory, please precede it\n"
"              with  \"./\"  prefix, in order to avoid confusion with a nickname.\n"
"              If the nickname contains \":\", it needs to be preceded by \"\\\"  so\n"
"              that  it  is not recognized as password delimiter.  If the nick-\n"
"              name contains \"\\\", it needs to be escaped as \"\\\\\" so that it  is\n"
"              not recognized as an escape character.\n"
"\n"
, stdout);
 fputs(
"              (iOS  and macOS only) If curl is built against Secure Transport,\n"
"              then the certificate string can either be the name of a certifi-\n"
"              cate/private  key in the system or user keychain, or the path to\n"
"              a PKCS#12-encoded certificate and private key. If  you  want  to\n"
"              use  a  file  from the current directory, please precede it with\n"
"              \"./\" prefix, in order to avoid confusion with a nickname.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also --cert-type and --key and --key-type.\n"
"\n"
"       --ciphers <list of ciphers>\n"
"              (TLS) Specifies which ciphers to use in the connection. The list\n"
"              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher\n"
"              list details on this URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --compressed-ssh\n"
"              (SCP SFTP) Enables built-in SSH compression.  This is a request,\n"
"              not an order; the server may or may not do it.\n"
"\n"
"              Added in 7.56.0.\n"
"\n"
"       --compressed\n"
"              (HTTP) Request a compressed response using one of the algorithms\n"
"              curl supports, and save  the  uncompressed  document.   If  this\n"
, stdout);
 fputs(
"              option  is  used  and  the server sends an unsupported encoding,\n"
"              curl will report an error.\n"
"\n"
"       -K, --config <file>\n"
"\n"
"              Specify a text file to read curl  arguments  from.  The  command\n"
"              line  arguments  found  in the text file will be used as if they\n"
"              were provided on the command line.\n"
"\n"
"              Options and their parameters must be specified on the same  line\n"
, stdout);
 fputs(
"              in the file, separated by whitespace, colon, or the equals sign.\n"
"              Long option names can optionally be given  in  the  config  file\n"
"              without the initial double dashes and if so, the colon or equals\n"
"              characters can be used as separators. If the option is specified\n"
"              with  one or two dashes, there can be no colon or equals charac-\n"
"              ter between the option and its parameter.\n"
"\n"
, stdout);
 fputs(
"              If the parameter is to contain whitespace, the parameter must be\n"
"              enclosed  within  quotes.  Within  double  quotes, the following\n"
"              escape sequences are available: \\\\, \\\", \\t, \\n,  \\r  and  \\v.  A\n"
"              backslash  preceding  any  other letter is ignored. If the first\n"
"              column of a config line is a '#' character, the rest of the line\n"
"              will be treated as a comment. Only write one option per physical\n"
, stdout);
 fputs(
"              line in the config file.\n"
"\n"
"              Specify the filename to -K, --config as '-' to  make  curl  read\n"
"              the file from stdin.\n"
"\n"
"              Note  that  to  be able to specify a URL in the config file, you\n"
"              need to specify it using the --url option,  and  not  by  simply\n"
"              writing  the  URL  on its own line. So, it could look similar to\n"
"              this:\n"
"\n"
"              url = \"https://curl.haxx.se/docs/\"\n"
"\n"
, stdout);
 fputs(
"              When curl is invoked, it (unless -q, --disable is  used)  checks\n"
"              for a default config file and uses it if found. The default con-\n"
"              fig file is checked for in the following places in this order:\n"
"\n"
"              1) curl tries to find the \"home dir\": It first  checks  for  the\n"
"              CURL_HOME and then the HOME environment variables. Failing that,\n"
"              it uses getpwuid() on Unix-like systems (which returns the  home\n"
, stdout);
 fputs(
"              dir  given the current user in your system). On Windows, it then\n"
"              checks for the APPDATA variable, or as a last resort the '%USER-\n"
"              PROFILE%\\Application Data'.\n"
"\n"
"              2)  On  windows, if there is no _curlrc file in the home dir, it\n"
"              checks for one in the same dir the curl executable is placed. On\n"
"              Unix-like  systems,  it will simply try to load .curlrc from the\n"
"              determined home dir.\n"
"\n"
, stdout);
 fputs(
"              # --- Example file ---\n"
"              # this is a comment\n"
"              url = \"example.com\"\n"
"              output = \"curlhere.html\"\n"
"              user-agent = \"superagent/1.0\"\n"
"\n"
"              # and fetch another URL too\n"
"              url = \"example.com/docs/manpage.html\"\n"
"              -O\n"
"              referer = \"http://nowhereatall.example.com/\"\n"
"              # --- End of example file ---\n"
"\n"
"              This option can be used multiple times to load  multiple  config\n"
, stdout);
 fputs(
"              files.\n"
"\n"
"       --connect-timeout <seconds>\n"
"              Maximum  time  in  seconds  that  you allow curl's connection to\n"
"              take.  This only limits the connection phase, so  if  curl  con-\n"
"              nects  within the given period it will continue - if not it will\n"
"              exit.  Since version 7.32.0, this option accepts decimal values.\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -m, --max-time.\n"
"\n"
, stdout);
 fputs(
"       --connect-to <HOST1:PORT1:HOST2:PORT2>\n"
"\n"
"              For  a  request  to  the  given  HOST1:PORT1  pair,  connect  to\n"
"              HOST2:PORT2 instead.  This option is suitable to direct requests\n"
"              at a specific server, e.g. at a specific cluster node in a clus-\n"
"              ter  of  servers. This option is only used to establish the net-\n"
"              work connection. It does NOT affect the  hostname/port  that  is\n"
, stdout);
 fputs(
"              used for TLS/SSL (e.g. SNI, certificate verification) or for the\n"
"              application protocols. \"HOST1\" and  \"PORT1\"  may  be  the  empty\n"
"              string, meaning \"any host/port\". \"HOST2\" and \"PORT2\" may also be\n"
"              the  empty  string,  meaning   \"use   the   request's   original\n"
"              host/port\".\n"
"\n"
"              A \"host\" specified to this option is compared as a string, so it\n"
, stdout);
 fputs(
"              needs to match the name used in request URL. It  can  be  either\n"
"              numerical  such  as  \"127.0.0.1\"  or  the full host name such as\n"
"              \"example.org\".\n"
"\n"
"              This option can be used many times to add many connect rules.\n"
"\n"
"              See also --resolve and -H, --header. Added in 7.49.0.\n"
"\n"
"       -C, --continue-at <offset>\n"
"              Continue/Resume a previous file transfer at  the  given  offset.\n"
, stdout);
 fputs(
"              The  given  offset  is  the  exact  number of bytes that will be\n"
"              skipped, counting from the beginning of the source  file  before\n"
"              it is transferred to the destination.  If used with uploads, the\n"
"              FTP server command SIZE will not be used by curl.\n"
"\n"
"              Use \"-C -\" to tell curl to automatically find out  where/how  to\n"
"              resume  the  transfer. It then uses the given output/input files\n"
"              to figure that out.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -r, --range.\n"
"\n"
"       -c, --cookie-jar <filename>\n"
"              (HTTP) Specify to which file you want curl to write all  cookies\n"
"              after  a  completed  operation. Curl writes all cookies from its\n"
"              in-memory cookie storage to the given file at the end of  opera-\n"
"              tions.  If  no  cookies  are known, no data will be written. The\n"
, stdout);
 fputs(
"              file will be written using the Netscape cookie file  format.  If\n"
"              you set the file name to a single dash, \"-\", the cookies will be\n"
"              written to stdout.\n"
"\n"
"              This command line option will activate the  cookie  engine  that\n"
"              makes curl record and use cookies. Another way to activate it is\n"
"              to use the -b, --cookie option.\n"
"\n"
"              If the cookie jar can't be created or written to, the whole curl\n"
, stdout);
 fputs(
"              operation  won't fail or even report an error clearly. Using -v,\n"
"              --verbose will get a warning displayed, but  that  is  the  only\n"
"              visible feedback you get about this possibly lethal situation.\n"
"\n"
"              If  this  option  is used several times, the last specified file\n"
"              name will be used.\n"
"\n"
"       -b, --cookie <data>\n"
"              (HTTP) Pass the data to the HTTP server in the Cookie header. It\n"
, stdout);
 fputs(
"              is  supposedly the data previously received from the server in a\n"
"              \"Set-Cookie:\"  line.   The  data  should  be   in   the   format\n"
"              \"NAME1=VALUE1; NAME2=VALUE2\".\n"
"\n"
"              If  no '=' symbol is used in the argument, it is instead treated\n"
"              as a filename to read previously stored cookie from. This option\n"
"              also  activates  the  cookie  engine which will make curl record\n"
, stdout);
 fputs(
"              incoming cookies, which may be handy if  you're  using  this  in\n"
"              combination  with  the  -L, --location option or do multiple URL\n"
"              transfers on the same invoke. If the  file  name  is  exactly  a\n"
"              minus (\"-\"), curl will instead the contents from stdin.\n"
"\n"
"              The file format of the file to read cookies from should be plain\n"
"              HTTP headers (Set-Cookie style) or the  Netscape/Mozilla  cookie\n"
"              file format.\n"
"\n"
, stdout);
 fputs(
"              The  file  specified with -b, --cookie is only used as input. No\n"
"              cookies will be written to the file. To store cookies,  use  the\n"
"              -c, --cookie-jar option.\n"
"\n"
"              Exercise  caution  if  you  are  using  this option and multiple\n"
"              transfers may occur.  If you use the NAME1=VALUE1; format, or in\n"
"              a  file  use  the  Set-Cookie format and don't specify a domain,\n"
, stdout);
 fputs(
"              then the cookie is sent for any domain (even after redirects are\n"
"              followed)  and cannot be modified by a server-set cookie. If the\n"
"              cookie engine is enabled and a server sets a cookie of the  same\n"
"              name then both will be sent on a future transfer to that server,\n"
"              likely not what you intended.  To address  these  issues  set  a\n"
"              domain  in  Set-Cookie  (doing that will include sub domains) or\n"
, stdout);
 fputs(
"              use the Netscape format.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              Users very often want to both read cookies from a file and write\n"
"              updated  cookies  back to a file, so using both -b, --cookie and\n"
"              -c, --cookie-jar in the same command line is common.\n"
"\n"
"       --create-dirs\n"
"              When used in conjunction with the -o, --output option, curl will\n"
, stdout);
 fputs(
"              create  the  necessary local directory hierarchy as needed. This\n"
"              option creates the dirs mentioned with the -o, --output  option,\n"
"              nothing  else.  If  the --output file name uses no dir or if the\n"
"              dirs it mentions already exist, no dir will be created.\n"
"\n"
"              To create remote directories when using FTP or SFTP, try  --ftp-\n"
"              create-dirs.\n"
"\n"
"       --crlf (FTP  SMTP)  Convert  LF  to  CRLF  in  upload.  Useful  for MVS\n"
, stdout);
 fputs(
"              (OS/390).\n"
"\n"
"              (SMTP added in 7.40.0)\n"
"\n"
"       --crlfile <file>\n"
"              (TLS) Provide a file using PEM format with a Certificate Revoca-\n"
"              tion List that may specify peer certificates that are to be con-\n"
"              sidered revoked.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.19.7.\n"
"\n"
"       --data-ascii <data>\n"
"              (HTTP) This is just an alias for -d, --data.\n"
"\n"
, stdout);
 fputs(
"       --data-binary <data>\n"
"              (HTTP) This posts data exactly as specified with no  extra  pro-\n"
"              cessing whatsoever.\n"
"\n"
"              If  you  start  the data with the letter @, the rest should be a\n"
"              filename.  Data is posted in a  similar  manner  as  -d,  --data\n"
"              does,  except  that  newlines and carriage returns are preserved\n"
"              and conversions are never done.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times,  the  ones  following  the\n"
"              first will append data as described in -d, --data.\n"
"\n"
"       --data-raw <data>\n"
"              (HTTP)  This  posts data similarly to -d, --data but without the\n"
"              special interpretation of the @ character.\n"
"\n"
"              See also -d, --data. Added in 7.43.0.\n"
"\n"
"       --data-urlencode <data>\n"
"              (HTTP) This posts data, similar to the other -d, --data  options\n"
, stdout);
 fputs(
"              with the exception that this performs URL-encoding.\n"
"\n"
"              To  be  CGI-compliant,  the <data> part should begin with a name\n"
"              followed by a separator and a content specification. The  <data>\n"
"              part can be passed to curl using one of the following syntaxes:\n"
"\n"
"              content\n"
"                     This  will make curl URL-encode the content and pass that\n"
"                     on. Just be careful so that the content  doesn't  contain\n"
, stdout);
 fputs(
"                     any  =  or  @  symbols, as that will then make the syntax\n"
"                     match one of the other cases below!\n"
"\n"
"              =content\n"
"                     This will make curl URL-encode the content and pass  that\n"
"                     on. The preceding = symbol is not included in the data.\n"
"\n"
"              name=content\n"
"                     This  will make curl URL-encode the content part and pass\n"
, stdout);
 fputs(
"                     that on. Note that the name part is expected to  be  URL-\n"
"                     encoded already.\n"
"\n"
"              @filename\n"
"                     This  will  make  curl  load  data  from  the  given file\n"
"                     (including any newlines), URL-encode that data  and  pass\n"
"                     it on in the POST.\n"
"\n"
"              name@filename\n"
"                     This  will  make  curl  load  data  from  the  given file\n"
, stdout);
 fputs(
"                     (including any newlines), URL-encode that data  and  pass\n"
"                     it  on  in  the  POST.  The  name part gets an equal sign\n"
"                     appended, resulting in name=urlencoded-file-content. Note\n"
"                     that the name is expected to be URL-encoded already.\n"
"       See also -d, --data and --data-raw. Added in 7.18.0.\n"
"\n"
"       -d, --data <data>\n"
"              (HTTP)  Sends  the  specified data in a POST request to the HTTP\n"
, stdout);
 fputs(
"              server, in the same way that a browser  does  when  a  user  has\n"
"              filled  in an HTML form and presses the submit button. This will\n"
"              cause curl to pass the data to the server using the content-type\n"
"              application/x-www-form-urlencoded.  Compare to -F, --form.\n"
"\n"
"              --data-raw is almost the same but does not have a special inter-\n"
"              pretation of the @ character. To post data  purely  binary,  you\n"
, stdout);
 fputs(
"              should  instead use the --data-binary option.  To URL-encode the\n"
"              value of a form field you may use --data-urlencode.\n"
"\n"
"              If any of these options is used more than once on the same  com-\n"
"              mand  line,  the  data  pieces specified will be merged together\n"
"              with a separating  &-symbol.  Thus,  using  '-d  name=daniel  -d\n"
"              skill=lousy'  would  generate  a  post  chunk  that  looks  like\n"
, stdout);
 fputs(
"              'name=daniel&skill=lousy'.\n"
"\n"
"              If you start the data with the letter @, the rest  should  be  a\n"
"              file  name  to read the data from, or - if you want curl to read\n"
"              the data from stdin. Multiple files can also be specified. Post-\n"
"              ing  data  from  a  file  named  from a file like that, carriage\n"
"              returns and newlines will be stripped out. If you don't want the\n"
, stdout);
 fputs(
"              @  character  to  have  a  special interpretation use --data-raw\n"
"              instead.\n"
"\n"
"              See also --data-binary and --data-urlencode and --data-raw. This\n"
"              option overrides -F, --form and -I, --head and --upload.\n"
"\n"
"       --delegation <LEVEL>\n"
"              (GSS/kerberos)  Set  LEVEL to tell the server what it is allowed\n"
"              to delegate when it comes to user credentials.\n"
"\n"
"              none   Don't allow any delegation.\n"
"\n"
, stdout);
 fputs(
"              policy Delegates if and only if the OK-AS-DELEGATE flag  is  set\n"
"                     in  the  Kerberos  service  ticket,  which is a matter of\n"
"                     realm policy.\n"
"\n"
"              always Unconditionally allow the server to delegate.\n"
"\n"
"       --digest\n"
"              (HTTP) Enables HTTP Digest authentication. This is an  authenti-\n"
"              cation  scheme  that  prevents the password from being sent over\n"
, stdout);
 fputs(
"              the wire in clear text. Use this in combination with the  normal\n"
"              -u, --user option to set user name and password.\n"
"\n"
"              If  this  option  is  used  several times, only the first one is\n"
"              used.\n"
"\n"
"              See also -u,  --user  and  --proxy-digest  and  --anyauth.  This\n"
"              option overrides --basic and --ntlm and --negotiate.\n"
"\n"
"       --disable-eprt\n"
"              (FTP) Tell curl to disable the use of the EPRT and LPRT commands\n"
, stdout);
 fputs(
"              when doing active FTP transfers. Curl will normally always first\n"
"              attempt  to use EPRT, then LPRT before using PORT, but with this\n"
"              option, it will use PORT right away. EPRT and  LPRT  are  exten-\n"
"              sions  to  the  original  FTP  protocol, and may not work on all\n"
"              servers, but they enable more functionality in a better way than\n"
"              the traditional PORT command.\n"
"\n"
, stdout);
 fputs(
"              --eprt can be used to explicitly enable EPRT again and --no-eprt\n"
"              is an alias for --disable-eprt.\n"
"\n"
"              If the server is accessed using IPv6, this option will  have  no\n"
"              effect as EPRT is necessary then.\n"
"\n"
"              Disabling  EPRT only changes the active behavior. If you want to\n"
"              switch to passive mode you need to not  use  -P,  --ftp-port  or\n"
"              force it with --ftp-pasv.\n"
"\n"
"       --disable-epsv\n"
, stdout);
 fputs(
"              (FTP)  (FTP)  Tell  curl  to disable the use of the EPSV command\n"
"              when doing passive FTP  transfers.  Curl  will  normally  always\n"
"              first  attempt to use EPSV before PASV, but with this option, it\n"
"              will not try using EPSV.\n"
"\n"
"              --epsv can be used to explicitly enable EPSV again and --no-epsv\n"
"              is an alias for --disable-epsv.\n"
"\n"
"              If  the  server is an IPv6 host, this option will have no effect\n"
, stdout);
 fputs(
"              as EPSV is necessary then.\n"
"\n"
"              Disabling EPSV only changes the passive behavior. If you want to\n"
"              switch to active mode you need to use -P, --ftp-port.\n"
"\n"
"       -q, --disable\n"
"              If  used  as the first parameter on the command line, the curlrc\n"
"              config file will not be read and used. See the -K, --config  for\n"
"              details on the default config file search path.\n"
"\n"
"       --dns-interface <interface>\n"
, stdout);
 fputs(
"              (DNS)  Tell  curl  to send outgoing DNS requests through <inter-\n"
"              face>. This option is a counterpart to --interface  (which  does\n"
"              not  affect  DNS). The supplied string must be an interface name\n"
"              (not an address).\n"
"\n"
"              See also --dns-ipv4-addr  and  --dns-ipv6-addr.  --dns-interface\n"
"              requires  that  the  underlying  libcurl was built to support c-\n"
"              ares. Added in 7.33.0.\n"
"\n"
"       --dns-ipv4-addr <address>\n"
, stdout);
 fputs(
"              (DNS) Tell curl to bind to <ip-address>  when  making  IPv4  DNS\n"
"              requests,  so that the DNS requests originate from this address.\n"
"              The argument should be a single IPv4 address.\n"
"\n"
"              See also --dns-interface  and  --dns-ipv6-addr.  --dns-ipv4-addr\n"
"              requires  that  the  underlying  libcurl was built to support c-\n"
"              ares. Added in 7.33.0.\n"
"\n"
"       --dns-ipv6-addr <address>\n"
, stdout);
 fputs(
"              (DNS) Tell curl to bind to <ip-address>  when  making  IPv6  DNS\n"
"              requests,  so that the DNS requests originate from this address.\n"
"              The argument should be a single IPv6 address.\n"
"\n"
"              See also --dns-interface  and  --dns-ipv4-addr.  --dns-ipv6-addr\n"
"              requires  that  the  underlying  libcurl was built to support c-\n"
"              ares. Added in 7.33.0.\n"
"\n"
"       --dns-servers <addresses>\n"
, stdout);
 fputs(
"              Set the list of DNS servers to be used  instead  of  the  system\n"
"              default.  The list of IP addresses should be separated with com-\n"
"              mas. Port numbers may also optionally be given as :<port-number>\n"
"              after each IP address.\n"
"\n"
"              --dns-servers  requires that the underlying libcurl was built to\n"
"              support c-ares. Added in 7.33.0.\n"
"\n"
"       -D, --dump-header <filename>\n"
, stdout);
 fputs(
"              (HTTP FTP) Write the received protocol headers to the  specified\n"
"              file.\n"
"\n"
"              This  option  is handy to use when you want to store the headers\n"
"              that an HTTP site sends to you. Cookies from the  headers  could\n"
"              then  be  read  in  a  second  curl  invocation by using the -b,\n"
"              --cookie option! The -c, --cookie-jar option is a better way  to\n"
"              store cookies.\n"
"\n"
, stdout);
 fputs(
"              When  used  in FTP, the FTP server response lines are considered\n"
"              being \"headers\" and thus are saved there.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -o, --output.\n"
"\n"
"       --egd-file <file>\n"
"              (TLS) Specify the path name  to  the  Entropy  Gathering  Daemon\n"
"              socket.  The  socket  is  used to seed the random engine for SSL\n"
"              connections.\n"
"\n"
, stdout);
 fputs(
"              See also --random-file.\n"
"\n"
"       --engine <name>\n"
"              (TLS) Select the OpenSSL crypto engine to use for cipher  opera-\n"
"              tions. Use --engine list to print a list of build-time supported\n"
"              engines. Note that not all (or  none)  of  the  engines  may  be\n"
"              available at run-time.\n"
"\n"
"       --expect100-timeout <seconds>\n"
"              (HTTP) Maximum time in seconds that you allow curl to wait for a\n"
, stdout);
 fputs(
"              100-continue response when curl emits an  Expects:  100-continue\n"
"              header  in  its  request.  By default curl will wait one second.\n"
"              This option accepts decimal values! When curl stops waiting,  it\n"
"              will continue as if the response has been received.\n"
"\n"
"              See also --connect-timeout. Added in 7.47.0.\n"
"\n"
"       --fail-early\n"
"              Fail and exit on the first detected transfer error.\n"
"\n"
, stdout);
 fputs(
"              When  curl is used to do multiple transfers on the command line,\n"
"              it will attempt to operate on each given URL,  one  by  one.  By\n"
"              default,  it will ignore errors if there are more URLs given and\n"
"              the last URL's  success  will  determine  the  error  code  curl\n"
"              returns.  So  early failures will be \"hidden\" by subsequent suc-\n"
"              cessful transfers.\n"
"\n"
, stdout);
 fputs(
"              Using this option, curl will instead  return  an  error  on  the\n"
"              first  transfer  that  fails,  independent of the amount of URLs\n"
"              that are given on the command line. This way, no transfer  fail-\n"
"              ures go undetected by scripts and similar.\n"
"\n"
"              This option is global and does not need to be specified for each\n"
"              use of -:, --next.\n"
"\n"
"              This option does not imply -f, --fail, which causes transfers to\n"
, stdout);
 fputs(
"              fail  due  to the server's HTTP status code. You can combine the\n"
"              two options, however note -f, --fail is not global and is there-\n"
"              fore contained by -:, --next.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -f, --fail\n"
"              (HTTP)  Fail  silently (no output at all) on server errors. This\n"
"              is mostly done to better enable scripts etc to better deal  with\n"
"              failed  attempts.  In  normal cases when an HTTP server fails to\n"
, stdout);
 fputs(
"              deliver a document, it  returns  an  HTML  document  stating  so\n"
"              (which  often  also describes why and more). This flag will pre-\n"
"              vent curl from outputting that and return error 22.\n"
"\n"
"              This method is not fail-safe and there are occasions where  non-\n"
"              successful  response  codes  will  slip through, especially when\n"
"              authentication is involved (response codes 401 and 407).\n"
"\n"
"       --false-start\n"
, stdout);
 fputs(
"              (TLS) Tells curl to use false start during  the  TLS  handshake.\n"
"              False  start  is  a  mode  where a TLS client will start sending\n"
"              application data before verifying the server's Finished message,\n"
"              thus saving a round trip when performing a full handshake.\n"
"\n"
"              This  is currently only implemented in the NSS and Secure Trans-\n"
"              port (on iOS 7.0 or later, or OS X 10.9 or later) backends.\n"
"\n"
"              Added in 7.42.0.\n"
"\n"
, stdout);
 fputs(
"       --form-string <name=string>\n"
"              (HTTP SMTP IMAP) Similar to -F, --form  except  that  the  value\n"
"              string  for  the  named parameter is used literally. Leading '@'\n"
"              and '<' characters, and the ';type=' string in the value have no\n"
"              special meaning. Use this in preference to -F, --form if there's\n"
"              any possibility that the string value may  accidentally  trigger\n"
"              the '@' or '<' features of -F, --form.\n"
"\n"
, stdout);
 fputs(
"              See also -F, --form.\n"
"\n"
"       -F, --form <name=content>\n"
"              (HTTP  SMTP  IMAP) For HTTP protocol family, this lets curl emu-\n"
"              late a filled-in form in which a user  has  pressed  the  submit\n"
"              button.  This  causes  curl  to POST data using the Content-Type\n"
"              multipart/form-data according to RFC 2388.\n"
"\n"
"              For SMTP and IMAP protocols, this is the mean to compose a  mul-\n"
"              tipart mail message to transmit.\n"
"\n"
, stdout);
 fputs(
"              This  enables  uploading of binary files etc. To force the 'con-\n"
"              tent' part to be a file, prefix the file name with an @ sign. To\n"
"              just get the content part from a file, prefix the file name with\n"
"              the symbol <. The difference between @ and  <  is  then  that  @\n"
"              makes  a  file  get attached in the post as a file upload, while\n"
"              the < makes a text field and just get the contents for that text\n"
, stdout);
 fputs(
"              field from a file.\n"
"\n"
"              Tell  curl to read content from stdin instead of a file by using\n"
"              - as filename. This goes for both @ and < constructs. When stdin\n"
"              is  used,  the  contents  is buffered in memory first by curl to\n"
"              determine its size and allow  a  possible  resend.   Defining  a\n"
"              part's  data from a named non-regular file (such as a named pipe\n"
, stdout);
 fputs(
"              or similar) is unfortunately not subject to buffering  and  will\n"
"              be effectively read at transmission time; since the full size is\n"
"              unknown before the transfer starts, such data is sent as  chunks\n"
"              by HTTP and rejected by IMAP.\n"
"\n"
"              Example: send an image to an HTTP server, where 'profile' is the\n"
"              name of the form-field to which the file  portrait.jpg  will  be\n"
"              the input:\n"
"\n"
, stdout);
 fputs(
"               curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
"\n"
"              Example:  send  a  your name and shoe size in two text fields to\n"
"              the server:\n"
"\n"
"               curl -F name=John -F shoesize=11 https://example.com/\n"
"\n"
"              Example: send a your essay in a text field to the  server.  Send\n"
"              it  as  a  plain  text field, but get the contents for it from a\n"
"              local file:\n"
"\n"
, stdout);
 fputs(
"               curl -F \"story=<hugefile.txt\" https://example.com/\n"
"\n"
"              You can also  tell  curl  what  Content-Type  to  use  by  using\n"
"              'type=', in a manner similar to:\n"
"\n"
"               curl -F \"web=@index.html;type=text/html\" example.com\n"
"\n"
"              or\n"
"\n"
"               curl -F \"name=daniel;type=text/foo\" example.com\n"
"\n"
"              You  can  also explicitly change the name field of a file upload\n"
"              part by setting filename=, like this:\n"
"\n"
, stdout);
 fputs(
"               curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
"\n"
"              If filename/path contains ',' or ';', it must be quoted by  dou-\n"
"              ble-quotes like:\n"
"\n"
"               curl   -F  \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\"  exam-\n"
"              ple.com\n"
"\n"
"              or\n"
"\n"
"               curl -F 'file=@\"localfile\";filename=\"nameinpost\"' example.com\n"
"\n"
"              Note that if a filename/path is  quoted  by  double-quotes,  any\n"
, stdout);
 fputs(
"              double-quote or backslash within the filename must be escaped by\n"
"              backslash.\n"
"\n"
"              Quoting must also be applied to non-file  data  if  it  contains\n"
"              semicolons, leading/trailing spaces or leading double quotes:\n"
"\n"
"               curl  -F  'colors=\"red;  green;  blue\";type=text/x-myapp' exam-\n"
"              ple.com\n"
"\n"
"              You can add custom headers to the  field  by  setting  headers=,\n"
"              like\n"
"\n"
, stdout);
 fputs(
"                curl -F \"submit=OK;headers=\\\"X-submit-type: OK\\\"\" example.com\n"
"\n"
"              or\n"
"\n"
"                curl -F \"submit=OK;headers=@headerfile\" example.com\n"
"\n"
"              The  headers=  keyword may appear more that once and above notes\n"
"              about quoting apply. When headers are read from  a  file,  Empty\n"
"              lines and lines starting with '#' are comments and ignored; each\n"
"              header can be folded by splitting between two words and starting\n"
, stdout);
 fputs(
"              the  continuation  line  with a space; embedded carriage-returns\n"
"              and trailing spaces are stripped.   Here  is  an  example  of  a\n"
"              header file contents:\n"
"\n"
"                # This file contain two headers.\n"
"                X-header-1: this is a header\n"
"\n"
"                # The following header is folded.\n"
"                X-header-2: this is\n"
"                 another header\n"
"\n"
"              To  support  sending  multipart  mail  messages,  the  syntax is\n"
, stdout);
 fputs(
"              extended as follows:\n"
"              - name can be omitted: the equal sign is the first character  of\n"
"              the argument,\n"
"              -  if  data  starts with '(', this signals to start a new multi-\n"
"              part: it can be followed by a content type specification.\n"
"              - a multipart can be terminated with a '=)' argument.\n"
"\n"
"              Example: the following command sends an SMTP  mime  e-mail  con-\n"
, stdout);
 fputs(
"              sisting in an inline part in two alternative formats: plain text\n"
"              and HTML. It attaches a text file:\n"
"\n"
"               curl -F '=(;type=multipart/alternative' \\\n"
"                       -F '=plain text message' \\\n"
"                       -F '= <body>HTML message</body>;type=text/html' \\\n"
"                    -F '=)' -F '=@textfile.txt' ...  smtp://example.com\n"
"\n"
"              Data can be  encoded  for  transfer  using  encoder=.  Available\n"
, stdout);
 fputs(
"              encodings  are  binary and 8bit that do nothing else than adding\n"
"              the corresponding Content-Transfer-Encoding  header,  7bit  that\n"
"              only  rejects  8-bit  characters  with a transfer error, quoted-\n"
"              printable and base64 that encodes data according to  the  corre-\n"
"              sponding schemes, limiting lines length to 76 characters.\n"
"\n"
"              Example:  send  multipart mail with a quoted-printable text mes-\n"
, stdout);
 fputs(
"              sage and a base64 attached file:\n"
"\n"
"               curl -F '=text message;encoder=quoted-printable' \\\n"
"                    -F '=@localfile;encoder=base64' ... smtp://example.com\n"
"\n"
"              See further examples and details in the MANUAL.\n"
"\n"
"              This option can be used multiple times.\n"
"\n"
"              This option overrides -d, --data and -I, --head and --upload.\n"
"\n"
"       --ftp-account <data>\n"
"              (FTP) When an FTP server asks for \"account data\" after user name\n"
, stdout);
 fputs(
"              and  password has been provided, this data is sent off using the\n"
"              ACCT command.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.13.0.\n"
"\n"
"       --ftp-alternative-to-user <command>\n"
"              (FTP) If authenticating with the USER and PASS  commands  fails,\n"
"              send  this  command.   When  connecting  to  Tumbleweed's Secure\n"
"              Transport server over FTPS using  a  client  certificate,  using\n"
, stdout);
 fputs(
"              \"SITE  AUTH\"  will tell the server to retrieve the username from\n"
"              the certificate.\n"
"              Added in 7.15.5.\n"
"\n"
"       --ftp-create-dirs\n"
"              (FTP SFTP) When an FTP or SFTP URL/operation uses  a  path  that\n"
"              doesn't  currently exist on the server, the standard behavior of\n"
"              curl is to fail. Using this option, curl will instead attempt to\n"
"              create missing directories.\n"
"\n"
"              See also --create-dirs.\n"
"\n"
, stdout);
 fputs(
"       --ftp-method <method>\n"
"              (FTP)  Control what method curl should use to reach a file on an\n"
"              FTP(S) server. The method argument should be one of the  follow-\n"
"              ing alternatives:\n"
"\n"
"              multicwd\n"
"                     curl  does  a  single CWD operation for each path part in\n"
"                     the given URL. For deep hierarchies this means very  many\n"
"                     commands.  This  is  how RFC 1738 says it should be done.\n"
, stdout);
 fputs(
"                     This is the default but the slowest behavior.\n"
"\n"
"              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR\n"
"                     etc and give a full path to the server for all these com-\n"
"                     mands. This is the fastest behavior.\n"
"\n"
"              singlecwd\n"
"                     curl does one CWD with the full target directory and then\n"
"                     operates  on  the  file  \"normally\" (like in the multicwd\n"
, stdout);
 fputs(
"                     case). This is somewhat  more  standards  compliant  than\n"
"                     'nocwd' but without the full penalty of 'multicwd'.\n"
"\n"
"       Added in 7.15.1.\n"
"\n"
"       --ftp-pasv\n"
"              (FTP)  Use  passive mode for the data connection. Passive is the\n"
"              internal default behavior, but using this option can be used  to\n"
"              override a previous -P, --ftp-port option.\n"
"\n"
"              If  this  option  is  used  several times, only the first one is\n"
, stdout);
 fputs(
"              used. Undoing an enforced passive really isn't  doable  but  you\n"
"              must then instead enforce the correct -P, --ftp-port again.\n"
"\n"
"              Passive mode means that curl will try the EPSV command first and\n"
"              then PASV, unless --disable-epsv is used.\n"
"              See also --disable-epsv. Added in 7.11.0.\n"
"\n"
"       -P, --ftp-port <address>\n"
"              (FTP) Reverses the default initiator/listener  roles  when  con-\n"
, stdout);
 fputs(
"              necting  with  FTP. This option makes curl use active mode. curl\n"
"              then tells the server to connect back to the client's  specified\n"
"              address and port, while passive mode asks the server to setup an\n"
"              IP address and port for it to connect to.  <address>  should  be\n"
"              one of:\n"
"\n"
"              interface\n"
"                     i.e  \"eth0\"  to  specify which interface's IP address you\n"
"                     want to use (Unix only)\n"
"\n"
, stdout);
 fputs(
"              IP address\n"
"                     i.e \"192.168.10.1\" to specify the exact IP address\n"
"\n"
"              host name\n"
"                     i.e \"my.host.domain\" to specify the machine\n"
"\n"
"              -      make curl pick the same IP address that is  already  used\n"
"                     for the control connection\n"
"\n"
"       If  this  option is used several times, the last one will be used. Dis-\n"
"       able the use of PORT with --ftp-pasv. Disable the attempt  to  use  the\n"
, stdout);
 fputs(
"       EPRT  command  instead  of PORT by using --disable-eprt. EPRT is really\n"
"       PORT++.\n"
"\n"
"       Since 7.19.5, you can append  \":[start]-[end]\"  to  the  right  of  the\n"
"       address,  to tell curl what TCP port range to use. That means you spec-\n"
"       ify a port range, from a lower to a  higher  number.  A  single  number\n"
"       works  as well, but do note that it increases the risk of failure since\n"
"       the port may not be available.\n"
"\n"
"       See also --ftp-pasv and --disable-eprt.\n"
"\n"
, stdout);
 fputs(
"       --ftp-pret\n"
"              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).\n"
"              Certain  FTP  servers,  mainly drftpd, require this non-standard\n"
"              command for directory listings as well as up  and  downloads  in\n"
"              PASV mode.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
"       --ftp-skip-pasv-ip\n"
"              (FTP) Tell curl to not use the IP address the server suggests in\n"
"              its response to curl's PASV command when curl connects the  data\n"
, stdout);
 fputs(
"              connection.  Instead  curl  will  re-use  the same IP address it\n"
"              already uses for the control connection.\n"
"\n"
"              This option has no effect if PORT, EPRT or EPSV is used  instead\n"
"              of PASV.\n"
"\n"
"              See also --ftp-pasv. Added in 7.14.2.\n"
"\n"
"       --ftp-ssl-ccc-mode <active/passive>\n"
"              (FTP)  Sets the CCC mode. The passive mode will not initiate the\n"
"              shutdown, but instead wait for the server to do it, and will not\n"
, stdout);
 fputs(
"              reply to the shutdown from the server. The active mode initiates\n"
"              the shutdown and waits for a reply from the server.\n"
"\n"
"              See also --ftp-ssl-ccc. Added in 7.16.2.\n"
"\n"
"       --ftp-ssl-ccc\n"
"              (FTP) Use CCC (Clear Command Channel)  Shuts  down  the  SSL/TLS\n"
"              layer after authenticating. The rest of the control channel com-\n"
"              munication will be unencrypted. This allows NAT routers to  fol-\n"
, stdout);
 fputs(
"              low the FTP transaction. The default mode is passive.\n"
"\n"
"              See also --ssl and --ftp-ssl-ccc-mode. Added in 7.16.1.\n"
"\n"
"       --ftp-ssl-control\n"
"              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.\n"
"              Allows secure authentication, but non-encrypted  data  transfers\n"
"              for  efficiency.   Fails the transfer if the server doesn't sup-\n"
"              port SSL/TLS.\n"
"\n"
"              Added in 7.16.0.\n"
"\n"
"       -G, --get\n"
, stdout);
 fputs(
"              When used, this option will make all  data  specified  with  -d,\n"
"              --data,  --data-binary or --data-urlencode to be used in an HTTP\n"
"              GET request instead of the POST request that otherwise would  be\n"
"              used. The data will be appended to the URL with a '?' separator.\n"
"              If  used  in  combination  with  -I,  --head, the POST data will\n"
"              instead be appended to the URL with a HEAD request.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times,  only  the  first  one  is\n"
"              used.  This is because undoing a GET doesn't make sense, but you\n"
"              should then instead enforce the alternative method you prefer.\n"
"\n"
"       -g, --globoff\n"
"              This option switches off the \"URL globbing parser\". When you set\n"
"              this  option, you can specify URLs that contain the letters {}[]\n"
"              without having them being interpreted by curl itself. Note  that\n"
, stdout);
 fputs(
"              these  letters are not normal legal URL contents but they should\n"
"              be encoded according to the URI standard.\n"
"\n"
"       --happy-eyeballs-timeout-ms <milliseconds>\n"
"              Happy eyeballs is an algorithm that attempts to connect to  both\n"
"              IPv4  and  IPv6  addresses for dual-stack hosts, preferring IPv6\n"
"              first for the number of milliseconds. If the IPv6 address cannot\n"
, stdout);
 fputs(
"              be  connected  to  within that time then a connection attempt is\n"
"              made to the IPv4 address in parallel. The first connection to be\n"
"              established is the one that is used.\n"
"\n"
"              The  range of suggested useful values is limited. Happy Eyeballs\n"
"              RFC 6555 says \"It is RECOMMENDED  that  connection  attempts  be\n"
"              paced  150-250 ms apart to balance human factors against network\n"
, stdout);
 fputs(
"              load.\" libcurl currently defaults to 200 ms. Firefox and  Chrome\n"
"              currently default to 300 ms.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.59.0.\n"
"\n"
"       --haproxy-protocol\n"
"              (HTTP)  Send a HAProxy PROXY protocol header at the beginning of\n"
"              the connection. This is used by some load balancers and  reverse\n"
"              proxies to indicate the client's true IP address and port.\n"
"\n"
, stdout);
 fputs(
"              This  option is primarily useful when sending test requests to a\n"
"              service that expects this header.\n"
"\n"
"              Added in 7.60.0.\n"
"\n"
"       -I, --head\n"
"              (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the\n"
"              command  HEAD which this uses to get nothing but the header of a\n"
"              document. When used on an FTP or FILE file,  curl  displays  the\n"
"              file size and last modification time only.\n"
"\n"
, stdout);
 fputs(
"       -H, --header <header/@file>\n"
"              (HTTP)  Extra header to include in the request when sending HTTP\n"
"              to a server. You may specify any number of extra  headers.  Note\n"
"              that if you should add a custom header that has the same name as\n"
"              one of the internal ones curl would  use,  your  externally  set\n"
"              header will be used instead of the internal one. This allows you\n"
, stdout);
 fputs(
"              to make even trickier stuff than curl  would  normally  do.  You\n"
"              should  not  replace internally set headers without knowing per-\n"
"              fectly well what you're doing. Remove an internal header by giv-\n"
"              ing  a  replacement  without  content  on  the right side of the\n"
"              colon, as in: -H \"Host:\". If you send the custom header with no-\n"
"              value  then its header must be terminated with a semicolon, such\n"
, stdout);
 fputs(
"              as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
"\n"
"              curl will make sure that each header  you  add/replace  is  sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
"              Starting  in  7.55.0, this option can take an argument in @file-\n"
, stdout);
 fputs(
"              name style, which then adds a header for each line in the  input\n"
"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
"              See also the -A, --user-agent and -e, --referer options.\n"
"\n"
"              Starting in 7.37.0, you need --proxy-header to send custom head-\n"
"              ers intended for a proxy.\n"
"\n"
"              Example:\n"
"\n"
"               curl -H \"X-First-Name: Joe\" http://example.com/\n"
"\n"
, stdout);
 fputs(
"              WARNING: headers set  with  this  option  will  be  set  in  all\n"
"              requests  -  even  after  redirects are followed, like when told\n"
"              with -L, --location. This can lead to the header being  sent  to\n"
"              other  hosts than the original host, so sensitive headers should\n"
"              be used with caution combined with following redirects.\n"
"\n"
"              This option can be used  multiple  times  to  add/replace/remove\n"
"              multiple headers.\n"
"\n"
, stdout);
 fputs(
"       -h, --help\n"
"              Usage  help.  This lists all current command line options with a\n"
"              short description.\n"
"       --hostpubmd5 <md5>\n"
"              (SFTP SCP) Pass a string containing 32 hexadecimal  digits.  The\n"
"              string  should  be the 128 bit MD5 checksum of the remote host's\n"
"              public key, curl will refuse the connection with the host unless\n"
"              the md5sums match.\n"
"\n"
"              Added in 7.17.1.\n"
"\n"
"       -0, --http1.0\n"
, stdout);
 fputs(
"              (HTTP)  Tells  curl to use HTTP version 1.0 instead of using its\n"
"              internally preferred HTTP version.\n"
"\n"
"              This option overrides --http1.1 and --http2.\n"
"\n"
"       --http1.1\n"
"              (HTTP) Tells curl to use HTTP version 1.1.\n"
"\n"
"              This option  overrides  -0,  --http1.0  and  --http2.  Added  in\n"
"              7.33.0.\n"
"\n"
"       --http2-prior-knowledge\n"
"              (HTTP)  Tells  curl  to  issue  its  non-TLS HTTP requests using\n"
, stdout);
 fputs(
"              HTTP/2 without HTTP/1.1 Upgrade.  It  requires  prior  knowledge\n"
"              that  the  server  supports HTTP/2 straight away. HTTPS requests\n"
"              will still do HTTP/2 the standard way with  negotiated  protocol\n"
"              version in the TLS handshake.\n"
"\n"
"              --http2-prior-knowledge requires that the underlying libcurl was\n"
"              built to support HTTP/2. This option overrides --http1.1 and -0,\n"
"              --http1.0 and --http2. Added in 7.49.0.\n"
"\n"
, stdout);
 fputs(
"       --http2\n"
"              (HTTP) Tells curl to use HTTP version 2.\n"
"\n"
"              See also --no-alpn. --http2 requires that the underlying libcurl\n"
"              was built to support HTTP/2. This option overrides --http1.1 and\n"
"              -0, --http1.0 and --http2-prior-knowledge. Added in 7.33.0.\n"
"\n"
"       --ignore-content-length\n"
"              (FTP  HTTP)  For HTTP, Ignore the Content-Length header. This is\n"
"              particularly useful for servers running Apache 1.x,  which  will\n"
, stdout);
 fputs(
"              report  incorrect  Content-Length  for files larger than 2 giga-\n"
"              bytes.\n"
"\n"
"              For FTP (since 7.46.0), skip the RETR command to figure out  the\n"
"              size before downloading a file.\n"
"\n"
"       -i, --include\n"
"              Include  the  HTTP  response  headers  in  the  output. The HTTP\n"
"              response headers can include things like server  name,  cookies,\n"
"              date of the document, HTTP version and more...\n"
"\n"
, stdout);
 fputs(
"              To view the request headers, consider the -v, --verbose option.\n"
"\n"
"              See also -v, --verbose.\n"
"\n"
"       -k, --insecure\n"
"              (TLS) By default, every SSL connection curl makes is verified to\n"
"              be secure. This option allows curl to proceed and  operate  even\n"
"              for server connections otherwise considered insecure.\n"
"\n"
"              The  server  connection  is verified by making sure the server's\n"
, stdout);
 fputs(
"              certificate contains the right name  and  verifies  successfully\n"
"              using the cert store.\n"
"\n"
"              See this online resource for further details:\n"
"               https://curl.haxx.se/docs/sslcerts.html\n"
"              See also --proxy-insecure and --cacert.\n"
"\n"
"       --interface <name>\n"
"\n"
"              Perform  an operation using a specified interface. You can enter\n"
"              interface name, IP address or host name. An example  could  look\n"
"              like:\n"
"\n"
, stdout);
 fputs(
"               curl --interface eth0:1 https://www.example.com/\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              On  Linux  it can be used to specify a VRF, but the binary needs\n"
"              to either have CAP_NET_RAW or to be ran as root.  More  informa-\n"
"              tion   about  Linux  VRF:  https://www.kernel.org/doc/Documenta-\n"
"              tion/networking/vrf.txt\n"
"\n"
"              See also --dns-interface.\n"
"\n"
"       -4, --ipv4\n"
, stdout);
 fputs(
"              This option tells curl to resolve names to IPv4 addresses  only,\n"
"              and not for example try IPv6.\n"
"\n"
"              See  also  --http1.1  and  --http2.  This  option  overrides -6,\n"
"              --ipv6.\n"
"\n"
"       -6, --ipv6\n"
"              This option tells curl to resolve names to IPv6 addresses  only,\n"
"              and not for example try IPv4.\n"
"\n"
"              See  also  --http1.1  and  --http2.  This  option  overrides -6,\n"
"              --ipv6.\n"
"\n"
, stdout);
 fputs(
"       -j, --junk-session-cookies\n"
"              (HTTP) When curl is told to read cookies from a given file, this\n"
"              option  will  make  it  discard all \"session cookies\". This will\n"
"              basically have the same effect as if a new session  is  started.\n"
"              Typical  browsers  always  discard  session cookies when they're\n"
"              closed down.\n"
"\n"
"              See also -b, --cookie and -c, --cookie-jar.\n"
"\n"
"       --keepalive-time <seconds>\n"
, stdout);
 fputs(
"              This option sets the time a  connection  needs  to  remain  idle\n"
"              before  sending keepalive probes and the time between individual\n"
"              keepalive probes. It is currently effective on operating systems\n"
"              offering  the  TCP_KEEPIDLE  and  TCP_KEEPINTVL  socket  options\n"
"              (meaning Linux, recent AIX, HP-UX and more). This option has  no\n"
"              effect if --no-keepalive is used.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"              If unspecified, the option defaults to 60 seconds.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --key-type <type>\n"
"              (TLS) Private key file type. Specify which type your --key  pro-\n"
"              vided  private  key  is. DER, PEM, and ENG are supported. If not\n"
"              specified, PEM is assumed.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
, stdout);
 fputs(
"       --key <key>\n"
"              (TLS SSH) Private key file name. Allows you to provide your pri-\n"
"              vate  key in this separate file. For SSH, if not specified, curl\n"
"              tries the following candidates in order:\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --krb <level>\n"
"              (FTP) Enable Kerberos authentication and use. The level must  be\n"
"              entered and should be one of 'clear', 'safe', 'confidential', or\n"
, stdout);
 fputs(
"              'private'. Should you use a level that  is  not  one  of  these,\n"
"              'private' will instead be used.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              --krb  requires that the underlying libcurl was built to support\n"
"              Kerberos.\n"
"\n"
"       --libcurl <file>\n"
"              Append this option to any ordinary curl command  line,  and  you\n"
"              will  get a libcurl-using C source code written to the file that\n"
, stdout);
 fputs(
"              does the equivalent of what your command-line operation does!\n"
"\n"
"              If this option is used several times, the last given  file  name\n"
"              will be used.\n"
"\n"
"              Added in 7.16.1.\n"
"\n"
"       --limit-rate <speed>\n"
"              Specify  the  maximum  transfer  rate you want curl to use - for\n"
"              both downloads and uploads. This feature is useful if you have a\n"
"              limited pipe and you'd like your transfer not to use your entire\n"
, stdout);
 fputs(
"              bandwidth. To make it slower than it otherwise would be.\n"
"\n"
"              The given speed is measured in bytes/second, unless a suffix  is\n"
"              appended.   Appending  'k' or 'K' will count the number as kilo-\n"
"              bytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes  it\n"
"              gigabytes. Examples: 200K, 3m and 1G.\n"
"\n"
"              If  you  also use the -Y, --speed-limit option, that option will\n"
, stdout);
 fputs(
"              take precedence and might cripple the rate-limiting slightly, to\n"
"              help keeping the speed-limit logic working.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -l, --list-only\n"
"              (FTP  POP3)  (FTP)  When  listing  an FTP directory, this switch\n"
"              forces a name-only view. This is especially useful if  the  user\n"
"              wants  to  machine-parse  the contents of an FTP directory since\n"
, stdout);
 fputs(
"              the normal directory view doesn't use a standard look or format.\n"
"              When used like this, the option causes a NLST command to be sent\n"
"              to the server instead of LIST.\n"
"\n"
"              Note: Some FTP servers list only  files  in  their  response  to\n"
"              NLST; they do not include sub-directories and symbolic links.\n"
"\n"
"              (POP3)  When  retrieving a specific email from POP3, this switch\n"
, stdout);
 fputs(
"              forces a LIST command to be performed instead of RETR.  This  is\n"
"              particularly  useful if the user wants to see if a specific mes-\n"
"              sage id exists on the server and what size it is.\n"
"\n"
"              Note: When combined with -X, --request, this option can be  used\n"
"              to send an UIDL command instead, so the user may use the email's\n"
"              unique identifier rather  than  it's  message  id  to  make  the\n"
"              request.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.21.5.\n"
"\n"
"       --local-port <num/range>\n"
"              Set  a  preferred single number or range (FROM-TO) of local port\n"
"              numbers to use for the connection(s).  Note that port numbers by\n"
"              nature  are a scarce resource that will be busy at times so set-\n"
"              ting this range to something too narrow might cause  unnecessary\n"
"              connection setup failures.\n"
"\n"
"              Added in 7.15.2.\n"
"\n"
"       --location-trusted\n"
, stdout);
 fputs(
"              (HTTP)  Like  -L,  --location, but will allow sending the name +\n"
"              password to all hosts that the site may redirect to. This may or\n"
"              may not introduce a security breach if the site redirects you to\n"
"              a site to which you'll send your authentication info  (which  is\n"
"              plaintext in the case of HTTP Basic authentication).\n"
"\n"
"              See also -u, --user.\n"
"\n"
"       -L, --location\n"
, stdout);
 fputs(
"              (HTTP)  If  the server reports that the requested page has moved\n"
"              to a different location (indicated with a Location: header and a\n"
"              3XX  response code), this option will make curl redo the request\n"
"              on the new place. If used together with  -i,  --include  or  -I,\n"
"              --head,  headers  from  all  requested pages will be shown. When\n"
"              authentication is used, curl only sends its credentials  to  the\n"
, stdout);
 fputs(
"              initial  host.  If a redirect takes curl to a different host, it\n"
"              won't be able to intercept the user+password. See  also  --loca-\n"
"              tion-trusted  on how to change this. You can limit the amount of\n"
"              redirects to follow by using the --max-redirs option.\n"
"\n"
"              When curl follows a redirect and the request is not a plain  GET\n"
"              (for example POST or PUT), it will do the following request with\n"
, stdout);
 fputs(
"              a GET if the HTTP response was 301, 302, or 303. If the response\n"
"              code  was  any  other  3xx code, curl will re-send the following\n"
"              request using the same unmodified method.\n"
"\n"
"              You can tell curl to not change the non-GET  request  method  to\n"
"              GET  after  a  30x  response  by using the dedicated options for\n"
"              that: --post301, --post302 and --post303.\n"
"\n"
"       --login-options <options>\n"
, stdout);
 fputs(
"              (IMAP POP3 SMTP) Specify the login options to use during  server\n"
"              authentication.\n"
"\n"
"              You  can  use  the  login  options  to specify protocol specific\n"
"              options that may be used during authentication. At present  only\n"
"              IMAP,  POP3 and SMTP support login options. For more information\n"
"              about the login options please see RFC 2384, RFC 5092  and  IETF\n"
"              draft draft-earhart-url-smtp-00.txt\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --mail-auth <address>\n"
"              (SMTP)  Specify  a  single address. This will be used to specify\n"
"              the authentication address (identity)  of  a  submitted  message\n"
"              that is being relayed to another server.\n"
"\n"
"              See also --mail-rcpt and --mail-from. Added in 7.25.0.\n"
"\n"
"       --mail-from <address>\n"
, stdout);
 fputs(
"              (SMTP)  Specify  a single address that the given mail should get\n"
"              sent from.\n"
"\n"
"              See also --mail-rcpt and --mail-auth. Added in 7.20.0.\n"
"\n"
"       --mail-rcpt <address>\n"
"              (SMTP) Specify a single address, user name or mailing list name.\n"
"              Repeat this option several times to send to multiple recipients.\n"
"              When  performing a mail transfer, the recipient should specify a\n"
"              valid email address to send the mail to.\n"
"\n"
, stdout);
 fputs(
"              When performing an  address  verification  (VRFY  command),  the\n"
"              recipient  should be specified as the user name or user name and\n"
"              domain (as per Section 3.5 of RFC5321). (Added in 7.34.0)\n"
"\n"
"              When performing a mailing list expand (EXPN command), the recip-\n"
"              ient  should  be  specified using the mailing list name, such as\n"
"              \"Friends\" or \"London-Office\".  (Added in 7.34.0)\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
, stdout);
 fputs(
"       -M, --manual\n"
"              Manual. Display the huge help text.\n"
"\n"
"       --max-filesize <bytes>\n"
"              Specify the maximum size (in bytes) of a file  to  download.  If\n"
"              the  file requested is larger than this value, the transfer will\n"
"              not start and curl will return with exit code 63.\n"
"\n"
"              A size modifier may be used. For example, Appending 'k'  or  'K'\n"
"              will  count  the  number  as  kilobytes,  'm'  or  'M'  makes it\n"
, stdout);
 fputs(
"              megabytes, while 'g' or 'G' makes it gigabytes. Examples:  200K,\n"
"              3m and 1G. (Added in 7.58.0)\n"
"\n"
"              NOTE:  The  file size is not always known prior to download, and\n"
"              for such files this option has no effect even if the file trans-\n"
"              fer  ends  up  being larger than this given limit. This concerns\n"
"              both FTP and HTTP transfers.\n"
"\n"
"              See also --limit-rate.\n"
"\n"
"       --max-redirs <num>\n"
, stdout);
 fputs(
"              (HTTP) Set maximum  number  of  redirection-followings  allowed.\n"
"              When  -L,  --location is used, is used to prevent curl from fol-\n"
"              lowing redirections \"in absurdum\". By default, the limit is  set\n"
"              to 50 redirections. Set this option to -1 to make it unlimited.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -m, --max-time <time>\n"
, stdout);
 fputs(
"              Maximum  time  in  seconds that you allow the whole operation to\n"
"              take.  This is useful for preventing your batch jobs from  hang-\n"
"              ing  for  hours due to slow networks or links going down.  Since\n"
"              7.32.0, this option accepts decimal values, but the actual time-\n"
"              out will decrease in accuracy as the specified timeout increases\n"
"              in decimal precision.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also --connect-timeout.\n"
"\n"
"       --metalink\n"
"              This option can tell curl to parse and process a  given  URI  as\n"
"              Metalink  file  (both  version 3 and 4 (RFC 5854) are supported)\n"
"              and make use of the mirrors listed within for failover if  there\n"
"              are  errors (such as the file or server not being available). It\n"
, stdout);
 fputs(
"              will also verify the hash of the file after  the  download  com-\n"
"              pletes.  The Metalink file itself is downloaded and processed in\n"
"              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 FILE proto-\n"
"              col (file://):\n"
"\n"
, stdout);
 fputs(
"               curl --metalink file://example.metalink\n"
"\n"
"              Please  note  that if FILE protocol is disabled, there is no way\n"
"              to use a local Metalink file at the time of this  writing.  Also\n"
"              note  that  if  --metalink  and -i, --include are used together,\n"
"              --include will be ignored. This is because including headers  in\n"
"              the  response  will break Metalink parser and if the headers are\n"
, stdout);
 fputs(
"              included in the file described in Metalink file, hash check will\n"
"              fail.\n"
"\n"
"              --metalink  requires  that  the  underlying libcurl was built to\n"
"              support metalink. Added in 7.27.0.\n"
"\n"
"       --negotiate\n"
"              (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
"\n"
"              This option requires a library built with GSS-API or  SSPI  sup-\n"
"              port.  Use  -V,  --version  to  see  if  your curl supports GSS-\n"
, stdout);
 fputs(
"              API/SSPI or SPNEGO.\n"
"\n"
"              When using this option, you must also provide a fake -u,  --user\n"
"              option  to  activate the authentication code properly. Sending a\n"
"              '-u :' is enough as the user name  and  password  from  the  -u,\n"
"              --user option aren't actually used.\n"
"\n"
"              If  this  option  is  used  several times, only the first one is\n"
"              used.\n"
"\n"
, stdout);
 fputs(
"              See also --basic and --ntlm and --anyauth and --proxy-negotiate.\n"
"\n"
"       --netrc-file <filename>\n"
"              This option is similar to -n, --netrc, except that  you  provide\n"
"              the  path  (absolute  or  relative)  to the netrc file that Curl\n"
"              should use.  You can only specify one netrc file per invocation.\n"
"              If  several --netrc-file options are provided, the last one will\n"
"              be used.\n"
"\n"
, stdout);
 fputs(
"              It will abide by --netrc-optional if specified.\n"
"\n"
"              This option overrides -n, --netrc. Added in 7.21.5.\n"
"\n"
"       --netrc-optional\n"
"              Very similar to -n, --netrc, but this option  makes  the  .netrc\n"
"              usage optional and not mandatory as the -n, --netrc option does.\n"
"\n"
"              See also --netrc-file. This option overrides -n, --netrc.\n"
"\n"
"       -n, --netrc\n"
"              Makes  curl  scan  the  .netrc  (_netrc  on Windows) file in the\n"
, stdout);
 fputs(
"              user's home directory for login name and password. This is typi-\n"
"              cally  used for FTP on Unix. If used with HTTP, curl will enable\n"
"              user authentication. See netrc(5) ftp(1) for details on the file\n"
"              format.  Curl  will  not  complain if that file doesn't have the\n"
"              right permissions (it should not be either world- or group-read-\n"
"              able).  The environment variable \"HOME\" is used to find the home\n"
"              directory.\n"
"\n"
, stdout);
 fputs(
"              A quick and very simple example of how  to  setup  a  .netrc  to\n"
"              allow  curl to FTP to the machine host.domain.com with user name\n"
"              'myself' and password 'secret' should look similar to:\n"
"\n"
"              machine host.domain.com login myself password secret\n"
"\n"
"       -:, --next\n"
"              Tells curl to use a separate operation for the following URL and\n"
"              associated   options.  This  allows  you  to  send  several  URL\n"
, stdout);
 fputs(
"              requests, each with their own  specific  options,  for  example,\n"
"              such as different user names or custom requests for each.\n"
"\n"
"              -:,  --next  will  reset  all local options and only global ones\n"
"              will have their values survive over to the  operation  following\n"
"              the  -:,  --next  instruction. Global options include -v, --ver-\n"
"              bose, --trace, --trace-ascii and --fail-early.\n"
"\n"
, stdout);
 fputs(
"              For example, you can do both a GET and a POST in a  single  com-\n"
"              mand line:\n"
"\n"
"               curl www1.example.com --next -d postthis www2.example.com\n"
"\n"
"              Added in 7.36.0.\n"
"\n"
"       --no-alpn\n"
"              (HTTPS)  Disable  the  ALPN  TLS  extension.  ALPN is enabled by\n"
"              default if libcurl was built with an SSL library  that  supports\n"
"              ALPN.  ALPN is used by a libcurl that supports HTTP/2 to negoti-\n"
, stdout);
 fputs(
"              ate HTTP/2 support with the server during https sessions.\n"
"\n"
"              See also --no-npn  and  --http2.  --no-alpn  requires  that  the\n"
"              underlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"
"       -N, --no-buffer\n"
"              Disables the buffering of the output stream. In normal work sit-\n"
"              uations, curl will use a standard buffered  output  stream  that\n"
"              will have the effect that it will output the data in chunks, not\n"
, stdout);
 fputs(
"              necessarily exactly when the data arrives.   Using  this  option\n"
"              will disable that buffering.\n"
"\n"
"              Note  that  this  is the negated option name documented. You can\n"
"              thus use --buffer to enforce the buffering.\n"
"\n"
"       --no-keepalive\n"
"              Disables the use of keepalive messages on  the  TCP  connection.\n"
"              curl otherwise enables them by default.\n"
"\n"
"              Note  that  this  is the negated option name documented. You can\n"
, stdout);
 fputs(
"              thus use --keepalive to enforce keepalive.\n"
"\n"
"       --no-npn\n"
"              (HTTPS) Disable the NPN TLS extension. NPN is enabled by default\n"
"              if  libcurl was built with an SSL library that supports NPN. NPN\n"
"              is used by a libcurl that supports HTTP/2  to  negotiate  HTTP/2\n"
"              support with the server during https sessions.\n"
"\n"
"              See  also  --no-alpn  and  --http2.  --no-npn  requires that the\n"
, stdout);
 fputs(
"              underlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"
"       --no-sessionid\n"
"              (TLS) Disable curl's use of SSL session-ID caching.  By  default\n"
"              all  transfers are done using the cache. Note that while nothing\n"
"              should ever get hurt by attempting  to  reuse  SSL  session-IDs,\n"
"              there seem to be broken SSL implementations in the wild that may\n"
"              require you to disable this in order for you to succeed.\n"
"\n"
, stdout);
 fputs(
"              Note that this is the negated option name  documented.  You  can\n"
"              thus use --sessionid to enforce session-ID caching.\n"
"\n"
"              Added in 7.16.0.\n"
"\n"
"       --noproxy <no-proxy-list>\n"
"              Comma-separated  list  of hosts which do not use a proxy, if one\n"
"              is specified.  The only wildcard is a single * character,  which\n"
"              matches all hosts, and effectively disables the proxy. Each name\n"
, stdout);
 fputs(
"              in this list is matched as either a domain  which  contains  the\n"
"              hostname,  or  the hostname itself. For example, local.com would\n"
"              match  local.com,  local.com:80,  and  www.local.com,  but   not\n"
"              www.notlocal.com.\n"
"\n"
"              Since  7.53.0,  This  option overrides the environment variables\n"
"              that disable the proxy. If there's an environment variable  dis-\n"
, stdout);
 fputs(
"              abling a proxy, you can set noproxy list to \"\" to override it.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --ntlm-wb\n"
"              (HTTP) Enables NTLM much in the style --ntlm does, but hand over\n"
"              the authentication to the separate binary  ntlmauth  application\n"
"              that is executed when needed.\n"
"\n"
"              See also --ntlm and --proxy-ntlm.\n"
"\n"
"       --ntlm (HTTP)  Enables  NTLM  authentication.  The  NTLM authentication\n"
, stdout);
 fputs(
"              method was designed by Microsoft and is used by IIS web servers.\n"
"              It  is a proprietary protocol, reverse-engineered by clever peo-\n"
"              ple and implemented in curl based on their efforts. This kind of\n"
"              behavior  should  not be endorsed, you should encourage everyone\n"
"              who uses NTLM to switch to a public and  documented  authentica-\n"
"              tion method instead, such as Digest.\n"
"\n"
, stdout);
 fputs(
"              If  you  want to enable NTLM for your proxy authentication, then\n"
"              use --proxy-ntlm.\n"
"\n"
"              If this option is used several times,  only  the  first  one  is\n"
"              used.\n"
"\n"
"              See  also  --proxy-ntlm.  --ntlm  requires  that  the underlying\n"
"              libcurl was built to support TLS. This option overrides  --basic\n"
"              and --negotiated and --digest and --anyauth.\n"
"\n"
"       --oauth2-bearer <token>\n"
, stdout);
 fputs(
"              (IMAP  POP3  SMTP) Specify the Bearer Token for OAUTH 2.0 server\n"
"              authentication. The Bearer Token is used in conjunction with the\n"
"              user  name  which  can  be specified as part of the --url or -u,\n"
"              --user options.\n"
"\n"
"              The Bearer Token and user name are formatted  according  to  RFC\n"
"              6750.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -o, --output <file>\n"
, stdout);
 fputs(
"              Write output to <file> instead of stdout. If you are using {} or\n"
"              [] to fetch multiple documents, you can use '#'  followed  by  a\n"
"              number  in  the <file> specifier. That variable will be replaced\n"
"              with the current string for the URL being fetched. Like in:\n"
"\n"
"               curl http://{one,two}.example.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 URLs  you\n"
"              have.  For  example, if you specify two URLs on the same command\n"
"              line, you can use it like this:\n"
"\n"
"                curl -o aa example.com -o bb example.net\n"
"\n"
"              and the order of the -o options and  the  URLs  doesn't  matter,\n"
"              just  that  the  first -o is for the first URL and so on, so the\n"
"              above command line can also be written as\n"
"\n"
, stdout);
 fputs(
"                curl example.com example.net -o aa -o bb\n"
"\n"
"              See also the --create-dirs option to create the  local  directo-\n"
"              ries  dynamically.  Specifying the output as '-' (a single dash)\n"
"              will force the output to be done to stdout.\n"
"\n"
"              See  also  -O,  --remote-name  and  --remote-name-all  and   -J,\n"
"              --remote-header-name.\n"
"\n"
"       --pass <phrase>\n"
"              (SSH TLS) Passphrase for the private key\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --path-as-is\n"
"              Tell  curl  to  not handle sequences of /../ or /./ in the given\n"
"              URL path. Normally curl will squash or merge them  according  to\n"
"              standards but with this option set you tell it not to do that.\n"
"\n"
"              Added in 7.42.0.\n"
"\n"
"       --pinnedpubkey <hashes>\n"
"              (TLS)  Tells  curl  to  use  the  specified  public key file (or\n"
, stdout);
 fputs(
"              hashes) to verify the peer. This can be a path to a  file  which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
"              rated by ';'\n"
"\n"
"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
"              certificate indicating its identity. A public key  is  extracted\n"
, stdout);
 fputs(
"              from  this certificate and if it does not exactly match the pub-\n"
"              lic key provided to this option, curl will abort the  connection\n"
"              before sending or receiving any data.\n"
"\n"
"              PEM/DER support:\n"
"                7.39.0: OpenSSL, GnuTLS and GSKit\n"
"                7.43.0: NSS and wolfSSL/CyaSSL\n"
"                7.47.0: mbedtls\n"
"                7.49.0: PolarSSL sha256 support:\n"
"                7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL.\n"
, stdout);
 fputs(
"                7.47.0: mbedtls\n"
"                7.49.0: PolarSSL Other SSL backends not supported.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --post301\n"
"              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
"              requests into GET requests when following a 301 redirection. The\n"
"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
, stdout);
 fputs(
"              the conversion by default to maintain  consistency.  However,  a\n"
"              server  may  require  a POST to remain a POST after such a redi-\n"
"              rection. This option is meaningful only when using  -L,  --loca-\n"
"              tion.\n"
"\n"
"              See  also  --post302  and --post303 and -L, --location. Added in\n"
"              7.17.1.\n"
"\n"
"       --post302\n"
"              (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
, stdout);
 fputs(
"              requests into GET requests when following a 302 redirection. The\n"
"              non-RFC behaviour is ubiquitous in web browsers,  so  curl  does\n"
"              the  conversion  by  default to maintain consistency. However, a\n"
"              server may require a POST to remain a POST after  such  a  redi-\n"
"              rection.  This  option is meaningful only when using -L, --loca-\n"
"              tion.\n"
"\n"
"              See also --post301 and --post303 and -L,  --location.  Added  in\n"
, stdout);
 fputs(
"              7.19.1.\n"
"\n"
"       --post303\n"
"              (HTTP) Tells curl to respect RFC 7231/6.4.4 and not convert POST\n"
"              requests into GET requests when following a 303 redirection. The\n"
"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
"              the conversion by default to maintain  consistency.  However,  a\n"
"              server  may  require  a POST to remain a POST after such a redi-\n"
, stdout);
 fputs(
"              rection. This option is meaningful only when using  -L,  --loca-\n"
"              tion.\n"
"\n"
"              See  also  --post302  and --post301 and -L, --location. Added in\n"
"              7.26.0.\n"
"\n"
"       --preproxy [protocol://]host[:port]\n"
"              Use the specified SOCKS proxy before connecting to  an  HTTP  or\n"
"              HTTPS  -x,  --proxy.  In  such a case curl first connects to the\n"
"              SOCKS proxy and then connects (through SOCKS)  to  the  HTTP  or\n"
, stdout);
 fputs(
"              HTTPS proxy. Hence pre proxy.\n"
"\n"
"              The pre proxy string should be specified with a protocol:// pre-\n"
"              fix to  specify  alternative  proxy  protocols.  Use  socks4://,\n"
"              socks4a://,  socks5://  or  socks5h://  to  request the specific\n"
"              SOCKS version to be used. No protocol specified will  make  curl\n"
"              default to SOCKS4.\n"
"\n"
"              If  the  port number is not specified in the proxy string, it is\n"
, stdout);
 fputs(
"              assumed to be 1080.\n"
"\n"
"              User and password that might be provided in the proxy string are\n"
"              URL  decoded by curl. This allows you to pass in special charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -#, --progress-bar\n"
"              Make curl display transfer progress as  a  simple  progress  bar\n"
, stdout);
 fputs(
"              instead of the standard, more informational, meter.\n"
"\n"
"              This  progress  bar draws a single line of '#' characters across\n"
"              the screen and shows a percentage if the transfer size is known.\n"
"              For  transfers  without  a  known size, there will be space ship\n"
"              (-=o=-) that moves back and forth but only while data  is  being\n"
"              transferred, with a set of flying hash sign symbols on top.\n"
"\n"
"       --proto-default <protocol>\n"
, stdout);
 fputs(
"              Tells curl to use protocol for any URL missing a scheme name.\n"
"\n"
"              Example:\n"
"\n"
"               curl --proto-default https ftp.mozilla.org\n"
"\n"
"              An  unknown  or  unsupported  protocol causes error CURLE_UNSUP-\n"
"              PORTED_PROTOCOL (1).\n"
"\n"
"              This option does not change the default proxy protocol (http).\n"
"\n"
"              Without this option curl would make a guess based on  the  host,\n"
"              see --url for details.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.45.0.\n"
"\n"
"       --proto-redir <protocols>\n"
"              Tells  curl to limit what protocols it may use on redirect. Pro-\n"
"              tocols denied by --proto are not overridden by this option.  See\n"
"              --proto for how protocols are represented.\n"
"\n"
"              Example, allow only HTTP and HTTPS on redirect:\n"
"\n"
"               curl --proto-redir -all,http,https http://example.com\n"
"\n"
"              By default curl will allow all protocols on redirect except sev-\n"
, stdout);
 fputs(
"              eral disabled for security reasons: Since 7.19.4  FILE  and  SCP\n"
"              are  disabled,  and since 7.40.0 SMB and SMBS are also disabled.\n"
"              Specifying all  or  +all  enables  all  protocols  on  redirect,\n"
"              including those disabled for security.\n"
"\n"
"              Added in 7.20.2.\n"
"\n"
"       --proto <protocols>\n"
"              Tells  curl  to limit what protocols it may use in the transfer.\n"
, stdout);
 fputs(
"              Protocols are evaluated left to right, are comma separated,  and\n"
"              are each a protocol name or\n"
"\n"
"              +  Permit this protocol in addition to protocols already permit-\n"
"                 ted (this is the default if no modifier is used).\n"
"\n"
"              -  Deny this protocol, removing it from the  list  of  protocols\n"
"                 already permitted.\n"
"\n"
"              =  Permit  only this protocol (ignoring the list already permit-\n"
, stdout);
 fputs(
"                 ted), though subject  to  later  modification  by  subsequent\n"
"                 entries in the comma separated list.\n"
"\n"
"              For example:\n"
"\n"
"              --proto -ftps  uses the default protocols, but disables ftps\n"
"\n"
"              --proto -all,https,+http\n"
"                             only enables http and https\n"
"\n"
"              --proto =http,https\n"
"                             also only enables http and https\n"
"\n"
, stdout);
 fputs(
"       Unknown protocols produce a warning. This allows scripts to safely rely\n"
"       on being able to disable potentially dangerous protocols, without rely-\n"
"       ing  upon  support  for that protocol being built into curl to avoid an\n"
"       error.\n"
"\n"
"       This option can be used multiple times, in which case the effect is the\n"
"       same as concatenating the protocols into one instance of the option.\n"
"\n"
"       See also --proto-redir and --proto-default. Added in 7.20.2.\n"
"\n"
"       --proxy-anyauth\n"
, stdout);
 fputs(
"              Tells  curl to pick a suitable authentication method when commu-\n"
"              nicating with the given HTTP proxy. This might  cause  an  extra\n"
"              request/response round-trip.\n"
"\n"
"              See also -x, --proxy and --proxy-basic and --proxy-digest. Added\n"
"              in 7.13.2.\n"
"\n"
"       --proxy-basic\n"
"              Tells curl to use HTTP Basic authentication  when  communicating\n"
"              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
, stdout);
 fputs(
"              remote host. Basic is the  default  authentication  method  curl\n"
"              uses with proxies.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-digest.\n"
"\n"
"       --proxy-cacert <file>\n"
"              Same as --cacert but used in HTTPS proxy context.\n"
"\n"
"              See  also  --proxy-capath  and  --cacert  and  --capath  and -x,\n"
"              --proxy. Added in 7.52.0.\n"
"\n"
"       --proxy-capath <dir>\n"
"              Same as --capath but used in HTTPS proxy context.\n"
"\n"
, stdout);
 fputs(
"              See also --proxy-cacert and -x, --proxy and --capath.  Added  in\n"
"              7.52.0.\n"
"\n"
"       --proxy-cert-type <type>\n"
"              Same as --cert-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-cert <cert[:passwd]>\n"
"              Same as -E, --cert but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-ciphers <list>\n"
"              Same as --ciphers but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
, stdout);
 fputs(
"       --proxy-crlfile <file>\n"
"              Same as --crlfile but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-digest\n"
"              Tells  curl to use HTTP Digest authentication when communicating\n"
"              with the given proxy. Use --digest for enabling HTTP Digest with\n"
"              a remote host.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-basic.\n"
"\n"
"       --proxy-header <header/@file>\n"
, stdout);
 fputs(
"              (HTTP)  Extra header to include in the request when sending HTTP\n"
"              to a proxy. You may specify any number of extra headers. This is\n"
"              the  equivalent option to -H, --header but is for proxy communi-\n"
"              cation only like in CONNECT requests when you  want  a  separate\n"
"              header  sent  to  the proxy to what is sent to the actual remote\n"
"              host.\n"
"\n"
"              curl will make sure that each header  you  add/replace  is  sent\n"
, stdout);
 fputs(
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
"              Headers  specified  with  this  option  will  not be included in\n"
"              requests that curl knows will not be sent to a proxy.\n"
"\n"
"              Starting in 7.55.0, this option can take an argument  in  @file-\n"
, stdout);
 fputs(
"              name  style, which then adds a header for each line in the input\n"
"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
"              This option can be used  multiple  times  to  add/replace/remove\n"
"              multiple headers.\n"
"\n"
"              Added in 7.37.0.\n"
"       --proxy-insecure\n"
"              Same as -k, --insecure but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key-type <type>\n"
, stdout);
 fputs(
"              Same as --key-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key <key>\n"
"              Same as --key but used in HTTPS proxy context.\n"
"\n"
"       --proxy-negotiate\n"
"              Tells  curl  to  use HTTP Negotiate (SPNEGO) authentication when\n"
"              communicating with the given proxy. Use --negotiate for enabling\n"
"              HTTP Negotiate (SPNEGO) with a remote host.\n"
"\n"
, stdout);
 fputs(
"              See also --proxy-anyauth and --proxy-basic. Added in 7.17.1.\n"
"\n"
"       --proxy-ntlm\n"
"              Tells  curl  to  use HTTP NTLM authentication when communicating\n"
"              with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
"              host.\n"
"\n"
"              See also --proxy-negotiate and --proxy-anyauth.\n"
"\n"
"       --proxy-pass <phrase>\n"
"              Same as --pass but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-pinnedpubkey <hashes>\n"
, stdout);
 fputs(
"              (TLS)  Tells  curl  to  use  the  specified  public key file (or\n"
"              hashes) to verify the proxy. This can be a path to a file  which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
"              rated by ';'\n"
"\n"
"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
, stdout);
 fputs(
"              certificate indicating its identity. A public key  is  extracted\n"
"              from  this certificate and if it does not exactly match the pub-\n"
"              lic key provided to this option, curl will abort the  connection\n"
"              before sending or receiving any data.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy-service-name <name>\n"
"              This  option  allows  you  to  change the service name for proxy\n"
, stdout);
 fputs(
"              negotiation.\n"
"\n"
"              Added in 7.43.0.\n"
"\n"
"       --proxy-ssl-allow-beast\n"
"              Same as --ssl-allow-beast but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-tlsauthtype <type>\n"
"              Same as --tlsauthtype but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-tlspassword <string>\n"
"              Same as --tlspassword but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
, stdout);
 fputs(
"       --proxy-tlsuser <name>\n"
"              Same as --tlsuser but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-tlsv1\n"
"              Same as -1, --tlsv1 but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -U, --proxy-user <user:password>\n"
"              Specify the user name and password to use for proxy  authentica-\n"
"              tion.\n"
"\n"
"              If  you  use  a  Windows  SSPI-enabled curl binary and do either\n"
, stdout);
 fputs(
"              Negotiate or NTLM authentication  then  you  can  tell  curl  to\n"
"              select the user name and password from your environment by spec-\n"
"              ifying a single colon with this option: \"-U :\".\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -x, --proxy [protocol://]host[:port]\n"
"              Use the specified proxy.\n"
"\n"
"              The proxy string can be specified with a protocol:// prefix.  No\n"
, stdout);
 fputs(
"              protocol specified or http:// will be treated as HTTP proxy. Use\n"
"              socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
"              cific SOCKS version to be used.  (The protocol support was added\n"
"              in curl 7.21.7)\n"
"\n"
"              HTTPS proxy support via https:// protocol prefix  was  added  in\n"
"              7.52.0 for OpenSSL, GnuTLS and NSS.\n"
"\n"
"              Unrecognized  and  unsupported  proxy  protocols  cause an error\n"
, stdout);
 fputs(
"              since 7.52.0.  Prior versions may ignore the  protocol  and  use\n"
"              http:// instead.\n"
"\n"
"              If  the  port number is not specified in the proxy string, it is\n"
"              assumed to be 1080.\n"
"\n"
"              This option overrides existing environment  variables  that  set\n"
"              the  proxy  to use. If there's an environment variable setting a\n"
"              proxy, you can set proxy to \"\" to override it.\n"
"\n"
, stdout);
 fputs(
"              All operations that are performed over an HTTP proxy will trans-\n"
"              parently  be  converted  to HTTP. It means that certain protocol\n"
"              specific operations might not be available. This is not the case\n"
"              if you can tunnel through the proxy, as one with the -p, --prox-\n"
"              ytunnel option.\n"
"\n"
"              User and password that might be provided in the proxy string are\n"
, stdout);
 fputs(
"              URL  decoded by curl. This allows you to pass in special charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
"              The proxy host can be specified the exact same way as the  proxy\n"
"              environment  variables,  including the protocol prefix (http://)\n"
"              and the embedded user + password.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy1.0 <host[:port]>\n"
, stdout);
 fputs(
"              Use the specified HTTP 1.0 proxy. If  the  port  number  is  not\n"
"              specified, it is assumed at port 1080.\n"
"\n"
"              The  only  difference between this and the HTTP proxy option -x,\n"
"              --proxy, is that attempts to use CONNECT through the proxy  will\n"
"              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
"       -p, --proxytunnel\n"
"              When  an  HTTP proxy is used -x, --proxy, this option will cause\n"
, stdout);
 fputs(
"              non-HTTP protocols  to  attempt  to  tunnel  through  the  proxy\n"
"              instead  of merely using it to do HTTP-like operations. The tun-\n"
"              nel approach is made with the HTTP  proxy  CONNECT  request  and\n"
"              requires that the proxy allows direct connect to the remote port\n"
"              number curl wants to tunnel through to.\n"
"\n"
"              To suppress proxy CONNECT response headers when curl is  set  to\n"
, stdout);
 fputs(
"              output headers use --suppress-connect-headers.\n"
"\n"
"              See also -x, --proxy.\n"
"\n"
"       --pubkey <key>\n"
"              (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
"              lic key in this separate file.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              (As of 7.39.0, curl attempts to automatically extract the public\n"
"              key  from the private key file, so passing this option is gener-\n"
, stdout);
 fputs(
"              ally not required. Note that this public key extraction requires\n"
"              libcurl  to  be linked against a copy of libssh2 1.2.8 or higher\n"
"              that is itself linked against OpenSSL.)\n"
"\n"
"       -Q, --quote\n"
"              (FTP SFTP) Send an arbitrary command to the remote FTP  or  SFTP\n"
"              server.  Quote commands are sent BEFORE the transfer takes place\n"
"              (just after the initial PWD command in an FTP  transfer,  to  be\n"
, stdout);
 fputs(
"              exact). To make commands take place after a successful transfer,\n"
"              prefix them with a dash '-'.  To make  commands  be  sent  after\n"
"              curl has changed the working directory, just before the transfer\n"
"              command(s), prefix the command with a '+'  (this  is  only  sup-\n"
"              ported for FTP). You may specify any number of commands.\n"
"\n"
"              If  the  server  returns  failure  for  one of the commands, the\n"
, stdout);
 fputs(
"              entire operation will be aborted. You  must  send  syntactically\n"
"              correct  FTP  commands as RFC 959 defines to FTP servers, or one\n"
"              of the commands listed below to SFTP servers.\n"
"\n"
"              This option can be used multiple times. When speaking to an  FTP\n"
"              server,  prefix  the  command  with an asterisk (*) to make curl\n"
"              continue even if the command fails as by default curl will  stop\n"
"              at first failure.\n"
"\n"
, stdout);
 fputs(
"              SFTP  is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
"              quote commands itself before sending them to the  server.   File\n"
"              names may be quoted shell-style to embed spaces or special char-\n"
"              acters.  Following is the list of all supported SFTP quote  com-\n"
"              mands:\n"
"\n"
"              chgrp group file\n"
"                     The  chgrp command sets the group ID of the file named by\n"
, stdout);
 fputs(
"                     the file operand to the group ID specified by  the  group\n"
"                     operand. The group operand is a decimal integer group ID.\n"
"\n"
"              chmod mode file\n"
"                     The  chmod  command  modifies  the  file mode bits of the\n"
"                     specified file. The mode operand is an octal integer mode\n"
"                     number.\n"
"\n"
"              chown user file\n"
"                     The chown command sets the owner of the file named by the\n"
, stdout);
 fputs(
"                     file operand to the user ID specified by the  user  oper-\n"
"                     and. The user operand is a decimal integer user ID.\n"
"\n"
"              ln source_file target_file\n"
"                     The ln and symlink commands create a symbolic link at the\n"
"                     target_file location pointing to  the  source_file  loca-\n"
"                     tion.\n"
"\n"
"              mkdir directory_name\n"
"                     The  mkdir  command  creates  the  directory named by the\n"
, stdout);
 fputs(
"                     directory_name operand.\n"
"\n"
"              pwd    The pwd command returns the absolute pathname of the cur-\n"
"                     rent working directory.\n"
"\n"
"              rename source target\n"
"                     The rename command renames the file or directory named by\n"
"                     the source operand to the destination path named  by  the\n"
"                     target operand.\n"
"\n"
"              rm file\n"
, stdout);
 fputs(
"                     The rm command removes the file specified by the file op-\n"
"                     erand.\n"
"\n"
"              rmdir directory\n"
"                     The rmdir command removes the directory  entry  specified\n"
"                     by the directory operand, provided it is empty.\n"
"\n"
"              symlink source_file target_file\n"
"                     See ln.\n"
"\n"
"       --random-file <file>\n"
"              Specify the path name to file containing what will be considered\n"
, stdout);
 fputs(
"              as random data. The data may be used to seed the  random  engine\n"
"              for SSL connections.  See also the --egd-file option.\n"
"\n"
"       -r, --range <range>\n"
"              (HTTP  FTP SFTP FILE) Retrieve a byte range (i.e a partial docu-\n"
"              ment) from a HTTP/1.1, FTP or  SFTP  server  or  a  local  FILE.\n"
"              Ranges can be specified in a number of ways.\n"
"\n"
"              0-499     specifies the first 500 bytes\n"
"\n"
, stdout);
 fputs(
"              500-999   specifies the second 500 bytes\n"
"\n"
"              -500      specifies the last 500 bytes\n"
"\n"
"              9500-     specifies the bytes from offset 9500 and forward\n"
"\n"
"              0-0,-1    specifies the first and last byte only(*)(HTTP)\n"
"\n"
"              100-199,500-599\n"
"                        specifies two separate 100-byte ranges(*) (HTTP)\n"
"\n"
"              (*)  = NOTE that this will cause the server to reply with a mul-\n"
"              tipart response!\n"
"\n"
, stdout);
 fputs(
"              Only digit characters (0-9) are valid in the 'start' and  'stop'\n"
"              fields  of the 'start-stop' range syntax. If a non-digit charac-\n"
"              ter is given in the range, the server's response will be unspec-\n"
"              ified, depending on the server's configuration.\n"
"\n"
"              You  should also be aware that many HTTP/1.1 servers do not have\n"
"              this feature enabled, so that when you attempt to get  a  range,\n"
, stdout);
 fputs(
"              you'll instead get the whole document.\n"
"\n"
"              FTP  and  SFTP  range  downloads only support the simple 'start-\n"
"              stop' syntax (optionally with one of the numbers  omitted).  FTP\n"
"              use depends on the extended FTP command SIZE.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --raw  (HTTP) When used, it disables all internal HTTP decoding of con-\n"
, stdout);
 fputs(
"              tent or transfer encodings and  instead  makes  them  passed  on\n"
"              unaltered, raw.\n"
"\n"
"              Added in 7.16.2.\n"
"\n"
"       -e, --referer <URL>\n"
"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
"              This can also be set with the -H, --header flag of course.  When\n"
"              used  with  -L,  --location  you  can  append \";auto\" to the -e,\n"
"              --referer URL to make curl automatically set  the  previous  URL\n"
, stdout);
 fputs(
"              when  it  follows  a Location: header. The \";auto\" string can be\n"
"              used alone, even if you don't set an initial -e, --referer.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -A, --user-agent and -H, --header.\n"
"\n"
"       -J, --remote-header-name\n"
"              (HTTP) This option tells the -O, --remote-name option to use the\n"
"              server-specified   Content-Disposition   filename   instead   of\n"
, stdout);
 fputs(
"              extracting a filename from the URL.\n"
"\n"
"              If the server specifies a file name and a file  with  that  name\n"
"              already  exists  in the current working directory it will not be\n"
"              overwritten and an error will occur. If the server doesn't spec-\n"
"              ify a file name then this option has no effect.\n"
"\n"
"              There's  no  attempt to decode %-sequences (yet) in the provided\n"
, stdout);
 fputs(
"              file name, so this option may provide you with rather unexpected\n"
"              file names.\n"
"\n"
"              WARNING:  Exercise  judicious  use of this option, especially on\n"
"              Windows. A rogue server could send you the  name  of  a  DLL  or\n"
"              other  file  that could possibly be loaded automatically by Win-\n"
"              dows or some third party software.\n"
"\n"
"       --remote-name-all\n"
"              This option changes the default action for all given URLs to  be\n"
, stdout);
 fputs(
"              dealt with as if -O, --remote-name were used for each one. So if\n"
"              you want to disable that for a specific URL after --remote-name-\n"
"              all has been used, you must use \"-o -\" or --no-remote-name.\n"
"\n"
"              Added in 7.19.0.\n"
"\n"
"       -O, --remote-name\n"
"              Write  output to a local file named like the remote file we get.\n"
"              (Only the file part of the remote file is used, the path is  cut\n"
"              off.)\n"
"\n"
, stdout);
 fputs(
"              The  file will be saved in the current working directory. If you\n"
"              want the file saved in a  different  directory,  make  sure  you\n"
"              change  the  current working directory before invoking curl with\n"
"              this option.\n"
"\n"
"              The remote file name to use for saving  is  extracted  from  the\n"
"              given  URL,  nothing  else,  and if it already exists it will be\n"
, stdout);
 fputs(
"              overwritten. If you want the server to be  able  to  choose  the\n"
"              file name refer to -J, --remote-header-name which can be used in\n"
"              addition to this option. If the server chooses a file  name  and\n"
"              that name already exists it will not be overwritten.\n"
"\n"
"              There is no URL decoding done on the file name. If it has %20 or\n"
"              other URL encoded parts of the name, they will end up  as-is  as\n"
"              file name.\n"
"\n"
, stdout);
 fputs(
"              You  may use this option as many times as the number of URLs you\n"
"              have.\n"
"\n"
"       -R, --remote-time\n"
"              When used, this will make curl attempt to figure out  the  time-\n"
"              stamp  of  the  remote  file,  and if that is available make the\n"
"              local file get that same timestamp.\n"
"\n"
"       --request-target\n"
"              (HTTP) Tells curl to use an alternative \"target\" (path)  instead\n"
, stdout);
 fputs(
"              of  using  the  path as provided in the URL. Particularly useful\n"
"              when wanting to issue HTTP requests  without  leading  slash  or\n"
"              other  data  that  doesn't  follow the regular URL pattern, like\n"
"              \"OPTIONS *\".\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       -X, --request <command>\n"
"              (HTTP) Specifies a custom request method to use when communicat-\n"
"              ing  with the HTTP server.  The specified request method will be\n"
, stdout);
 fputs(
"              used instead of the method otherwise  used  (which  defaults  to\n"
"              GET).  Read  the HTTP 1.1 specification for details and explana-\n"
"              tions. Common additional HTTP requests include PUT  and  DELETE,\n"
"              but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
"              and more.\n"
"\n"
"              Normally you don't need this option. All  sorts  of  GET,  HEAD,\n"
"              POST and PUT requests are rather invoked by using dedicated com-\n"
, stdout);
 fputs(
"              mand line options.\n"
"\n"
"              This option only changes  the  actual  word  used  in  the  HTTP\n"
"              request,  it does not alter the way curl behaves. So for example\n"
"              if you want to make a proper HEAD request, using  -X  HEAD  will\n"
"              not suffice. You need to use the -I, --head option.\n"
"\n"
"              The  method  string  you set with -X, --request will be used for\n"
"              all requests, which if you for example use  -L,  --location  may\n"
, stdout);
 fputs(
"              cause  unintended  side-effects when curl doesn't change request\n"
"              method according to the HTTP 30x response codes - and similar.\n"
"\n"
"              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
"              doing file lists with FTP.\n"
"\n"
"              (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
"              RETR. (Added in 7.26.0)\n"
"\n"
"              (IMAP) Specifies a custom IMAP command to use instead  of  LIST.\n"
, stdout);
 fputs(
"              (Added in 7.30.0)\n"
"\n"
"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
"              VRFY. (Added in 7.34.0)\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --resolve <host:port:address[,address]...>\n"
"              Provide a custom address for a  specific  host  and  port  pair.\n"
"              Using  this,  you  can make the curl requests(s) use a specified\n"
, stdout);
 fputs(
"              address and prevent the otherwise normally resolved  address  to\n"
"              be  used.  Consider it a sort of /etc/hosts alternative provided\n"
"              on the command line. The port number should be the  number  used\n"
"              for  the  specific  protocol the host will be used for. It means\n"
"              you need several entries if you want to provide address for  the\n"
"              same host but different ports.\n"
"\n"
, stdout);
 fputs(
"              The provided address set by this option will be used even if -4,\n"
"              --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n"
"              Support for providing the IP address within [brackets] was added\n"
"              in 7.57.0.\n"
"\n"
"              Support  for providing multiple IP addresses per entry was added\n"
"              in 7.59.0.\n"
"\n"
"              This option can be used many times to add  many  host  names  to\n"
"              resolve.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.21.3.\n"
"\n"
"       --retry-connrefused\n"
"              In  addition to the other conditions, consider ECONNREFUSED as a\n"
"              transient error too for --retry. This option  is  used  together\n"
"              with --retry.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --retry-delay <seconds>\n"
"              Make  curl  sleep  this  amount of time before each retry when a\n"
"              transfer has failed with  a  transient  error  (it  changes  the\n"
, stdout);
 fputs(
"              default  backoff time algorithm between retries). This option is\n"
"              only interesting if --retry is also used. Setting this delay  to\n"
"              zero will make curl use the default backoff time.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry-max-time <seconds>\n"
"              The  retry  timer  is  reset  before the first transfer attempt.\n"
, stdout);
 fputs(
"              Retries will be done as usual (see --retry) as long as the timer\n"
"              hasn't reached this given limit. Notice that if the timer hasn't\n"
"              reached the limit, the request will be made and  while  perform-\n"
"              ing,  it may take longer than this given time period. To limit a\n"
"              single request's maximum time, use  -m,  --max-time.   Set  this\n"
"              option to zero to not timeout retries.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry <num>\n"
"              If  a  transient  error is returned when curl tries to perform a\n"
"              transfer, it will retry this number of times before  giving  up.\n"
"              Setting  the  number to 0 makes curl do no retries (which is the\n"
"              default). Transient error means either: a timeout,  an  FTP  4xx\n"
, stdout);
 fputs(
"              response code or an HTTP 5xx response code.\n"
"\n"
"              When  curl  is about to retry a transfer, it will first wait one\n"
"              second and then for all forthcoming retries it will  double  the\n"
"              waiting  time until it reaches 10 minutes which then will be the\n"
"              delay between the rest of the retries.  By  using  --retry-delay\n"
"              you   disable  this  exponential  backoff  algorithm.  See  also\n"
, stdout);
 fputs(
"              --retry-max-time to limit the total time allowed for retries.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --sasl-ir\n"
"              Enable initial response in SASL authentication.\n"
"\n"
"              Added in 7.31.0.\n"
"\n"
"       --service-name <name>\n"
"              This option allows you to change the service name for SPNEGO.\n"
"\n"
"              Examples:   --negotiate   --service-name   sockd    would    use\n"
, stdout);
 fputs(
"              sockd/server-name.\n"
"\n"
"              Added in 7.43.0.\n"
"       -S, --show-error\n"
"              When used with -s, --silent, it makes curl show an error message\n"
"              if it fails.\n"
"       -s, --silent\n"
"              Silent or quiet mode. Don't show progress meter  or  error  mes-\n"
"              sages.   Makes  Curl mute. It will still output the data you ask\n"
"              for, potentially even to the terminal/stdout unless you redirect\n"
"              it.\n"
"\n"
, stdout);
 fputs(
"              Use  -S,  --show-error  in  addition  to  this option to disable\n"
"              progress meter but still show error messages.\n"
"\n"
"              See also -v, --verbose and --stderr.\n"
"\n"
"       --socks4 <host[:port]>\n"
"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
"              fied, it is assumed at port 1080.\n"
"\n"
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
, stdout);
 fputs(
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.15.2.\n"
"\n"
"       --socks4a <host[:port]>\n"
"              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
"              ified, it is assumed at port 1080.\n"
"\n"
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
, stdout);
 fputs(
"              socks4a  proxy with -x, --proxy using a socks4a:// protocol pre-\n"
"              fix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.18.0.\n"
"\n"
"       --socks5-basic\n"
"              Tells curl to use username/password authentication when connect-\n"
"              ing to a SOCKS5 proxy.  The username/password authentication  is\n"
"              enabled  by  default.   Use  --socks5-gssapi  to  force  GSS-API\n"
"              authentication to SOCKS5 proxies.\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       --socks5-gssapi-nec\n"
"              As part of the GSS-API negotiation a protection mode is  negoti-\n"
, stdout);
 fputs(
"              ated.  RFC  1961 says in section 4.3/4.4 it should be protected,\n"
"              but the NEC  reference  implementation  does  not.   The  option\n"
"              --socks5-gssapi-nec  allows the unprotected exchange of the pro-\n"
"              tection mode negotiation.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi-service <name>\n"
"              The default service name for a socks server is rcmd/server-fqdn.\n"
"              This option allows you to change it.\n"
"\n"
, stdout);
 fputs(
"              Examples:   --socks5  proxy-name  --socks5-gssapi-service  sockd\n"
"              would use sockd/proxy-name --socks5 proxy-name  --socks5-gssapi-\n"
"              service  sockd/real-name  would  use  sockd/real-name  for cases\n"
"              where the proxy-name does not match the principal name.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi\n"
"              Tells curl to use GSS-API authentication when  connecting  to  a\n"
, stdout);
 fputs(
"              SOCKS5  proxy.  The GSS-API authentication is enabled by default\n"
"              (if curl is compiled with GSS-API support).  Use  --socks5-basic\n"
"              to force username/password authentication to SOCKS5 proxies.\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       --socks5-hostname <host[:port]>\n"
"              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the\n"
"              host name). If the port number is not specified, it  is  assumed\n"
"              at port 1080.\n"
"\n"
, stdout);
 fputs(
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
"              col prefix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
, stdout);
 fputs(
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5 <host[:port]>\n"
"              Use  the  specified  SOCKS5  proxy  -  but resolve the host name\n"
"              locally. If the port number is not specified, it is  assumed  at\n"
"              port 1080.\n"
"\n"
, stdout);
 fputs(
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
, stdout);
 fputs(
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              This option (as well as --socks4) does not work with IPV6,  FTPS\n"
"              or LDAP.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       -Y, --speed-limit <speed>\n"
"              If a download is slower than this given speed (in bytes per sec-\n"
, stdout);
 fputs(
"              ond) for speed-time seconds it gets aborted. speed-time  is  set\n"
"              with -y, --speed-time and is 30 if not set.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -y, --speed-time <seconds>\n"
"              If a download is slower than speed-limit bytes per second during\n"
"              a speed-time period, the download gets aborted. If speed-time is\n"
"              used,  the  default  speed-limit  will  be 1 unless set with -Y,\n"
, stdout);
 fputs(
"              --speed-limit.\n"
"\n"
"              This option controls transfers and thus  will  not  affect  slow\n"
"              connects  etc.  If this is a concern for you, try the --connect-\n"
"              timeout option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --ssl-allow-beast\n"
"              This option tells curl to not work around a security flaw in the\n"
"              SSL3  and TLS1.0 protocols known as BEAST.  If this option isn't\n"
, stdout);
 fputs(
"              used, the SSL layer may use workarounds known to cause  interop-\n"
"              erability problems with some older SSL implementations. WARNING:\n"
"              this option loosens the SSL security, and by using this flag you\n"
"              ask for exactly that.\n"
"\n"
"              Added in 7.25.0.\n"
"\n"
"       --ssl-no-revoke\n"
"              (WinSSL)  This  option tells curl to disable certificate revoca-\n"
"              tion checks.  WARNING: this option loosens the SSL security, and\n"
, stdout);
 fputs(
"              by using this flag you ask for exactly that.\n"
"\n"
"              Added in 7.44.0.\n"
"\n"
"       --ssl-reqd\n"
"              (FTP IMAP POP3 SMTP) Require SSL/TLS for the connection.  Termi-\n"
"              nates the connection if the server doesn't support SSL/TLS.\n"
"\n"
"              This option was formerly known as --ftp-ssl-reqd.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
"       --ssl  (FTP IMAP POP3 SMTP) Try to  use  SSL/TLS  for  the  connection.\n"
, stdout);
 fputs(
"              Reverts to a non-secure connection if the server doesn't support\n"
"              SSL/TLS.  See also --ftp-ssl-control and --ssl-reqd for  differ-\n"
"              ent levels of encryption required.\n"
"\n"
"              This  option  was formerly known as --ftp-ssl (Added in 7.11.0).\n"
"              That option name can still be used but  will  be  removed  in  a\n"
"              future version.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
"       -2, --sslv2\n"
, stdout);
 fputs(
"              (SSL)  Forces  curl to use SSL version 2 when negotiating with a\n"
"              remote SSL server. Sometimes curl is built  without  SSLv2  sup-\n"
"              port. SSLv2 is widely considered insecure (see RFC 6176).\n"
"\n"
"              See  also  --http1.1  and --http2. -2, --sslv2 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
"              rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       -3, --sslv3\n"
, stdout);
 fputs(
"              (SSL)  Forces  curl to use SSL version 3 when negotiating with a\n"
"              remote SSL server. Sometimes curl is built  without  SSLv3  sup-\n"
"              port. SSLv3 is widely considered insecure (see RFC 7568).\n"
"\n"
"              See  also  --http1.1  and --http2. -3, --sslv3 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
"              rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       --stderr\n"
, stdout);
 fputs(
"              Redirect  all writes to stderr to the specified file instead. If\n"
"              the file name is a plain '-', it is instead written to stdout.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -v, --verbose and -s, --silent.\n"
"\n"
"       --suppress-connect-headers\n"
"              When -p, --proxytunnel is used and a  CONNECT  request  is  made\n"
"              don't  output  proxy  CONNECT  response  headers. This option is\n"
, stdout);
 fputs(
"              meant to be used with -D, --dump-header or -i,  --include  which\n"
"              are  used  to  show  protocol  headers  in the output. It has no\n"
"              effect on debug options such as -v, --verbose or --trace, or any\n"
"              statistics.\n"
"\n"
"              See also -D, --dump-header and -i, --include and -p, --proxytun-\n"
"              nel.\n"
"\n"
"       --tcp-fastopen\n"
"              Enable use of TCP Fast Open (RFC7413).\n"
"\n"
"              Added in 7.49.0.\n"
"\n"
"       --tcp-nodelay\n"
, stdout);
 fputs(
"              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man\n"
"              page for details about this option.\n"
"\n"
"              Since  7.50.2,  curl sets this option by default and you need to\n"
"              explicitly switch it off if you don't want it on.\n"
"\n"
"              Added in 7.11.2.\n"
"\n"
"       -t, --telnet-option <opt=val>\n"
"              Pass options to the telnet protocol. Supported options are:\n"
"\n"
"              TTYPE=<term> Sets the terminal type.\n"
"\n"
, stdout);
 fputs(
"              XDISPLOC=<X display> Sets the X display location.\n"
"\n"
"              NEW_ENV=<var,val> Sets an environment variable.\n"
"\n"
"       --tftp-blksize <value>\n"
"              (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block\n"
"              size that curl will try to use when transferring data to or from\n"
"              a TFTP server. By default 512 bytes will be used.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
, stdout);
 fputs(
"       --tftp-no-options\n"
"              (TFTP) Tells curl not to send TFTP options requests.\n"
"\n"
"              This option improves interop with some legacy  servers  that  do\n"
"              not  acknowledge  or  properly implement TFTP options. When this\n"
"              option is used --tftp-blksize is ignored.\n"
"\n"
"              Added in 7.48.0.\n"
"\n"
"       -z, --time-cond <time>\n"
"              (HTTP FTP) Request a file that has been modified later than  the\n"
, stdout);
 fputs(
"              given  time  and date, or one that has been modified before that\n"
"              time. The <date expression> can be all sorts of date strings  or\n"
"              if it doesn't match any internal ones, it is taken as a filename\n"
"              and tries to get  the  modification  date  (mtime)  from  <file>\n"
"              instead.  See  the curl_getdate(3) man pages for date expression\n"
"              details.\n"
"\n"
"              Start the date expression with a dash (-) to make it request for\n"
, stdout);
 fputs(
"              a  document that is older than the given date/time, default is a\n"
"              document that is newer than the specified date/time.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tls-max <VERSION>\n"
"              (SSL) VERSION defines maximum supported TLS version.  A  minimum\n"
"              is defined by arguments tlsv1.0 or tlsv1.1 or tlsv1.2.\n"
"\n"
"              default\n"
"                     Use up to recommended TLS version.\n"
"\n"
, stdout);
 fputs(
"              1.0    Use up to TLSv1.0.\n"
"              1.1    Use up to TLSv1.1.\n"
"              1.2    Use up to TLSv1.2.\n"
"              1.3    Use up to TLSv1.3.\n"
"\n"
"       See also --tlsv1.0 and --tlsv1.1 and --tlsv1.2. --tls-max requires that\n"
"       the underlying libcurl was built to support TLS. Added in 7.54.0.\n"
"\n"
"       --tlsauthtype <type>\n"
"              Set TLS  authentication  type.  Currently,  the  only  supported\n"
"              option  is  \"SRP\",  for  TLS-SRP  (RFC  5054).  If --tlsuser and\n"
, stdout);
 fputs(
"              --tlspassword are specified but --tlsauthtype is not, then  this\n"
"              option  defaults to \"SRP\".  This option works only if the under-\n"
"              lying libcurl is built  with  TLS-SRP  support,  which  requires\n"
"              OpenSSL or GnuTLS with TLS-SRP support.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlspassword\n"
"              Set  password  for use with the TLS authentication method speci-\n"
"              fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
, stdout);
 fputs(
"\n"
"              Added in 7.21.4.\n"
"       --tlsuser <name>\n"
"              Set username for use with the TLS authentication  method  speci-\n"
"              fied  with  --tlsauthtype.  Requires  that --tlspassword also is\n"
"              set.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlsv1.0\n"
"              (TLS) Forces curl to use TLS version 1.0 when  connecting  to  a\n"
"              remote TLS server.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.1\n"
, stdout);
 fputs(
"              (TLS)  Forces  curl  to use TLS version 1.1 when connecting to a\n"
"              remote TLS server.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.2\n"
"              (TLS) Forces curl to use TLS version 1.2 when  connecting  to  a\n"
"              remote TLS server.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.3\n"
"              (TLS)  Forces  curl  to use TLS version 1.3 when connecting to a\n"
"              remote TLS server.\n"
"\n"
, stdout);
 fputs(
"              Note that TLS 1.3 is only supported by a subset of TLS backends.\n"
"              At the time of this writing, they are BoringSSL, NSS, and Secure\n"
"              Transport (on iOS 11 or later, and macOS 10.13 or later).\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -1, --tlsv1\n"
"              (SSL) Tells curl to use TLS version 1.x when negotiating with  a\n"
"              remote TLS server. That means TLS version 1.0, 1.1 or 1.2.\n"
"\n"
, stdout);
 fputs(
"              See  also  --http1.1  and --http2. -1, --tlsv1 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
"              rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
"\n"
"       --tr-encoding\n"
"              (HTTP) Request a compressed Transfer-Encoding response using one\n"
"              of the algorithms curl supports, and uncompress the  data  while\n"
"              receiving it.\n"
"\n"
"              Added in 7.21.6.\n"
"\n"
"       --trace-ascii <file>\n"
, stdout);
 fputs(
"              Enables  a  full  trace  dump of all incoming and outgoing data,\n"
"              including descriptive information, to the given output file. Use\n"
"              \"-\" as filename to have the output sent to stdout.\n"
"\n"
"              This is very similar to --trace, but leaves out the hex part and\n"
"              only shows the ASCII part of the dump. It makes  smaller  output\n"
"              that might be easier to read for untrained humans.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              This option overrides --trace and -v, --verbose.\n"
"\n"
"       --trace-time\n"
"              Prepends  a  time  stamp to each trace or verbose line that curl\n"
"              displays.\n"
"\n"
"              Added in 7.14.0.\n"
"\n"
"       --trace <file>\n"
"              Enables a full trace dump of all  incoming  and  outgoing  data,\n"
"              including descriptive information, to the given output file. Use\n"
, stdout);
 fputs(
"              \"-\" as filename to have the output sent to stdout.  Use  \"%\"  as\n"
"              filename to have the output sent to stderr.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              This option overrides -v, --verbose and --trace-ascii.\n"
"\n"
"       --unix-socket <path>\n"
"              (HTTP) Connect through this Unix domain socket, instead of using\n"
"              the network.\n"
"\n"
"              Added in 7.40.0.\n"
"\n"
"       -T, --upload-file <file>\n"
, stdout);
 fputs(
"              This transfers the specified local file to the  remote  URL.  If\n"
"              there is no file part in the specified URL, curl will append the\n"
"              local file name. NOTE that you must use a trailing / on the last\n"
"              directory  to really prove to Curl that there is no file name or\n"
"              curl will think that your last directory name is the remote file\n"
"              name to use. That will most likely cause the upload operation to\n"
, stdout);
 fputs(
"              fail. If this is used on an HTTP(S) server, the PUT command will\n"
"              be used.\n"
"\n"
"              Use  the file name \"-\" (a single dash) to use stdin instead of a\n"
"              given file.  Alternately, the file name \".\"  (a  single  period)\n"
"              may  be  specified  instead  of \"-\" to use stdin in non-blocking\n"
"              mode to  allow  reading  server  output  while  stdin  is  being\n"
"              uploaded.\n"
"\n"
, stdout);
 fputs(
"              You  can  specify one -T, --upload-file for each URL on the com-\n"
"              mand line. Each -T, --upload-file + URL pair specifies  what  to\n"
"              upload  and  to  where. curl also supports \"globbing\" of the -T,\n"
"              --upload-file argument, meaning that  you  can  upload  multiple\n"
"              files  to a single URL by using the same URL globbing style sup-\n"
"              ported in the URL, like this:\n"
"\n"
, stdout);
 fputs(
"               curl --upload-file \"{file1,file2}\" http://www.example.com\n"
"\n"
"              or even\n"
"\n"
"               curl -T \"img[1-1000].png\" ftp://ftp.example.com/upload/\n"
"\n"
"              When uploading to an SMTP server: the uploaded data  is  assumed\n"
"              to be RFC 5322 formatted. It has to feature the necessary set of\n"
"              headers and mail body formatted correctly by the  user  as  curl\n"
"              will not transcode nor encode it further in any way.\n"
"\n"
"       --url <url>\n"
, stdout);
 fputs(
"              Specify  a  URL  to  fetch. This option is mostly handy when you\n"
"              want to specify URL(s) in a config file.\n"
"\n"
"              If the given URL is missing a scheme name (such as \"http://\"  or\n"
"              \"ftp://\"  etc) then curl will make a guess based on the host. If\n"
"              the outermost sub-domain name matches  DICT,  FTP,  IMAP,  LDAP,\n"
"              POP3  or  SMTP  then  that protocol will be used, otherwise HTTP\n"
, stdout);
 fputs(
"              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
"              default protocol, see --proto-default for details.\n"
"\n"
"              This  option  may  be used any number of times. To control where\n"
"              this URL is written, use the -o, --output or the  -O,  --remote-\n"
"              name options.\n"
"\n"
"       -B, --use-ascii\n"
"              (FTP  LDAP)  Enable  ASCII  transfer.  For FTP, this can also be\n"
, stdout);
 fputs(
"              enforced by using a URL that ends with  \";type=A\".  This  option\n"
"              causes data sent to stdout to be in text mode for win32 systems.\n"
"\n"
"       -A, --user-agent <name>\n"
"              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
"              To encode blanks in the string, surround the string with  single\n"
"              quote  marks.  This header can also be set with the -H, --header\n"
"              or the --proxy-header options.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -u, --user <user:password>\n"
"              Specify the user name and password to use for server authentica-\n"
"              tion. Overrides -n, --netrc and --netrc-optional.\n"
"\n"
"              If  you  simply  specify  the  user name, curl will prompt for a\n"
"              password.\n"
"\n"
"              The user name and passwords are split up  on  the  first  colon,\n"
, stdout);
 fputs(
"              which  makes  it impossible to use a colon in the user name with\n"
"              this option. The password can, still.\n"
"\n"
"              When using Kerberos V5 with a Windows based  server  you  should\n"
"              include  the  Windows domain name in the user name, in order for\n"
"              the server to successfully obtain  a  Kerberos  Ticket.  If  you\n"
"              don't then the initial authentication handshake may fail.\n"
"\n"
, stdout);
 fputs(
"              When  using  NTLM,  the user name can be specified simply as the\n"
"              user name, without the domain, if there is a single  domain  and\n"
"              forest in your setup for example.\n"
"\n"
"              To  specify  the domain name use either Down-Level Logon Name or\n"
"              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
"              user@example.com respectively.\n"
"\n"
"              If  you  use a Windows SSPI-enabled curl binary and perform Ker-\n"
, stdout);
 fputs(
"              beros V5, Negotiate, NTLM or Digest authentication then you  can\n"
"              tell  curl  to select the user name and password from your envi-\n"
"              ronment by specifying a single colon with this option: \"-u :\".\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -v, --verbose\n"
"              Makes curl verbose during the operation.  Useful  for  debugging\n"
"              and  seeing  what's  going  on \"under the hood\". A line starting\n"
, stdout);
 fputs(
"              with '>' means \"header data\" sent by  curl,  '<'  means  \"header\n"
"              data\"  received  by  curl  that is hidden in normal cases, and a\n"
"              line starting with '*' means additional info provided by curl.\n"
"\n"
"              If you only want HTTP headers in the output, -i, --include might\n"
"              be the option you're looking for.\n"
"\n"
"              If  you think this option still doesn't give you enough details,\n"
, stdout);
 fputs(
"              consider using --trace or --trace-ascii instead.\n"
"\n"
"              Use -s, --silent to make curl really quiet.\n"
"\n"
"              See also  -i,  --include.  This  option  overrides  --trace  and\n"
"              --trace-ascii.\n"
"\n"
"       -V, --version\n"
"              Displays information about curl and the libcurl version it uses.\n"
"              The  first  line  includes the full version of curl, libcurl and\n"
"              other 3rd party libraries linked with the executable.\n"
"\n"
, stdout);
 fputs(
"              The second line (starts with \"Protocols:\") shows  all  protocols\n"
"              that libcurl reports to support.\n"
"\n"
"              The third line (starts with \"Features:\") shows specific features\n"
"              libcurl reports to offer. Available features include:\n"
"\n"
"              IPv6   You can use IPv6 with this.\n"
"\n"
"              krb4   Krb4 for FTP is supported.\n"
"\n"
"              SSL    SSL versions of various protocols are supported, such  as\n"
, stdout);
 fputs(
"                     HTTPS, FTPS, POP3S and so on.\n"
"\n"
"              libz   Automatic  decompression of compressed files over HTTP is\n"
"                     supported.\n"
"\n"
"              NTLM   NTLM authentication is supported.\n"
"\n"
"              Debug  This curl uses a libcurl built with Debug.  This  enables\n"
"                     more  error-tracking  and memory debugging etc. For curl-\n"
"                     developers only!\n"
"\n"
"              AsynchDNS\n"
, stdout);
 fputs(
"                     This curl uses asynchronous name  resolves.  Asynchronous\n"
"                     name  resolves can be done using either the c-ares or the\n"
"                     threaded resolver backends.\n"
"\n"
"              SPNEGO SPNEGO authentication is supported.\n"
"\n"
"              Largefile\n"
"                     This curl supports transfers of large files, files larger\n"
"                     than 2GB.\n"
"\n"
"              IDN    This curl supports IDN - international domain names.\n"
"\n"
"              GSS-API\n"
, stdout);
 fputs(
"                     GSS-API is supported.\n"
"\n"
"              SSPI   SSPI is supported.\n"
"\n"
"              TLS-SRP\n"
"                     SRP  (Secure Remote Password) authentication is supported\n"
"                     for TLS.\n"
"\n"
"              HTTP2  HTTP/2 support has been built-in.\n"
"\n"
"              UnixSockets\n"
"                     Unix sockets support is provided.\n"
"\n"
"              HTTPS-proxy\n"
"                     This curl is built to support HTTPS proxy.\n"
"\n"
"              Metalink\n"
, stdout);
 fputs(
"                     This curl supports Metalink (both version 3  and  4  (RFC\n"
"                     5854)),  which  describes  mirrors and hashes.  curl will\n"
"                     use mirrors for failover if there are errors (such as the\n"
"                     file or server not being available).\n"
"\n"
"              PSL    PSL  is  short for Public Suffix List and means that this\n"
"                     curl has been built with  knowledge  about  \"public  suf-\n"
"                     fixes\".\n"
"\n"
, stdout);
 fputs(
"       -w, --write-out <format>\n"
"              Make curl display information on stdout after a completed trans-\n"
"              fer. The format is a string that may contain  plain  text  mixed\n"
"              with  any  number of variables. The format can be specified as a\n"
"              literal \"string\", or you can have curl read the  format  from  a\n"
"              file  with  \"@filename\" and to tell curl to read the format from\n"
"              stdin you write \"@-\".\n"
"\n"
, stdout);
 fputs(
"              The variables present in the output format will  be  substituted\n"
"              by  the  value or text that curl thinks fit, as described below.\n"
"              All variables are specified as %{variable_name} and to output  a\n"
"              normal  % you just write them as %%. You can output a newline by\n"
"              using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
"              NOTE: The %-symbol is a special symbol in the win32-environment,\n"
, stdout);
 fputs(
"              where  all  occurrences  of  %  must  be doubled when using this\n"
"              option.\n"
"\n"
"              The variables available are:\n"
"\n"
"              content_type   The Content-Type of the  requested  document,  if\n"
"                             there was any.\n"
"\n"
"              filename_effective\n"
"                             The  ultimate  filename  that curl writes out to.\n"
"                             This is only meaningful if curl is told to  write\n"
, stdout);
 fputs(
"                             to  a  file  with  the  -O,  --remote-name or -o,\n"
"                             --output option. It's most useful in  combination\n"
"                             with  the -J, --remote-header-name option. (Added\n"
"                             in 7.26.0)\n"
"\n"
"              ftp_entry_path The initial path curl ended up in when logging on\n"
"                             to the remote FTP server. (Added in 7.15.4)\n"
"\n"
, stdout);
 fputs(
"              http_code      The numerical response code that was found in the\n"
"                             last retrieved HTTP(S)  or  FTP(s)  transfer.  In\n"
"                             7.18.2  the alias response_code was added to show\n"
"                             the same info.\n"
"\n"
"              http_connect   The numerical code that was  found  in  the  last\n"
"                             response   (from  a  proxy)  to  a  curl  CONNECT\n"
"                             request. (Added in 7.12.4)\n"
"\n"
, stdout);
 fputs(
"              http_version   The  http  version  that  was  effectively  used.\n"
"                             (Added in 7.50.0)\n"
"\n"
"              local_ip       The  IP  address  of  the  local  end of the most\n"
"                             recently done connection - can be either IPv4  or\n"
"                             IPv6 (Added in 7.29.0)\n"
"\n"
"              local_port     The  local  port number of the most recently done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
, stdout);
 fputs(
"              num_connects   Number of new connects made in the recent  trans-\n"
"                             fer. (Added in 7.12.3)\n"
"\n"
"              num_redirects  Number  of  redirects  that  were followed in the\n"
"                             request. (Added in 7.12.3)\n"
"\n"
"              proxy_ssl_verify_result\n"
"                             The result of the HTTPS proxy's SSL peer certifi-\n"
"                             cate verification that was requested. 0 means the\n"
, stdout);
 fputs(
"                             verification was successful. (Added in 7.52.0)\n"
"\n"
"              redirect_url   When an HTTP request was made without -L, --loca-\n"
"                             tion  to follow redirects (or when --max-redir is\n"
"                             met), this variable will show the  actual  URL  a\n"
"                             redirect would have gone to. (Added in 7.18.2)\n"
"\n"
"              remote_ip      The  remote  IP address of the most recently done\n"
, stdout);
 fputs(
"                             connection - can be either IPv4 or IPv6 (Added in\n"
"                             7.29.0)\n"
"\n"
"              remote_port    The  remote port number of the most recently done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              scheme         The URL scheme (sometimes called  protocol)  that\n"
"                             was effectively used (Added in 7.52.0)\n"
"\n"
"              size_download  The total amount of bytes that were downloaded.\n"
"\n"
, stdout);
 fputs(
"              size_header    The total amount of bytes of the downloaded head-\n"
"                             ers.\n"
"\n"
"              size_request   The total amount of bytes that were sent  in  the\n"
"                             HTTP request.\n"
"\n"
"              size_upload    The total amount of bytes that were uploaded.\n"
"\n"
"              speed_download The average download speed that curl measured for\n"
"                             the complete download. Bytes per second.\n"
"\n"
, stdout);
 fputs(
"              speed_upload   The average upload speed that curl  measured  for\n"
"                             the complete upload. Bytes per second.\n"
"\n"
"              ssl_verify_result\n"
"                             The  result of the SSL peer certificate verifica-\n"
"                             tion that was requested. 0 means the verification\n"
"                             was successful. (Added in 7.19.0)\n"
"\n"
"              time_appconnect\n"
, stdout);
 fputs(
"                             The  time,  in  seconds,  it  took from the start\n"
"                             until the SSL/SSH/etc  connect/handshake  to  the\n"
"                             remote host was completed. (Added in 7.19.0)\n"
"\n"
"              time_connect   The  time,  in  seconds,  it  took from the start\n"
"                             until the TCP connect  to  the  remote  host  (or\n"
"                             proxy) was completed.\n"
"\n"
"              time_namelookup\n"
, stdout);
 fputs(
"                             The  time,  in  seconds,  it  took from the start\n"
"                             until the name resolving was completed.\n"
"\n"
"              time_pretransfer\n"
"                             The time, in seconds,  it  took  from  the  start\n"
"                             until  the file transfer was just about to begin.\n"
"                             This includes all pre-transfer commands and nego-\n"
"                             tiations that are specific to the particular pro-\n"
, stdout);
 fputs(
"                             tocol(s) involved.\n"
"\n"
"              time_redirect  The time, in seconds, it took for all redirection\n"
"                             steps including name lookup, connect, pretransfer\n"
"                             and transfer before  the  final  transaction  was\n"
"                             started.  time_redirect shows the complete execu-\n"
"                             tion time for multiple  redirections.  (Added  in\n"
"                             7.12.3)\n"
"\n"
, stdout);
 fputs(
"              time_starttransfer\n"
"                             The  time,  in  seconds,  it  took from the start\n"
"                             until the first byte was just about to be  trans-\n"
"                             ferred.  This  includes time_pretransfer and also\n"
"                             the time  the  server  needed  to  calculate  the\n"
"                             result.\n"
"\n"
"              time_total     The  total time, in seconds, that the full opera-\n"
, stdout);
 fputs(
"                             tion lasted.\n"
"\n"
"              url_effective  The URL that was fetched last. This is most mean-\n"
"                             ingful  if  you've  told curl to follow location:\n"
"                             headers.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --xattr\n"
"              When saving output to a file, this option tells  curl  to  store\n"
"              certain  file  metadata  in extended file attributes. Currently,\n"
, stdout);
 fputs(
"              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
"              the  content  type  is stored in the mime_type attribute. If the\n"
"              file system does not support extended attributes, a  warning  is\n"
"              issued.\n"
"\n"
"FILES\n"
"       ~/.curlrc\n"
"              Default config file, see -K, --config for details.\n"
"\n"
"ENVIRONMENT\n"
"       The environment variables can be specified in lower case or upper case.\n"
, stdout);
 fputs(
"       The lower case version has precedence. http_proxy is an exception as it\n"
"       is only available in lower case.\n"
"\n"
"       Using  an  environment variable to set the proxy has the same effect as\n"
"       using the -x, --proxy option.\n"
"\n"
"       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"
, stdout);
 fputs(
"              Sets the proxy server to use for [url-protocol], where the  pro-\n"
"              tocol  is  a  protocol  that curl supports and as specified in a\n"
"              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
"\n"
"       ALL_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use if no  protocol-specific  proxy  is\n"
"              set.\n"
"\n"
"       NO_PROXY <comma-separated list of hosts>\n"
"              list  of  host names that shouldn't go through any proxy. If set\n"
, stdout);
 fputs(
"              to a asterisk '*' only, it matches all hosts.\n"
"\n"
"              This environment variable disables use of the  proxy  even  when\n"
"              specified    with    the    -x,    --proxy   option.   That   is\n"
"              NO_PROXY=direct.example.com  curl  -x   http://proxy.example.com\n"
"              http://direct.example.com  accesses the target URL directly, and\n"
"              NO_PROXY=direct.example.com  curl  -x   http://proxy.example.com\n"
, stdout);
 fputs(
"              http://somewhere.example.com accesses the target URL through the\n"
"              proxy.\n"
"\n"
"              The list  of  host  names  can  also  be  include  numerical  IP\n"
"              addresses,  and  IPv6  versions  should  then  be  given without\n"
"              enclosing brackets.\n"
"\n"
"PROXY PROTOCOL PREFIXES\n"
"       Since curl version 7.21.7, the proxy string may  be  specified  with  a\n"
"       protocol:// prefix to specify alternative proxy protocols.\n"
"\n"
, stdout);
 fputs(
"       If  no  protocol  is  specified  in  the  proxy string or if the string\n"
"       doesn't match a supported one, the proxy will be  treated  as  an  HTTP\n"
"       proxy.\n"
"\n"
"       The supported proxy protocol prefixes are as follows:\n"
"\n"
"       http://\n"
"              Makes it use it as a HTTP proxy. The default if no scheme prefix\n"
"              is used.\n"
"       https://\n"
"              Makes it treated as a HTTPS proxy.\n"
"\n"
"       socks4://\n"
"              Makes it the equivalent of --socks4\n"
"\n"
, stdout);
 fputs(
"       socks4a://\n"
"              Makes it the equivalent of --socks4a\n"
"\n"
"       socks5://\n"
"              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  corresponding\n"
"       error  messages  that  may appear during bad conditions. At the time of\n"
"       this writing, the exit codes are:\n"
"\n"
, stdout);
 fputs(
"       1      Unsupported protocol. This build of curl has no support for this\n"
"              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 desired\n"
"              request was not enabled or was  explicitly  disabled  at  build-\n"
"              time.  To  make  curl able to do this, you probably need another\n"
"              build of libcurl!\n"
"\n"
, stdout);
 fputs(
"       5      Couldn't resolve proxy.  The  given  proxy  host  could  not  be\n"
"              resolved.\n"
"\n"
"       6      Couldn't resolve host. The given remote host was not resolved.\n"
"\n"
"       7      Failed to connect to host.\n"
"\n"
"       8      Weird server reply. The server sent data curl couldn't parse.\n"
"\n"
"       9      FTP  access  denied. The server denied login or denied access to\n"
"              the particular resource or directory you wanted to  reach.  Most\n"
, stdout);
 fputs(
"              often  you  tried to change to a directory that doesn't exist on\n"
"              the server.\n"
"\n"
"       10     FTP accept failed. While waiting for the server to connect  back\n"
"              when  an active FTP session is used, an error code was sent over\n"
"              the control connection or similar.\n"
"\n"
"       11     FTP weird PASS reply. Curl couldn't parse the reply sent to  the\n"
"              PASS request.\n"
"\n"
, stdout);
 fputs(
"       12     During  an  active  FTP  session while waiting for the server to\n"
"              connect back to curl, the timeout expired.\n"
"\n"
"       13     FTP weird PASV reply, Curl couldn't parse the reply sent to  the\n"
"              PASV request.\n"
"\n"
"       14     FTP  weird  227  format.  Curl  couldn't  parse the 227-line the\n"
"              server sent.\n"
"\n"
"       15     FTP can't get host. Couldn't resolve the host IP we got  in  the\n"
"              227-line.\n"
"\n"
, stdout);
 fputs(
"       16     HTTP/2 error. A problem was detected in the HTTP2 framing layer.\n"
"              This is somewhat generic and can be one out of several problems,\n"
"              see the error message for details.\n"
"\n"
"       17     FTP  couldn't  set  binary.  Couldn't  change transfer method to\n"
"              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 (or  simi-\n"
"              lar) command failed.\n"
"\n"
, stdout);
 fputs(
"       21     FTP quote error. A quote command returned error from the server.\n"
"       22     HTTP  page  not  retrieved.  The  requested url was not found or\n"
"              returned another error with the HTTP error  code  being  400  or\n"
"              above. This return code only appears if -f, --fail is used.\n"
"\n"
"       23     Write  error.  Curl couldn't write data to a local filesystem or\n"
"              similar.\n"
"\n"
"       25     FTP couldn't STOR file. The server denied  the  STOR  operation,\n"
, stdout);
 fputs(
"              used for FTP uploading.\n"
"\n"
"       26     Read error. Various reading problems.\n"
"\n"
"       27     Out of memory. A memory allocation request failed.\n"
"\n"
"       28     Operation  timeout.  The  specified  time-out period was reached\n"
"              according to the conditions.\n"
"\n"
"       30     FTP PORT failed. The PORT command failed. Not  all  FTP  servers\n"
"              support  the  PORT  command,  try  doing  a  transfer using PASV\n"
"              instead!\n"
"\n"
, stdout);
 fputs(
"       31     FTP couldn't use REST. The REST command failed. This command  is\n"
"              used for resumed FTP transfers.\n"
"\n"
"       33     HTTP range error. The range \"command\" didn't work.\n"
"\n"
"       34     HTTP post error. Internal post-request generation error.\n"
"\n"
"       35     SSL connect error. The SSL handshaking failed.\n"
"\n"
"       36     Bad  download resume. Couldn't continue an earlier aborted down-\n"
"              load.\n"
"\n"
, stdout);
 fputs(
"       37     FILE couldn't read file. Failed to open the file. Permissions?\n"
"\n"
"       38     LDAP cannot bind. LDAP bind operation failed.\n"
"\n"
"       39     LDAP search failed.\n"
"\n"
"       41     Function not found. A required LDAP function was not found.\n"
"\n"
"       42     Aborted by callback. An application told curl to abort the oper-\n"
"              ation.\n"
"\n"
"       43     Internal error. A function was called with a bad parameter.\n"
"\n"
, stdout);
 fputs(
"       45     Interface  error.  A  specified  outgoing interface could not be\n"
"              used.\n"
"\n"
"       47     Too many redirects. When following redirects, curl hit the maxi-\n"
"              mum amount.\n"
"\n"
"       48     Unknown  option  specified  to  libcurl. This indicates that you\n"
"              passed a weird option to curl that was passed on to libcurl  and\n"
"              rejected. Read up in the manual!\n"
"\n"
"       49     Malformed telnet option.\n"
"\n"
, stdout);
 fputs(
"       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
"\n"
"       52     The  server  didn't  reply anything, which here is considered an\n"
"              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"
, stdout);
 fputs(
"       60     Peer certificate cannot be authenticated with known CA  certifi-\n"
"              cates.\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 and curl\n"
"              failed to log in.\n"
"\n"
, stdout);
 fputs(
"       68     File not found on TFTP server.\n"
"\n"
"       69     Permission problem on TFTP server.\n"
"\n"
"       70     Out of disk space on TFTP server.\n"
"\n"
"       71     Illegal TFTP operation.\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"
"       77     Problem with reading the SSL CA cert (path? access rights?).\n"
"\n"
, stdout);
 fputs(
"       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  in\n"
"              7.19.0).\n"
"\n"
"       83     Issuer check failed (added in 7.19.0).\n"
"\n"
"       84     The FTP PRET command failed\n"
"\n"
"       85     RTSP: mismatch of CSeq numbers\n"
"\n"
"       86     RTSP: mismatch of Session Identifiers\n"
"\n"
, stdout);
 fputs(
"       87     unable to parse FTP file list\n"
"\n"
"       88     FTP chunk callback reported error\n"
"\n"
"       89     No connection available, the session will be queued\n"
"\n"
"       90     SSL public key does not matched pinned public key\n"
"\n"
"       91     Invalid SSL certificate status.\n"
"\n"
"       92     Stream error in HTTP/2 framing layer.\n"
"\n"
"       XX     More error codes will appear here in future releases. The exist-\n"
"              ing ones are meant to never change.\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
, stdout);
 fputs(
"       Daniel Stenberg is the main author, but the whole list of  contributors\n"
"       is found in the separate THANKS file.\n"
"\n"
"WWW\n"
"       https://curl.haxx.se\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"
"        https://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"
, stdout);
 fputs(
"  Get the README file the user's home directory at funet's ftp-server:\n"
"\n"
"        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"
, stdout);
 fputs(
"  Get a file off an FTPS server:\n"
"\n"
"        curl ftps://files.are.secure.com/secrets.txt\n"
"\n"
"  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://example.com/etc/issue\n"
"\n"
"  Get a file from an SSH server using SCP using a private key\n"
"  (not password-protected) to authenticate:\n"
"\n"
"        curl -u username: --key ~/.ssh/id_rsa \\\n"
, stdout);
 fputs(
"             scp://example.com/~/file.txt\n"
"\n"
"  Get a file from an SSH server using SCP using a private key\n"
"  (password-protected) to authenticate:\n"
"\n"
"        curl -u username: --key ~/.ssh/id_rsa --pass private_key_password \\\n"
"             scp://example.com/~/file.txt\n"
"\n"
"  Get the main page from an IPv6 web server:\n"
"\n"
"        curl \"http://[2001:1890:1112:1::20]/\"\n"
"\n"
"  Get a file from an SMB server:\n"
"\n"
"        curl -u \"domain\\username:passwd\" smb://server.example.com/share/file.txt\n"
"\n"
"DOWNLOAD TO A FILE\n"
"\n"
, stdout);
 fputs(
"  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"
"        curl -O www.haxx.se/index.html -O curl.haxx.se/download.html\n"
"\n"
"USING PASSWORDS\n"
"\n"
" FTP\n"
"\n"
, stdout);
 fputs(
"   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"
"   Note that using FTPS:// as prefix is the \"implicit\" way as described in the\n"
, stdout);
 fputs(
"   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 use the --key option to specify a\n"
"   private key to use instead of a password. Note that the private key may\n"
"   itself be protected by a password that is unrelated to the login password\n"
"   of the remote system; this password is specified using the --pass option.\n"
"   Typically, curl will automatically extract the public key from the private\n"
, stdout);
 fputs(
"   key file, but in cases where curl does not have the proper library support,\n"
"   a matching public key file must be specified using the --pubkey option.\n"
"\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"
, stdout);
 fputs(
"   HTTP offers many different methods of authentication and curl supports\n"
"   several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which\n"
"   method to use, curl defaults to Basic. You can also ask curl to pick the\n"
"   most secure ones out of the ones that the server accepts for the given URL,\n"
"   by using --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"
, stdout);
 fputs(
"   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"
"   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"
, stdout);
 fputs(
" 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"
"        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"
, stdout);
 fputs(
"        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"
"        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"
, stdout);
 fputs(
" 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"
" 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"
, stdout);
 fputs(
"   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"
" 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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"        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"
"  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"
, stdout);
 fputs(
"  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"
"        curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n"
"\n"
"SMB / SMBS\n"
"\n"
"        curl -T file.txt -u \"domain\\username:passwd\" \n"
"         smb://server.example.com/share/\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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"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"
, stdout);
 fputs(
"  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"
"  -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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"        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.\n"
"\n"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"        <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"
"        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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"             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"
, stdout);
 fputs(
"  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"
"  -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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"    '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"
"  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"
, stdout);
 fputs(
"    '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"
"  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"
, stdout);
 fputs(
"  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"
"  If you've received a page from a server that contains a header like:\n"
"        Set-Cookie: sessionid=boo123; path=\"/foo\";\n"
"\n"
, stdout);
 fputs(
"  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"
"  manner similar to:\n"
"\n"
"        curl --dump-header headers www.example.com\n"
"\n"
, stdout);
 fputs(
"  ... 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"
"        curl -c cookies.txt www.example.com\n"
"\n"
, stdout);
 fputs(
"  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"
"  as netscape's cookie file. Curl will determine what kind it is based on the\n"
, stdout);
 fputs(
"  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"
"  To read and write cookies from a netscape cookie file, you can set both -b\n"
"  and -c to use the same file:\n"
"\n"
"        curl -b cookies.txt -c cookies.txt www.example.com\n"
"\n"
"PROGRESS METER\n"
"\n"
, stdout);
 fputs(
"  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"
"   %             - percentage completed of the whole transfer\n"
, stdout);
 fputs(
"   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"
"   Time Total    - expected time to complete the operation\n"
, stdout);
 fputs(
"   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"
"  Curl allows the user to set the transfer speed conditions that must be met\n"
, stdout);
 fputs(
"  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"
"  that the above operation must be completed in whole within 30 minutes:\n"
"\n"
, stdout);
 fputs(
"        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"
"        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"
, stdout);
 fputs(
"  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"
"  transfer stalls during periods.\n"
"\n"
"CONFIG FILE\n"
"\n"
"  Curl automatically tries to read the .curlrc file (or _curlrc file on win32\n"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"        proxy = proxy.our.domain.com:8080\n"
"\n"
"  White spaces ARE significant at the end of lines, but all white spaces\n"
, stdout);
 fputs(
"  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"
"        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"
, stdout);
 fputs(
"  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"
"  to pass on your own custom headers when getting a web page. You can do\n"
"  this by using the -H flag.\n"
"\n"
, stdout);
 fputs(
"  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"
"  empty one, you prevent that header from being sent. To prevent the Host:\n"
"  header from being used:\n"
"\n"
, stdout);
 fputs(
"        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"
"  site, you need to specify the absolute file name:\n"
"\n"
"        curl ftp://user:passwd@my.site.com//README\n"
"\n"
, stdout);
 fputs(
"  (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"
"  The FTP protocol requires one of the involved parties to open a second\n"
, stdout);
 fputs(
"  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"
"  If the server, for example, is behind a firewall that doesn't allow connections\n"
, stdout);
 fputs(
"  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"
"  which of them to use. Default address can also be used:\n"
"\n"
, stdout);
 fputs(
"        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"
"        curl --interface eth0:1 http://www.netscape.com/\n"
"\n"
"  or\n"
"\n"
, stdout);
 fputs(
"        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"
"  from sites that require valid certificates. The only drawback is that the\n"
, stdout);
 fputs(
"  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"
"  formatted certificates to PEM formatted ones. This kind of converter is\n"
, stdout);
 fputs(
"  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"
"        curl -E /path/to/cert.pem:password https://secure.site.com/\n"
"\n"
, stdout);
 fputs(
"  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"
"        curl -2 https://secure.site.com/\n"
"\n"
, stdout);
 fputs(
"  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"
"  On Windows, curl will use WinLDAP from Platform SDK by default.\n"
"\n"
"  Default protocol version used by curl is LDAPv3. LDAPv2 will be used as\n"
"  fallback mechanism in case if LDAPv3 will fail to connect.\n"
"\n"
"  LDAP is a complex thing and writing an LDAP query is not an easy task. I do\n"
, stdout);
 fputs(
"  advise you to dig up the syntax description for that elsewhere. One such\n"
"  place might be:\n"
"\n"
"  RFC 2255, \"The LDAP URL Format\" https://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"
, stdout);
 fputs(
"  You also can use authentication when accessing LDAP catalog:\n"
"\n"
"      curl -u user:passwd \"ldap://ldap.frontec.se/o=frontec??sub?mail=*\"\n"
"      curl \"ldap://user:passwd@ldap.frontec.se/o=frontec??sub?mail=*\"\n"
"\n"
"  By default, if user and password provided, OpenLDAP/WinLDAP will use basic\n"
"  authentication. On Windows you can control this behavior by providing \n"
"  one of --basic, --ntlm or --digest option in curl command line\n"
"\n"
, stdout);
 fputs(
"      curl --ntlm \"ldap://user:passwd@ldap.frontec.se/o=frontec??sub?mail=*\"\n"
"\n"
"  On Windows, if no user/password specified, auto-negotiation mechanism will\n"
"  be used with current logon credentials (SSPI/SPNEGO).\n"
"\n"
"ENVIRONMENT VARIABLES\n"
"\n"
"  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"
, stdout);
 fputs(
"  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"
"  domain of one of these strings, transactions with that node will not be\n"
"  proxied. When a domain is used, it needs to start with a period. A user can\n"
"  specify that both www.example.com and foo.example.com should not uses a\n"
, stdout);
 fputs(
"  proxy by setting NO_PROXY to \".example.com\". By including the full name you\n"
"  can exclude specific host names, so to make www.example.com not use a proxy\n"
"  but still have foo.example.com do it, set NO_PROXY to \"www.example.com\"\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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"        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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"   - 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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"  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 or match an existing\n"
"  network interface on Linux and the percent character must be URL escaped. The\n"
"  previous example in an SFTP URL might 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"
, stdout);
 fputs(
"  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"
"  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"
, stdout);
 fputs(
"    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"
"  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"
, stdout);
 fputs(
"  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"
"  its development and things relevant to this. Get all info at\n"
"  https://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"
, stdout);
 fputs(
"    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"
"    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"
, stdout);
 fputs(
"    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"
"  these mailing lists instead of mailing any individual.\n"
, stdout) ;
}
#else /* !USE_MANUAL */
/* built-in manual is disabled, blank function */
#include "tool_hugehelp.h"
void hugehelp(void) {}
#endif /* USE_MANUAL */
