summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2017-05-04 10:56:25 +0200
committerDaniel Stenberg <daniel@haxx.se>2017-05-04 10:56:25 +0200
commit0552e2809cd8aaaec694b5adc77017f563cb9812 (patch)
treed0f517e34b8127f0845d0a9fb4883539bf5f4e11
parenta51ca050fc193aea9b7ace018c1588a107891d49 (diff)
downloadcurl-bagder/generate-curl-help.tar.gz
curl: generate the --help outputbagder/generate-curl-help
... using the docs/cmdline-opts/gen.pl script, so that we get all the command line option documentation from the same source. The generation of the list has to be done manually and pasted into the source code.
-rwxr-xr-xdocs/cmdline-opts/gen.pl6
-rw-r--r--src/tool_help.c685
-rw-r--r--tests/manpage-scan.pl4
3 files changed, 438 insertions, 257 deletions
diff --git a/docs/cmdline-opts/gen.pl b/docs/cmdline-opts/gen.pl
index 91e893f3e..73ea6d47b 100755
--- a/docs/cmdline-opts/gen.pl
+++ b/docs/cmdline-opts/gen.pl
@@ -307,10 +307,12 @@ sub listhelp {
if($arg) {
$opt .= " $arg";
}
+ my $desc = $helplong{$f};
+ $desc =~ s/\"/\\\"/g; # escape double quotes
- my $line = sprintf " %-19s %s\n", $opt, $helplong{$f};
+ my $line = sprintf " {\"%s\",\n \"%s\"},\n", $opt, $desc;
- if(length($line) > 79) {
+ if(length($opt) + length($desc) > 78) {
print STDERR "WARN: the --$long line is too long\n";
}
print $line;
diff --git a/src/tool_help.c b/src/tool_help.c
index 86d35899a..2889b352d 100644
--- a/src/tool_help.c
+++ b/src/tool_help.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -33,258 +33,436 @@
#endif
/*
- * A few of these source lines are >80 columns wide, but that's only because
- * breaking the strings narrower makes this chunk look even worse!
- *
- * Starting with 7.18.0, this list of command line options is sorted based
- * on the long option name. It is not done automatically, although a command
- * line like the following can help out:
- *
- * curl --help | cut -c5- | grep "^-" | sort
+ * The help output is generated with the following command
+ ---------------------------------------------------------
+
+ cd $srcroot/docs/cmdline-opts
+ ./gen.pl listhelp
*/
-static const char *const helptext[] = {
- "Usage: curl [options...] <url>",
- "Options: (H) means HTTP/HTTPS only, (F) means FTP only",
- " --anyauth Pick \"any\" authentication method (H)",
- " -a, --append Append to target file when uploading (F/SFTP)",
- " --basic Use HTTP Basic Authentication (H)",
- " --cacert FILE CA certificate to verify peer against (SSL)",
- " --capath DIR CA directory to verify peer against (SSL)",
- " -E, --cert CERT[:PASSWD] Client certificate file and password (SSL)",
- " --cert-status Verify the status of the server certificate (SSL)",
- " --cert-type TYPE Certificate file type (DER/PEM/ENG) (SSL)",
- " --ciphers LIST SSL ciphers to use (SSL)",
- " --compressed Request compressed response (using deflate or gzip)",
- " -K, --config FILE Read config from FILE",
- " --connect-timeout SECONDS Maximum time allowed for connection",
- " --connect-to HOST1:PORT1:HOST2:PORT2 Connect to host (network level)",
- " -C, --continue-at OFFSET Resumed transfer OFFSET",
- " -b, --cookie STRING/FILE Read cookies from STRING/FILE (H)",
- " -c, --cookie-jar FILE Write cookies to FILE after operation (H)",
- " --create-dirs Create necessary local directory hierarchy",
- " --crlf Convert LF to CRLF in upload",
- " --crlfile FILE Get a CRL list in PEM format from the given file",
- " -d, --data DATA HTTP POST data (H)",
- " --data-raw DATA HTTP POST data, '@' allowed (H)",
- " --data-ascii DATA HTTP POST ASCII data (H)",
- " --data-binary DATA HTTP POST binary data (H)",
- " --data-urlencode DATA HTTP POST data url encoded (H)",
- " --delegation STRING GSS-API delegation permission",
- " --digest Use HTTP Digest Authentication (H)",
- " --disable-eprt Inhibit using EPRT or LPRT (F)",
- " --disable-epsv Inhibit using EPSV (F)",
- " --dns-servers DNS server addrs to use: 1.1.1.1;2.2.2.2",
- " --dns-interface Interface to use for DNS requests",
- " --dns-ipv4-addr IPv4 address to use for DNS requests, dot notation",
- " --dns-ipv6-addr IPv6 address to use for DNS requests, dot notation",
- " -D, --dump-header FILE Write the received headers to FILE",
- " --egd-file FILE EGD socket path for random data (SSL)",
- " --engine ENGINE Crypto engine (use \"--engine list\" for list) (SSL)",
-#ifdef USE_ENVIRONMENT
- " --environment Write results to environment variables (RISC OS)",
-#endif
- " --expect100-timeout SECONDS How long to wait for 100-continue (H)",
- " -f, --fail Fail silently (no output at all) on HTTP errors (H)",
- " --fail-early Fail on first transfer error, do not continue",
- " --false-start Enable TLS False Start.",
- " -F, --form CONTENT Specify HTTP multipart POST data (H)",
- " --form-string STRING Specify HTTP multipart POST data (H)",
- " --ftp-account DATA Account data string (F)",
- " --ftp-alternative-to-user COMMAND "
- "String to replace \"USER [name]\" (F)",
- " --ftp-create-dirs Create the remote dirs if not present (F)",
- " --ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)",
- " --ftp-pasv Use PASV/EPSV instead of PORT (F)",
- " -P, --ftp-port ADR Use PORT with given address instead of PASV (F)",
- " --ftp-skip-pasv-ip Skip the IP address for PASV (F)\n"
- " --ftp-pret Send PRET before PASV (for drftpd) (F)",
- " --ftp-ssl-ccc Send CCC after authenticating (F)",
- " --ftp-ssl-ccc-mode ACTIVE/PASSIVE Set CCC mode (F)",
- " --ftp-ssl-control Require SSL/TLS for FTP login, "
- "clear for transfer (F)",
- " -G, --get Send the -d data with a HTTP GET (H)",
- " -g, --globoff Disable URL sequences and ranges using {} and []",
- " -H, --header LINE Pass custom header LINE to server (H)",
- " -I, --head Show document info only",
- " -h, --help This help text",
- " --hostpubmd5 MD5 "
- "Hex-encoded MD5 string of the host public key. (SSH)",
- " -0, --http1.0 Use HTTP 1.0 (H)",
- " --http1.1 Use HTTP 1.1 (H)",
- " --http2 Use HTTP 2 (H)",
- " --http2-prior-knowledge Use HTTP 2 without HTTP/1.1 Upgrade (H)",
- " --ignore-content-length Ignore the HTTP Content-Length header",
- " -i, --include Include protocol headers in the output (H/F)",
- " -k, --insecure Allow connections to SSL sites without certs (H)",
- " --interface INTERFACE Use network INTERFACE (or address)",
- " -4, --ipv4 Resolve name to IPv4 address",
- " -6, --ipv6 Resolve name to IPv6 address",
- " -j, --junk-session-cookies Ignore session cookies read from file (H)",
- " --keepalive-time SECONDS Wait SECONDS between keepalive probes",
- " --key KEY Private key file name (SSL/SSH)",
- " --key-type TYPE Private key file type (DER/PEM/ENG) (SSL)",
- " --krb LEVEL Enable Kerberos with security LEVEL (F)",
-#ifndef CURL_DISABLE_LIBCURL_OPTION
- " --libcurl FILE Dump libcurl equivalent code of this command line",
-#endif
- " --limit-rate RATE Limit transfer speed to RATE",
- " -l, --list-only List only mode (F/POP3)",
- " --local-port RANGE Force use of RANGE for local port numbers",
- " -L, --location Follow redirects (H)",
- " --location-trusted "
- "Like '--location', and send auth to other hosts (H)",
- " --login-options OPTIONS Server login options (IMAP, POP3, SMTP)",
- " -M, --manual Display the full manual",
- " --mail-from FROM Mail from this address (SMTP)",
- " --mail-rcpt TO Mail to this/these addresses (SMTP)",
- " --mail-auth AUTH Originator address of the original email (SMTP)",
- " --max-filesize BYTES Maximum file size to download (H/F)",
- " --max-redirs NUM Maximum number of redirects allowed (H)",
- " -m, --max-time SECONDS Maximum time allowed for the transfer",
- " --metalink Process given URLs as metalink XML file",
- " --negotiate Use HTTP Negotiate (SPNEGO) authentication (H)",
- " -n, --netrc Must read .netrc for user name and password",
- " --netrc-optional Use either .netrc or URL; overrides -n",
- " --netrc-file FILE Specify FILE for netrc",
- " -:, --next "
- "Allows the following URL to use a separate set of options",
- " --no-alpn Disable the ALPN TLS extension (H)",
- " -N, --no-buffer Disable buffering of the output stream",
- " --no-keepalive Disable keepalive use on the connection",
- " --no-npn Disable the NPN TLS extension (H)",
- " --no-sessionid Disable SSL session-ID reusing (SSL)",
- " --noproxy List of hosts which do not use proxy",
- " --ntlm Use HTTP NTLM authentication (H)",
- " --ntlm-wb Use HTTP NTLM authentication with winbind (H)",
- " --oauth2-bearer TOKEN OAuth 2 Bearer Token (IMAP, POP3, SMTP)",
- " -o, --output FILE Write to FILE instead of stdout",
- " --pass PASS Pass phrase for the private key (SSL/SSH)",
- " --path-as-is Do not squash .. sequences in URL path",
- " --pinnedpubkey FILE/HASHES Public key to verify peer against (SSL)",
- " --post301 "
- "Do not switch to GET after following a 301 redirect (H)",
- " --post302 "
- "Do not switch to GET after following a 302 redirect (H)",
- " --post303 "
- "Do not switch to GET after following a 303 redirect (H)",
- " --preproxy [PROTOCOL://]HOST[:PORT] Proxy before HTTP(S) proxy",
- " -#, --progress-bar Display transfer progress as a progress bar",
- " --proto PROTOCOLS Enable/disable PROTOCOLS",
- " --proto-default PROTOCOL Use PROTOCOL for any URL missing a scheme",
- " --proto-redir PROTOCOLS Enable/disable PROTOCOLS on redirect",
- " -x, --proxy [PROTOCOL://]HOST[:PORT] Use proxy on given port",
- " --proxy-anyauth Pick \"any\" proxy authentication method (H)",
- " --proxy-basic Use Basic authentication on the proxy (H)",
- " --proxy-digest Use Digest authentication on the proxy (H)",
- " --proxy-cacert FILE "
- "CA certificate to verify peer against for proxy (SSL)",
- " --proxy-capath DIR "
- "CA directory to verify peer against for proxy (SSL)",
- " --proxy-cert CERT[:PASSWD] "
- "Client certificate file and password for proxy (SSL)",
- " --proxy-cert-type TYPE "
- "Certificate file type (DER/PEM/ENG) for proxy (SSL)",
- " --proxy-ciphers LIST SSL ciphers to use for proxy (SSL)",
- " --proxy-crlfile FILE "
- "Get a CRL list in PEM format from the given file for proxy",
- " --proxy-insecure "
- "Allow connections to SSL sites without certs for proxy (H)",
- " --proxy-key KEY Private key file name for proxy (SSL)",
- " --proxy-key-type TYPE "
- "Private key file type for proxy (DER/PEM/ENG) (SSL)",
- " --proxy-negotiate "
- "Use HTTP Negotiate (SPNEGO) authentication on the proxy (H)",
- " --proxy-ntlm Use NTLM authentication on the proxy (H)",
- " --proxy-header LINE Pass custom header LINE to proxy (H)",
- " --proxy-pass PASS Pass phrase for the private key for proxy (SSL)",
- " --proxy-ssl-allow-beast "
- "Allow security flaw to improve interop for proxy (SSL)",
- " --proxy-tlsv1 Use TLSv1 for proxy (SSL)",
- " --proxy-tlsuser USER TLS username for proxy",
- " --proxy-tlspassword STRING TLS password for proxy",
- " --proxy-tlsauthtype STRING "
- "TLS authentication type for proxy (default SRP)",
- " --proxy-service-name NAME SPNEGO proxy service name",
- " --service-name NAME SPNEGO service name",
- " -U, --proxy-user USER[:PASSWORD] Proxy user and password",
- " --proxy1.0 HOST[:PORT] Use HTTP/1.0 proxy on given port",
- " -p, --proxytunnel Operate through a HTTP proxy tunnel (using CONNECT)",
- " --pubkey KEY Public key file name (SSH)",
- " -Q, --quote CMD Send command(s) to server before transfer (F/SFTP)",
- " --random-file FILE File for reading random data from (SSL)",
- " -r, --range RANGE Retrieve only the bytes within RANGE",
- " --raw Do HTTP \"raw\"; no transfer decoding (H)",
- " -e, --referer Referer URL (H)",
- " -J, --remote-header-name Use the header-provided filename (H)",
- " -O, --remote-name Write output to a file named as the remote file",
- " --remote-name-all Use the remote file name for all URLs",
- " -R, --remote-time Set the remote file's time on the local output",
- " -X, --request COMMAND Specify request command to use",
- " --resolve HOST:PORT:ADDRESS Force resolve of HOST:PORT to ADDRESS",
- " --retry NUM "
- "Retry request NUM times if transient problems occur",
- " --retry-connrefused Retry on connection refused (use with --retry)",
- " --retry-delay SECONDS Wait SECONDS between retries",
- " --retry-max-time SECONDS Retry only within this period",
- " --sasl-ir Enable initial response in SASL authentication",
- " -S, --show-error "
- "Show error. With -s, make curl show errors when they occur",
- " -s, --silent Silent mode (don't output anything)",
- " --socks4 HOST[:PORT] SOCKS4 proxy on given host + port",
- " --socks4a HOST[:PORT] SOCKS4a proxy on given host + port",
- " --socks5 HOST[:PORT] SOCKS5 proxy on given host + port",
- " --socks5-hostname HOST[:PORT] "
- "SOCKS5 proxy, pass host name to proxy",
- " --socks5-gssapi-service NAME SOCKS5 proxy service name for GSS-API",
- " --socks5-gssapi-nec Compatibility with NEC SOCKS5 server",
- " -Y, --speed-limit RATE "
- "Stop transfers below RATE for 'speed-time' secs",
- " -y, --speed-time SECONDS "
- "Trigger 'speed-limit' abort after SECONDS (default: 30)",
- " --ssl Try SSL/TLS (FTP, IMAP, POP3, SMTP)",
- " --ssl-reqd Require SSL/TLS (FTP, IMAP, POP3, SMTP)",
- " -2, --sslv2 Use SSLv2 (SSL)",
- " -3, --sslv3 Use SSLv3 (SSL)",
- " --ssl-allow-beast Allow security flaw to improve interop (SSL)",
- " --ssl-no-revoke Disable cert revocation checks (WinSSL)",
- " --stderr FILE Where to redirect stderr (use \"-\" for stdout)",
- " --suppress-connect-headers Suppress proxy CONNECT response headers",
- " --tcp-nodelay Use the TCP_NODELAY option",
- " --tcp-fastopen Use TCP Fast Open",
- " -t, --telnet-option OPT=VAL Set telnet option",
- " --tftp-blksize VALUE Set TFTP BLKSIZE option (must be >512)",
- " --tftp-no-options Do not send TFTP options requests",
- " -z, --time-cond TIME Transfer based on a time condition",
- " -1, --tlsv1 Use >= TLSv1 (SSL)",
- " --tlsv1.0 Use TLSv1.0 (SSL)",
- " --tlsv1.1 Use TLSv1.1 (SSL)",
- " --tlsv1.2 Use TLSv1.2 (SSL)",
- " --tlsv1.3 Use TLSv1.3 (SSL)",
- " --tls-max VERSION Use TLS up to VERSION (SSL)",
- " --trace FILE Write a debug trace to FILE",
- " --trace-ascii FILE Like --trace, but without hex output",
- " --trace-time Add time stamps to trace/verbose output",
- " --tr-encoding Request compressed transfer encoding (H)",
- " -T, --upload-file FILE Transfer FILE to destination",
- " --url URL URL to work with",
- " -B, --use-ascii Use ASCII/text transfer",
- " -u, --user USER[:PASSWORD] Server user and password",
- " --tlsuser USER TLS username",
- " --tlspassword STRING TLS password",
- " --tlsauthtype STRING TLS authentication type (default: SRP)",
- " --unix-socket PATH Connect through this Unix domain socket",
- " --abstract-unix-socket PATH Connect to an abstract Unix domain socket",
- " -A, --user-agent STRING Send User-Agent STRING to server (H)",
- " -v, --verbose Make the operation more talkative",
- " -V, --version Show version number and quit",
-#ifdef USE_WATT32
- " --wdebug Turn on Watt-32 debugging",
-#endif
- " -w, --write-out FORMAT Use output FORMAT after completion",
- " --xattr Store metadata in extended file attributes",
- " -q, --disable Disable .curlrc (must be first parameter)",
- NULL
+struct helptxt {
+ const char *opt;
+ const char *desc;
+};
+
+static const struct helptxt helptext[] = {
+ {" --abstract-unix-socket <path>",
+ "Connect via abstract Unix domain socket"},
+ {" --anyauth",
+ "Pick any authentication method"},
+ {"-a, --append",
+ "Append to target file when uploading"},
+ {" --basic",
+ "Use HTTP Basic Authentication"},
+ {" --cacert <CA certificate>",
+ "CA certificate to verify peer against"},
+ {" --capath <dir>",
+ "CA directory to verify peer against"},
+ {"-E, --cert <certificate[:password]>",
+ "Client certificate file and password"},
+ {" --cert-status",
+ "Verify the status of the server certificate"},
+ {" --cert-type <type>",
+ "Certificate file type (DER/PEM/ENG)"},
+ {" --ciphers <list of ciphers>",
+ "SSL ciphers to use"},
+ {" --compressed",
+ "Request compressed response"},
+ {"-K, --config <file>",
+ "Read config from a file"},
+ {" --connect-timeout <seconds>",
+ "Maximum time allowed for connection"},
+ {" --connect-to <HOST1:PORT1:HOST2:PORT2>",
+ "Connect to host"},
+ {"-C, --continue-at <offset>",
+ "Resumed transfer offset"},
+ {"-b, --cookie <data>",
+ "Send cookies from string/file"},
+ {"-c, --cookie-jar <filename>",
+ "Write cookies to <filename> after operation"},
+ {" --create-dirs",
+ "Create necessary local directory hierarchy"},
+ {" --crlf",
+ "Convert LF to CRLF in upload"},
+ {" --crlfile <file>",
+ "Get a CRL list in PEM format from the given file"},
+ {"-d, --data <data>",
+ "HTTP POST data"},
+ {" --data-ascii <data>",
+ "HTTP POST ASCII data"},
+ {" --data-binary <data>",
+ "HTTP POST binary data"},
+ {" --data-raw <data>",
+ "HTTP POST data, '@' allowed"},
+ {" --data-urlencode <data>",
+ "HTTP POST data url encoded"},
+ {" --delegation <LEVEL>",
+ "GSS-API delegation permission"},
+ {" --digest",
+ "Use HTTP Digest Authentication"},
+ {"-q, --disable",
+ "Disable .curlrc"},
+ {" --disable-eprt",
+ "Inhibit using EPRT or LPRT"},
+ {" --disable-epsv",
+ "Inhibit using EPSV"},
+ {" --dns-interface <interface>",
+ "Interface to use for DNS requests"},
+ {" --dns-ipv4-addr <address>",
+ "IPv4 address to use for DNS requests"},
+ {" --dns-ipv6-addr <address>",
+ "IPv6 address to use for DNS requests"},
+ {" --dns-servers <addresses>",
+ "DNS server addrs to use"},
+ {"-D, --dump-header <filename>",
+ "Write the received headers to <filename>"},
+ {" --egd-file <file>",
+ "EGD socket path for random data"},
+ {" --engine <name>",
+ "Crypto engine to use"},
+ {" --environment",
+ "Write results to environment variables"},
+ {" --expect100-timeout <seconds>",
+ "How long to wait for 100-continue"},
+ {"-f, --fail",
+ "Fail silently (no output at all) on HTTP errors"},
+ {" --fail-early",
+ "Fail on first transfer error, do not continue"},
+ {" --false-start",
+ "Enable TLS False Start"},
+ {"-F, --form <name=content>",
+ "Specify HTTP multipart POST data"},
+ {" --form-string <name=string>",
+ "Specify HTTP multipart POST data"},
+ {" --ftp-account <data>",
+ "Account data string"},
+ {" --ftp-alternative-to-user <command>",
+ "String to replace USER [name]"},
+ {" --ftp-create-dirs",
+ "Create the remote dirs if not present"},
+ {" --ftp-method <method>",
+ "Control CWD usage"},
+ {" --ftp-pasv",
+ "Use PASV/EPSV instead of PORT"},
+ {"-P, --ftp-port <address>",
+ "Use PORT instead of PASV"},
+ {" --ftp-pret",
+ "Send PRET before PASV"},
+ {" --ftp-skip-pasv-ip",
+ "Skip the IP address for PASV"},
+ {" --ftp-ssl-ccc",
+ "Send CCC after authenticating"},
+ {" --ftp-ssl-ccc-mode <active/passive>",
+ "Set CCC mode"},
+ {" --ftp-ssl-control",
+ "Require SSL/TLS for FTP login, clear for transfer"},
+ {"-G, --get",
+ "Put the post data in the URL and use GET"},
+ {"-g, --globoff",
+ "Disable URL sequences and ranges using {} and []"},
+ {"-I, --head",
+ "Show document info only"},
+ {"-H, --header <header>",
+ "Pass custom header LINE to server"},
+ {"-h, --help",
+ "This help text"},
+ {" --hostpubmd5 <md5>",
+ "Acceptable MD5 hash of the host public key"},
+ {"-0, --http1.0",
+ "Use HTTP 1.0"},
+ {" --http1.1",
+ "Use HTTP 1.1"},
+ {" --http2",
+ "Use HTTP 2"},
+ {" --http2-prior-knowledge",
+ "Use HTTP 2 without HTTP/1.1 Upgrade"},
+ {" --ignore-content-length",
+ "Ignore the size of the remote resource"},
+ {"-i, --include",
+ "Include protocol headers in the output"},
+ {"-k, --insecure",
+ "Allow insecure server connections when using SSL"},
+ {" --interface <name>",
+ "Use network INTERFACE (or address)"},
+ {"-4, --ipv4",
+ "Resolve names to IPv4 addresses"},
+ {"-6, --ipv6",
+ "Resolve names to IPv6 addresses"},
+ {"-j, --junk-session-cookies",
+ "Ignore session cookies read from file"},
+ {" --keepalive-time <seconds>",
+ "Interval time for keepalive probes"},
+ {" --key <key>",
+ "Private key file name"},
+ {" --key-type <type>",
+ "Private key file type (DER/PEM/ENG)"},
+ {" --krb <level>",
+ "Enable Kerberos with security <level>"},
+ {" --libcurl <file>",
+ "Dump libcurl equivalent code of this command line"},
+ {" --limit-rate <speed>",
+ "Limit transfer speed to RATE"},
+ {"-l, --list-only",
+ "List only mode"},
+ {" --local-port <num/range>",
+ "Force use of RANGE for local port numbers"},
+ {"-L, --location",
+ "Follow redirects"},
+ {" --location-trusted",
+ "Like --location, and send auth to other hosts"},
+ {" --login-options <options>",
+ "Server login options"},
+ {" --mail-auth <address>",
+ "Originator address of the original email"},
+ {" --mail-from <address>",
+ "Mail from this address"},
+ {" --mail-rcpt <address>",
+ "Mail from this address"},
+ {"-M, --manual",
+ "Display the full manual"},
+ {" --max-filesize <bytes>",
+ "Maximum file size to download"},
+ {" --max-redirs <num>",
+ "Maximum number of redirects allowed"},
+ {"-m, --max-time <time>",
+ "Maximum time allowed for the transfer"},
+ {" --metalink",
+ "Process given URLs as metalink XML file"},
+ {" --negotiate",
+ "Use HTTP Negotiate (SPNEGO) authentication"},
+ {"-n, --netrc",
+ "Must read .netrc for user name and password"},
+ {" --netrc-file <filename>",
+ "Specify FILE for netrc"},
+ {" --netrc-optional",
+ "Use either .netrc or URL"},
+ {"-:, --next",
+ "Make next URL use its separate set of options"},
+ {" --no-alpn",
+ "Disable the ALPN TLS extension"},
+ {"-N, --no-buffer",
+ "Disable buffering of the output stream"},
+ {" --no-keepalive",
+ "Disable TCP keepalive on the connection"},
+ {" --no-npn",
+ "Disable the NPN TLS extension"},
+ {" --no-sessionid",
+ "Disable SSL session-ID reusing"},
+ {" --noproxy <no-proxy-list>",
+ "List of hosts which do not use proxy"},
+ {" --ntlm",
+ "Use HTTP NTLM authentication"},
+ {" --ntlm-wb",
+ "Use HTTP NTLM authentication with winbind"},
+ {" --oauth2-bearer",
+ "OAuth 2 Bearer Token"},
+ {"-o, --output <file>",
+ "Write to file instead of stdout"},
+ {" --pass <phrase>",
+ "Pass phrase for the private key"},
+ {" --path-as-is",
+ "Do not squash .. sequences in URL path"},
+ {" --pinnedpubkey <hashes>",
+ "FILE/HASHES Public key to verify peer against"},
+ {" --post301",
+ "Do not switch to GET after following a 301"},
+ {" --post302",
+ "Do not switch to GET after following a 302"},
+ {" --post303",
+ "Do not switch to GET after following a 303"},
+ {" --preproxy [protocol://]host[:port]",
+ "Use this proxy first"},
+ {"-#, --progress-bar",
+ "Display transfer progress as a bar"},
+ {" --proto <protocols>",
+ "Enable/disable PROTOCOLS"},
+ {" --proto-default <protocol>",
+ "Use PROTOCOL for any URL missing a scheme"},
+ {" --proto-redir <protocols>",
+ "Enable/disable PROTOCOLS on redirect"},
+ {"-x, --proxy [protocol://]host[:port]",
+ "Use this proxy"},
+ {" --proxy-anyauth",
+ "Pick any proxy authentication method"},
+ {" --proxy-basic",
+ "Use Basic authentication on the proxy"},
+ {" --proxy-cacert <file>",
+ "CA certificate to verify peer against for proxy"},
+ {" --proxy-capath <dir>",
+ "CA directory to verify peer against for proxy"},
+ {" --proxy-cert <cert[:passwd]>",
+ "Set client certificate for proxy"},
+ {" --proxy-cert-type <type>",
+ "Client certificate type for HTTS proxy"},
+ {" --proxy-ciphers <list>",
+ "SSL ciphers to use for proxy"},
+ {" --proxy-crlfile <file>",
+ "Set a CRL list for proxy"},
+ {" --proxy-digest",
+ "Use Digest authentication on the proxy"},
+ {" --proxy-header <header>",
+ "Pass custom header LINE to proxy"},
+ {" --proxy-insecure",
+ "Do HTTPS proxy connections without verifying the proxy"},
+ {" --proxy-key <key>",
+ "Private key for HTTPS proxy"},
+ {" --proxy-key-type <type>",
+ "Private key file type for proxy"},
+ {" --proxy-negotiate",
+ "Use HTTP Negotiate (SPNEGO) authentication on the proxy"},
+ {" --proxy-ntlm",
+ "Use NTLM authentication on the proxy"},
+ {" --proxy-pass <phrase>",
+ "Pass phrase for the private key for HTTPS proxy"},
+ {" --proxy-service-name <name>",
+ "SPNEGO proxy service name"},
+ {" --proxy-ssl-allow-beast",
+ "Allow security flaw for interop for HTTPS proxy"},
+ {" --proxy-tlsauthtype <type>",
+ "TLS authentication type for HTTPS proxy"},
+ {" --proxy-tlspassword <string>",
+ "TLS password for HTTPS proxy"},
+ {" --proxy-tlsuser <name>",
+ "TLS username for HTTPS proxy"},
+ {" --proxy-tlsv1",
+ "Use TLSv1 for HTTPS proxy"},
+ {"-U, --proxy-user <user:password>",
+ "Proxy user and password"},
+ {" --proxy1.0 <host[:port]>",
+ "Use HTTP/1.0 proxy on given port"},
+ {"-p, --proxytunnel",
+ "Operate through a HTTP proxy tunnel (using CONNECT)"},
+ {" --pubkey <key>",
+ "SSH Public key file name"},
+ {"-Q, --quote",
+ "Send command(s) to server before transfer"},
+ {" --random-file <file>",
+ "File for reading random data from"},
+ {"-r, --range <range>",
+ "Retrieve only the bytes within RANGE"},
+ {" --raw",
+ "Do HTTP \"raw\"; no transfer decoding"},
+ {"-e, --referer <URL>",
+ "Referrer URL"},
+ {"-J, --remote-header-name",
+ "Use the header-provided filename"},
+ {"-O, --remote-name",
+ "Write output to a file named as the remote file"},
+ {" --remote-name-all",
+ "Use the remote file name for all URLs"},
+ {"-R, --remote-time",
+ "Set the remote file's time on the local output"},
+ {"-X, --request <command>",
+ "Specify request command to use"},
+ {" --resolve <host:port:address>",
+ "Resolve the host+port to this address"},
+ {" --retry <num>",
+ "Retry request if transient problems occur"},
+ {" --retry-connrefused",
+ "Retry on connection refused (use with --retry)"},
+ {" --retry-delay <seconds>",
+ "Wait time between retries"},
+ {" --retry-max-time <seconds>",
+ "Retry only within this period"},
+ {" --sasl-ir",
+ "Enable initial response in SASL authentication"},
+ {" --service-name <name>",
+ "SPNEGO service name"},
+ {"-S, --show-error",
+ "Show error even when -s is used"},
+ {"-s, --silent",
+ "Silent mode"},
+ {" --socks4 <host[:port]>",
+ "SOCKS4 proxy on given host + port"},
+ {" --socks4a <host[:port]>",
+ "SOCKS4a proxy on given host + port"},
+ {" --socks5 <host[:port]>",
+ "SOCKS5 proxy on given host + port"},
+ {" --socks5-gssapi-nec",
+ "Compatibility with NEC SOCKS5 server"},
+ {" --socks5-gssapi-service <name>",
+ "SOCKS5 proxy service name for GSS-API"},
+ {" --socks5-hostname <host[:port]>",
+ "SOCKS5 proxy, pass host name to proxy"},
+ {"-Y, --speed-limit <speed>",
+ "Stop transfers slower than this"},
+ {"-y, --speed-time <seconds>",
+ "Trigger 'speed-limit' abort after this time"},
+ {" --ssl",
+ "Try SSL/TLS"},
+ {" --ssl-allow-beast",
+ "Allow security flaw to improve interop"},
+ {" --ssl-no-revoke",
+ "Disable cert revocation checks (WinSSL)"},
+ {" --ssl-reqd",
+ "Require SSL/TLS"},
+ {"-2, --sslv2",
+ "Use SSLv2"},
+ {"-3, --sslv3",
+ "Use SSLv3"},
+ {" --stderr",
+ "Where to redirect stderr"},
+ {" --suppress-connect-headers",
+ "Suppress proxy CONNECT response headers"},
+ {" --tcp-fastopen",
+ "Use TCP Fast Open"},
+ {" --tcp-nodelay",
+ "Use the TCP_NODELAY option"},
+ {"-t, --telnet-option <opt=val>",
+ "Set telnet option"},
+ {" --tftp-blksize <value>",
+ "Set TFTP BLKSIZE option"},
+ {" --tftp-no-options",
+ "Do not send any TFTP options"},
+ {"-z, --time-cond <time>",
+ "Transfer based on a time condition"},
+ {" --tls-max <VERSION>",
+ "Use TLSv1.0 or greater"},
+ {" --tlsauthtype <type>",
+ "TLS authentication type"},
+ {" --tlspassword",
+ "TLS password"},
+ {" --tlsuser <name>",
+ "TLS user name"},
+ {"-1, --tlsv1",
+ "Use TLSv1.0 or greater"},
+ {" --tlsv1.0",
+ "Use TLSv1.0"},
+ {" --tlsv1.1",
+ "Use TLSv1.1"},
+ {" --tlsv1.2",
+ "Use TLSv1.2"},
+ {" --tlsv1.3",
+ "Use TLSv1.3"},
+ {" --tr-encoding",
+ "Request compressed transfer encoding"},
+ {" --trace <file>",
+ "Write a debug trace to FILE"},
+ {" --trace-ascii <file>",
+ "Like --trace, but without hex output"},
+ {" --trace-time",
+ "Add time stamps to trace/verbose output"},
+ {" --unix-socket <path>",
+ "Connect through this Unix domain socket"},
+ {"-T, --upload-file <file>",
+ "Transfer local FILE to destination"},
+ {" --url <url>",
+ "URL to work with"},
+ {"-B, --use-ascii",
+ "Use ASCII/text transfer"},
+ {"-u, --user <user:password>",
+ "Server user and password"},
+ {"-A, --user-agent <name>",
+ "Send User-Agent <name> to server"},
+ {"-v, --verbose",
+ "Make the operation more talkative"},
+ {"-V, --version",
+ "Show version number and quit"},
+ {"-w, --write-out <format>",
+ "Use output FORMAT after completion"},
+ {" --xattr",
+ "Store metadata in extended file attributes"},
+ { NULL, NULL }
};
#ifdef NETWARE
@@ -325,8 +503,9 @@ static const struct feat feats[] = {
void tool_help(void)
{
int i;
- for(i = 0; helptext[i]; i++) {
- puts(helptext[i]);
+ puts("Usage: curl [options...] <url>");
+ for(i = 0; helptext[i].opt; i++) {
+ printf(" %-19s %s\n", helptext[i].opt, helptext[i].desc);
#ifdef PRINT_LINES_PAUSE
if(i && ((i % PRINT_LINES_PAUSE) == 0))
tool_pressanykey();
diff --git a/tests/manpage-scan.pl b/tests/manpage-scan.pl
index aa67f7f83..b6864c857 100644
--- a/tests/manpage-scan.pl
+++ b/tests/manpage-scan.pl
@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2016, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -232,7 +232,7 @@ my @toolhelp; # store all parsed parameters
while(<R>) {
chomp;
my $l= $_;
- if(/^ \" *(.*)/) {
+ if(/^ \{\" *(.*)/) {
my $str=$1;
my $combo;
if($str =~ /^-(.), --([a-z0-9.-]*)/) {