diff options
author | Daniel Stenberg <daniel@haxx.se> | 2021-09-28 17:36:09 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-09-30 17:50:48 +0200 |
commit | ffb634d4ef5378c5f8255577fb65df3de82c0396 (patch) | |
tree | f82d8cdb5888dc01743bcc0a98871c5e4b01f931 /src | |
parent | d10a0af2f3ba4ad7a3b9636b77cc81e1a9c667d8 (diff) | |
download | curl-ffb634d4ef5378c5f8255577fb65df3de82c0396.tar.gz |
tool_listhelp: easier to generate with gen.pl
tool_listhelp.c is now a separate file with only the command line --help
output, exactly as generated by gen.pl. This makes it easier to generate
updates according to what's in the docs/cmdline-opts docs.
cd $srcroot/docs/cmdline-opts
./gen.pl listhelp *.d > $srcroot/src/tool_listhelp.c
With a configure build, this also works:
make -C src listhelp
Closes #7787
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/Makefile.inc | 1 | ||||
-rw-r--r-- | src/tool_help.c | 782 | ||||
-rw-r--r-- | src/tool_help.h | 44 | ||||
-rw-r--r-- | src/tool_listhelp.c | 764 |
5 files changed, 812 insertions, 782 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 734373187..c8abc93b1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -150,3 +150,6 @@ TIDY:=clang-tidy tidy: $(TIDY) $(CURL_CFILES) $(TIDYFLAGS) -- $(curl_CPPFLAGS) $(CPPFLAGS) -DHAVE_CONFIG_H + +listhelp: + (cd $(top_srcdir)/docs/cmdline-opts && ./gen.pl listhelp *.d) > tool_listhelp.c diff --git a/src/Makefile.inc b/src/Makefile.inc index 9839d4ff3..9fb9946d6 100644 --- a/src/Makefile.inc +++ b/src/Makefile.inc @@ -73,6 +73,7 @@ CURL_CFILES = \ tool_homedir.c \ tool_hugehelp.c \ tool_libinfo.c \ + tool_listhelp.c \ tool_main.c \ tool_msgs.c \ tool_operate.c \ diff --git a/src/tool_help.c b/src/tool_help.c index 46969e77f..8eee606b7 100644 --- a/src/tool_help.c +++ b/src/tool_help.c @@ -38,40 +38,6 @@ # define USE_WATT32 #endif -/* - * The bitmask output is generated with the following command - ------------------------------------------------------------ - cd $srcroot/docs/cmdline-opts - ./gen.pl listcats *.d - */ - -#define CURLHELP_HIDDEN 1u << 0u -#define CURLHELP_AUTH 1u << 1u -#define CURLHELP_CONNECTION 1u << 2u -#define CURLHELP_CURL 1u << 3u -#define CURLHELP_DNS 1u << 4u -#define CURLHELP_FILE 1u << 5u -#define CURLHELP_FTP 1u << 6u -#define CURLHELP_HTTP 1u << 7u -#define CURLHELP_IMAP 1u << 8u -#define CURLHELP_IMPORTANT 1u << 9u -#define CURLHELP_MISC 1u << 10u -#define CURLHELP_OUTPUT 1u << 11u -#define CURLHELP_POP3 1u << 12u -#define CURLHELP_POST 1u << 13u -#define CURLHELP_PROXY 1u << 14u -#define CURLHELP_SCP 1u << 15u -#define CURLHELP_SFTP 1u << 16u -#define CURLHELP_SMTP 1u << 17u -#define CURLHELP_SSH 1u << 18u -#define CURLHELP_TELNET 1u << 19u -#define CURLHELP_TFTP 1u << 20u -#define CURLHELP_TLS 1u << 21u -#define CURLHELP_UPLOAD 1u << 22u -#define CURLHELP_VERBOSE 1u << 23u - -typedef unsigned int curlhelp_t; - struct category_descriptors { const char *opt; const char *desc; @@ -108,753 +74,7 @@ static const struct category_descriptors categories[] = { {NULL, NULL, CURLHELP_HIDDEN} }; -/* - * The help output is generated with the following command - --------------------------------------------------------- - - cd $srcroot/docs/cmdline-opts - ./gen.pl listhelp *.d - */ - -struct helptxt { - const char *opt; - const char *desc; - curlhelp_t categories; -}; - - -static const struct helptxt helptext[] = { - {" --abstract-unix-socket <path>", - "Connect via abstract Unix domain socket", - CURLHELP_CONNECTION}, - {" --alt-svc <file name>", - "Enable alt-svc with this cache file", - CURLHELP_HTTP}, - {" --anyauth", - "Pick any authentication method", - CURLHELP_HTTP | CURLHELP_PROXY | CURLHELP_AUTH}, - {"-a, --append", - "Append to target file when uploading", - CURLHELP_FTP | CURLHELP_SFTP}, - {" --aws-sigv4 <provider1[:provider2[:region[:service]]]>", - "Use AWS V4 signature authentication", - CURLHELP_AUTH | CURLHELP_HTTP}, - {" --basic", - "Use HTTP Basic Authentication", - CURLHELP_AUTH}, - {" --cacert <file>", - "CA certificate to verify peer against", - CURLHELP_TLS}, - {" --capath <dir>", - "CA directory to verify peer against", - CURLHELP_TLS}, - {"-E, --cert <certificate[:password]>", - "Client certificate file and password", - CURLHELP_TLS}, - {" --cert-status", - "Verify the status of the server cert via OCSP-staple", - CURLHELP_TLS}, - {" --cert-type <type>", - "Certificate type (DER/PEM/ENG)", - CURLHELP_TLS}, - {" --ciphers <list of ciphers>", - "SSL ciphers to use", - CURLHELP_TLS}, - {" --compressed", - "Request compressed response", - CURLHELP_HTTP}, - {" --compressed-ssh", - "Enable SSH compression", - CURLHELP_SCP | CURLHELP_SSH}, - {"-K, --config <file>", - "Read config from a file", - CURLHELP_CURL}, - {" --connect-timeout <fractional seconds>", - "Maximum time allowed for connection", - CURLHELP_CONNECTION}, - {" --connect-to <HOST1:PORT1:HOST2:PORT2>", - "Connect to host", - CURLHELP_CONNECTION}, - {"-C, --continue-at <offset>", - "Resumed transfer offset", - CURLHELP_CONNECTION}, - {"-b, --cookie <data|filename>", - "Send cookies from string/file", - CURLHELP_HTTP}, - {"-c, --cookie-jar <filename>", - "Write cookies to <filename> after operation", - CURLHELP_HTTP}, - {" --create-dirs", - "Create necessary local directory hierarchy", - CURLHELP_CURL}, - {" --create-file-mode <mode>", - "File mode (octal) for created files", - CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_FILE | CURLHELP_UPLOAD}, - {" --crlf", - "Convert LF to CRLF in upload", - CURLHELP_FTP | CURLHELP_SMTP}, - {" --crlfile <file>", - "Use this CRL list", - CURLHELP_TLS}, - {" --curves <algorithm list>", - "(EC) TLS key exchange algorithm(s) to request", - CURLHELP_TLS}, - {"-d, --data <data>", - "HTTP POST data", - CURLHELP_IMPORTANT | CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --data-ascii <data>", - "HTTP POST ASCII data", - CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --data-binary <data>", - "HTTP POST binary data", - CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --data-raw <data>", - "HTTP POST data, '@' allowed", - CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --data-urlencode <data>", - "HTTP POST data url encoded", - CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --delegation <LEVEL>", - "GSS-API delegation permission", - CURLHELP_AUTH}, - {" --digest", - "Use HTTP Digest Authentication", - CURLHELP_PROXY | CURLHELP_AUTH | CURLHELP_HTTP}, - {"-q, --disable", - "Disable .curlrc", - CURLHELP_CURL}, - {" --disable-eprt", - "Inhibit using EPRT or LPRT", - CURLHELP_FTP}, - {" --disable-epsv", - "Inhibit using EPSV", - CURLHELP_FTP}, - {" --disallow-username-in-url", - "Disallow username in url", - CURLHELP_CURL | CURLHELP_HTTP}, - {" --dns-interface <interface>", - "Interface to use for DNS requests", - CURLHELP_DNS}, - {" --dns-ipv4-addr <address>", - "IPv4 address to use for DNS requests", - CURLHELP_DNS}, - {" --dns-ipv6-addr <address>", - "IPv6 address to use for DNS requests", - CURLHELP_DNS}, - {" --dns-servers <addresses>", - "DNS server addrs to use", - CURLHELP_DNS}, - {" --doh-cert-status", - "Verify the status of the DoH server cert via OCSP-staple", - CURLHELP_DNS | CURLHELP_TLS}, - {" --doh-insecure", - "Allow insecure DoH server connections", - CURLHELP_DNS | CURLHELP_TLS}, - {" --doh-url <URL>", - "Resolve host names over DoH", - CURLHELP_DNS}, - {"-D, --dump-header <filename>", - "Write the received headers to <filename>", - CURLHELP_HTTP | CURLHELP_FTP}, - {" --egd-file <file>", - "EGD socket path for random data", - CURLHELP_TLS}, - {" --engine <name>", - "Crypto engine to use", - CURLHELP_TLS}, - {" --etag-compare <file>", - "Pass an ETag from a file as a custom header", - CURLHELP_HTTP}, - {" --etag-save <file>", - "Parse ETag from a request and save it to a file", - CURLHELP_HTTP}, - {" --expect100-timeout <seconds>", - "How long to wait for 100-continue", - CURLHELP_HTTP}, - {"-f, --fail", - "Fail silently (no output at all) on HTTP errors", - CURLHELP_IMPORTANT | CURLHELP_HTTP}, - {" --fail-early", - "Fail on first transfer error, do not continue", - CURLHELP_CURL}, - {" --fail-with-body", - "Fail on HTTP errors but save the body", - CURLHELP_HTTP | CURLHELP_OUTPUT}, - {" --false-start", - "Enable TLS False Start", - CURLHELP_TLS}, - {"-F, --form <name=content>", - "Specify multipart MIME data", - CURLHELP_HTTP | CURLHELP_UPLOAD}, - {" --form-string <name=string>", - "Specify multipart MIME data", - CURLHELP_HTTP | CURLHELP_UPLOAD}, - {" --ftp-account <data>", - "Account data string", - CURLHELP_FTP | CURLHELP_AUTH}, - {" --ftp-alternative-to-user <command>", - "String to replace USER [name]", - CURLHELP_FTP}, - {" --ftp-create-dirs", - "Create the remote dirs if not present", - CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_CURL}, - {" --ftp-method <method>", - "Control CWD usage", - CURLHELP_FTP}, - {" --ftp-pasv", - "Use PASV/EPSV instead of PORT", - CURLHELP_FTP}, - {"-P, --ftp-port <address>", - "Use PORT instead of PASV", - CURLHELP_FTP}, - {" --ftp-pret", - "Send PRET before PASV", - CURLHELP_FTP}, - {" --ftp-skip-pasv-ip", - "Skip the IP address for PASV", - CURLHELP_FTP}, - {" --ftp-ssl-ccc", - "Send CCC after authenticating", - CURLHELP_FTP | CURLHELP_TLS}, - {" --ftp-ssl-ccc-mode <active/passive>", - "Set CCC mode", - CURLHELP_FTP | CURLHELP_TLS}, - {" --ftp-ssl-control", - "Require SSL/TLS for FTP login, clear for transfer", - CURLHELP_FTP | CURLHELP_TLS}, - {"-G, --get", - "Put the post data in the URL and use GET", - CURLHELP_HTTP | CURLHELP_UPLOAD}, - {"-g, --globoff", - "Disable URL sequences and ranges using {} and []", - CURLHELP_CURL}, - {" --happy-eyeballs-timeout-ms <milliseconds>", - "Time for IPv6 before trying IPv4", - CURLHELP_CONNECTION}, - {" --haproxy-protocol", - "Send HAProxy PROXY protocol v1 header", - CURLHELP_HTTP | CURLHELP_PROXY}, - {"-I, --head", - "Show document info only", - CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_FILE}, - {"-H, --header <header/@file>", - "Pass custom header(s) to server", - CURLHELP_HTTP}, - {"-h, --help <category>", - "Get help for commands", - CURLHELP_IMPORTANT | CURLHELP_CURL}, - {" --hostpubmd5 <md5>", - "Acceptable MD5 hash of the host public key", - CURLHELP_SFTP | CURLHELP_SCP}, - {" --hostpubsha256 <sha256>", - "Acceptable SHA256 hash of the host public key", - CURLHELP_SFTP | CURLHELP_SCP}, - {" --hsts <file name>", - "Enable HSTS with this cache file", - CURLHELP_HTTP}, - {" --http0.9", - "Allow HTTP 0.9 responses", - CURLHELP_HTTP}, - {"-0, --http1.0", - "Use HTTP 1.0", - CURLHELP_HTTP}, - {" --http1.1", - "Use HTTP 1.1", - CURLHELP_HTTP}, - {" --http2", - "Use HTTP 2", - CURLHELP_HTTP}, - {" --http2-prior-knowledge", - "Use HTTP 2 without HTTP/1.1 Upgrade", - CURLHELP_HTTP}, - {" --http3", - "Use HTTP v3", - CURLHELP_HTTP}, - {" --ignore-content-length", - "Ignore the size of the remote resource", - CURLHELP_HTTP | CURLHELP_FTP}, - {"-i, --include", - "Include protocol response headers in the output", - CURLHELP_IMPORTANT | CURLHELP_VERBOSE}, - {"-k, --insecure", - "Allow insecure server connections when using SSL", - CURLHELP_TLS}, - {" --interface <name>", - "Use network INTERFACE (or address)", - CURLHELP_CONNECTION}, - {"-4, --ipv4", - "Resolve names to IPv4 addresses", - CURLHELP_CONNECTION | CURLHELP_DNS}, - {"-6, --ipv6", - "Resolve names to IPv6 addresses", - CURLHELP_CONNECTION | CURLHELP_DNS}, - {"-j, --junk-session-cookies", - "Ignore session cookies read from file", - CURLHELP_HTTP}, - {" --keepalive-time <seconds>", - "Interval time for keepalive probes", - CURLHELP_CONNECTION}, - {" --key <key>", - "Private key file name", - CURLHELP_TLS | CURLHELP_SSH}, - {" --key-type <type>", - "Private key file type (DER/PEM/ENG)", - CURLHELP_TLS}, - {" --krb <level>", - "Enable Kerberos with security <level>", - CURLHELP_FTP}, - {" --libcurl <file>", - "Dump libcurl equivalent code of this command line", - CURLHELP_CURL}, - {" --limit-rate <speed>", - "Limit transfer speed to RATE", - CURLHELP_CONNECTION}, - {"-l, --list-only", - "List only mode", - CURLHELP_FTP | CURLHELP_POP3}, - {" --local-port <num/range>", - "Force use of RANGE for local port numbers", - CURLHELP_CONNECTION}, - {"-L, --location", - "Follow redirects", - CURLHELP_HTTP}, - {" --location-trusted", - "Like --location, and send auth to other hosts", - CURLHELP_HTTP | CURLHELP_AUTH}, - {" --login-options <options>", - "Server login options", - CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP | CURLHELP_AUTH}, - {" --mail-auth <address>", - "Originator address of the original email", - CURLHELP_SMTP}, - {" --mail-from <address>", - "Mail from this address", - CURLHELP_SMTP}, - {" --mail-rcpt <address>", - "Mail to this address", - CURLHELP_SMTP}, - {" --mail-rcpt-allowfails", - "Allow RCPT TO command to fail for some recipients", - CURLHELP_SMTP}, - {"-M, --manual", - "Display the full manual", - CURLHELP_CURL}, - {" --max-filesize <bytes>", - "Maximum file size to download", - CURLHELP_CONNECTION}, - {" --max-redirs <num>", - "Maximum number of redirects allowed", - CURLHELP_HTTP}, - {"-m, --max-time <fractional seconds>", - "Maximum time allowed for the transfer", - CURLHELP_CONNECTION}, - {" --metalink", - "Process given URLs as metalink XML file", - CURLHELP_MISC}, - {" --negotiate", - "Use HTTP Negotiate (SPNEGO) authentication", - CURLHELP_AUTH | CURLHELP_HTTP}, - {"-n, --netrc", - "Must read .netrc for user name and password", - CURLHELP_CURL}, - {" --netrc-file <filename>", - "Specify FILE for netrc", - CURLHELP_CURL}, - {" --netrc-optional", - "Use either .netrc or URL", - CURLHELP_CURL}, - {"-:, --next", - "Make next URL use its separate set of options", - CURLHELP_CURL}, - {" --no-alpn", - "Disable the ALPN TLS extension", - CURLHELP_TLS | CURLHELP_HTTP}, - {"-N, --no-buffer", - "Disable buffering of the output stream", - CURLHELP_CURL}, - {" --no-keepalive", - "Disable TCP keepalive on the connection", - CURLHELP_CONNECTION}, - {" --no-npn", - "Disable the NPN TLS extension", - CURLHELP_TLS | CURLHELP_HTTP}, - {" --no-progress-meter", - "Do not show the progress meter", - CURLHELP_VERBOSE}, - {" --no-sessionid", - "Disable SSL session-ID reusing", - CURLHELP_TLS}, - {" --noproxy <no-proxy-list>", - "List of hosts which do not use proxy", - CURLHELP_PROXY}, - {" --ntlm", - "Use HTTP NTLM authentication", - CURLHELP_AUTH | CURLHELP_HTTP}, - {" --ntlm-wb", - "Use HTTP NTLM authentication with winbind", - CURLHELP_AUTH | CURLHELP_HTTP}, - {" --oauth2-bearer <token>", - "OAuth 2 Bearer Token", - CURLHELP_AUTH}, - {"-o, --output <file>", - "Write to file instead of stdout", - CURLHELP_IMPORTANT | CURLHELP_CURL}, - {" --output-dir <dir>", - "Directory to save files in", - CURLHELP_CURL}, - {"-Z, --parallel", - "Perform transfers in parallel", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {" --parallel-immediate", - "Do not wait for multiplexing (with --parallel)", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {" --parallel-max <num>", - "Maximum concurrency for parallel transfers", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {" --pass <phrase>", - "Pass phrase for the private key", - CURLHELP_SSH | CURLHELP_TLS | CURLHELP_AUTH}, - {" --path-as-is", - "Do not squash .. sequences in URL path", - CURLHELP_CURL}, - {" --pinnedpubkey <hashes>", - "FILE/HASHES Public key to verify peer against", - CURLHELP_TLS}, - {" --post301", - "Do not switch to GET after following a 301", - CURLHELP_HTTP | CURLHELP_POST}, - {" --post302", - "Do not switch to GET after following a 302", - CURLHELP_HTTP | CURLHELP_POST}, - {" --post303", - "Do not switch to GET after following a 303", - CURLHELP_HTTP | CURLHELP_POST}, - {" --preproxy [protocol://]host[:port]", - "Use this proxy first", - CURLHELP_PROXY}, - {"-#, --progress-bar", - "Display transfer progress as a bar", - CURLHELP_VERBOSE}, - {" --proto <protocols>", - "Enable/disable PROTOCOLS", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {" --proto-default <protocol>", - "Use PROTOCOL for any URL missing a scheme", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {" --proto-redir <protocols>", - "Enable/disable PROTOCOLS on redirect", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {"-x, --proxy [protocol://]host[:port]", - "Use this proxy", - CURLHELP_PROXY}, - {" --proxy-anyauth", - "Pick any proxy authentication method", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --proxy-basic", - "Use Basic authentication on the proxy", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --proxy-cacert <file>", - "CA certificate to verify peer against for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-capath <dir>", - "CA directory to verify peer against for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-cert <cert[:passwd]>", - "Set client certificate for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-cert-type <type>", - "Client certificate type for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-ciphers <list>", - "SSL ciphers to use for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-crlfile <file>", - "Set a CRL list for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-digest", - "Use Digest authentication on the proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-header <header/@file>", - "Pass custom header(s) to proxy", - CURLHELP_PROXY}, - {" --proxy-insecure", - "Do HTTPS proxy connections without verifying the proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-key <key>", - "Private key for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-key-type <type>", - "Private key file type for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-negotiate", - "Use HTTP Negotiate (SPNEGO) authentication on the proxy", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --proxy-ntlm", - "Use NTLM authentication on the proxy", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --proxy-pass <phrase>", - "Pass phrase for the private key for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, - {" --proxy-pinnedpubkey <hashes>", - "FILE/HASHES public key to verify proxy with", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-service-name <name>", - "SPNEGO proxy service name", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-ssl-allow-beast", - "Allow security flaw for interop for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-ssl-auto-client-cert", - "Use auto client certificate for proxy (Schannel)", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-tls13-ciphers <ciphersuite list>", - "TLS 1.3 proxy cipher suites", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-tlsauthtype <type>", - "TLS authentication type for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, - {" --proxy-tlspassword <string>", - "TLS password for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, - {" --proxy-tlsuser <name>", - "TLS username for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, - {" --proxy-tlsv1", - "Use TLSv1 for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, - {"-U, --proxy-user <user:password>", - "Proxy user and password", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --proxy1.0 <host[:port]>", - "Use HTTP/1.0 proxy on given port", - CURLHELP_PROXY}, - {"-p, --proxytunnel", - "Operate through an HTTP proxy tunnel (using CONNECT)", - CURLHELP_PROXY}, - {" --pubkey <key>", - "SSH Public key file name", - CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_AUTH}, - {"-Q, --quote <command>", - "Send command(s) to server before transfer", - CURLHELP_FTP | CURLHELP_SFTP}, - {" --random-file <file>", - "File for reading random data from", - CURLHELP_MISC}, - {"-r, --range <range>", - "Retrieve only the bytes within RANGE", - CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_FILE}, - {" --raw", - "Do HTTP \"raw\"; no transfer decoding", - CURLHELP_HTTP}, - {"-e, --referer <URL>", - "Referrer URL", - CURLHELP_HTTP}, - {"-J, --remote-header-name", - "Use the header-provided filename", - CURLHELP_OUTPUT}, - {"-O, --remote-name", - "Write output to a file named as the remote file", - CURLHELP_IMPORTANT | CURLHELP_OUTPUT}, - {" --remote-name-all", - "Use the remote file name for all URLs", - CURLHELP_OUTPUT}, - {"-R, --remote-time", - "Set the remote file's time on the local output", - CURLHELP_OUTPUT}, - {"-X, --request <command>", - "Specify request command to use", - CURLHELP_CONNECTION}, - {" --request-target <path>", - "Specify the target for this request", - CURLHELP_HTTP}, - {" --resolve <[+]host:port:addr[,addr]...>", - "Resolve the host+port to this address", - CURLHELP_CONNECTION}, - {" --retry <num>", - "Retry request if transient problems occur", - CURLHELP_CURL}, - {" --retry-all-errors", - "Retry all errors (use with --retry)", - CURLHELP_CURL}, - {" --retry-connrefused", - "Retry on connection refused (use with --retry)", - CURLHELP_CURL}, - {" --retry-delay <seconds>", - "Wait time between retries", - CURLHELP_CURL}, - {" --retry-max-time <seconds>", - "Retry only within this period", - CURLHELP_CURL}, - {" --sasl-authzid <identity>", - "Identity for SASL PLAIN authentication", - CURLHELP_AUTH}, - {" --sasl-ir", - "Enable initial response in SASL authentication", - CURLHELP_AUTH}, - {" --service-name <name>", - "SPNEGO service name", - CURLHELP_MISC}, - {"-S, --show-error", - "Show error even when -s is used", - CURLHELP_CURL}, - {"-s, --silent", - "Silent mode", - CURLHELP_IMPORTANT | CURLHELP_VERBOSE}, - {" --socks4 <host[:port]>", - "SOCKS4 proxy on given host + port", - CURLHELP_PROXY}, - {" --socks4a <host[:port]>", - "SOCKS4a proxy on given host + port", - CURLHELP_PROXY}, - {" --socks5 <host[:port]>", - "SOCKS5 proxy on given host + port", - CURLHELP_PROXY}, - {" --socks5-basic", - "Enable username/password auth for SOCKS5 proxies", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --socks5-gssapi", - "Enable GSS-API auth for SOCKS5 proxies", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --socks5-gssapi-nec", - "Compatibility with NEC SOCKS5 server", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --socks5-gssapi-service <name>", - "SOCKS5 proxy service name for GSS-API", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --socks5-hostname <host[:port]>", - "SOCKS5 proxy, pass host name to proxy", - CURLHELP_PROXY}, - {"-Y, --speed-limit <speed>", - "Stop transfers slower than this", - CURLHELP_CONNECTION}, - {"-y, --speed-time <seconds>", - "Trigger 'speed-limit' abort after this time", - CURLHELP_CONNECTION}, - {" --ssl", - "Try SSL/TLS", - CURLHELP_TLS}, - {" --ssl-allow-beast", - "Allow security flaw to improve interop", - CURLHELP_TLS}, - {" --ssl-auto-client-cert", - "Use auto client certificate (Schannel)", - CURLHELP_TLS}, - {" --ssl-no-revoke", - "Disable cert revocation checks (Schannel)", - CURLHELP_TLS}, - {" --ssl-reqd", - "Require SSL/TLS", - CURLHELP_TLS}, - {" --ssl-revoke-best-effort", - "Ignore missing/offline cert CRL dist points", - CURLHELP_TLS}, - {"-2, --sslv2", - "Use SSLv2", - CURLHELP_TLS}, - {"-3, --sslv3", - "Use SSLv3", - CURLHELP_TLS}, - {" --stderr <file>", - "Where to redirect stderr", - CURLHELP_VERBOSE}, - {" --styled-output", - "Enable styled output for HTTP headers", - CURLHELP_VERBOSE}, - {" --suppress-connect-headers", - "Suppress proxy CONNECT response headers", - CURLHELP_PROXY}, - {" --tcp-fastopen", - "Use TCP Fast Open", - CURLHELP_CONNECTION}, - {" --tcp-nodelay", - "Use the TCP_NODELAY option", - CURLHELP_CONNECTION}, - {"-t, --telnet-option <opt=val>", - "Set telnet option", - CURLHELP_TELNET}, - {" --tftp-blksize <value>", - "Set TFTP BLKSIZE option", - CURLHELP_TFTP}, - {" --tftp-no-options", - "Do not send any TFTP options", - CURLHELP_TFTP}, - {"-z, --time-cond <time>", - "Transfer based on a time condition", - CURLHELP_HTTP | CURLHELP_FTP}, - {" --tls-max <VERSION>", - "Set maximum allowed TLS version", - CURLHELP_TLS}, - {" --tls13-ciphers <ciphersuite list>", - "TLS 1.3 cipher suites to use", - CURLHELP_TLS}, - {" --tlsauthtype <type>", - "TLS authentication type", - CURLHELP_TLS | CURLHELP_AUTH}, - {" --tlspassword <string>", - "TLS password", - CURLHELP_TLS | CURLHELP_AUTH}, - {" --tlsuser <name>", - "TLS user name", - CURLHELP_TLS | CURLHELP_AUTH}, - {"-1, --tlsv1", - "Use TLSv1.0 or greater", - CURLHELP_TLS}, - {" --tlsv1.0", - "Use TLSv1.0 or greater", - CURLHELP_TLS}, - {" --tlsv1.1", - "Use TLSv1.1 or greater", - CURLHELP_TLS}, - {" --tlsv1.2", - "Use TLSv1.2 or greater", - CURLHELP_TLS}, - {" --tlsv1.3", - "Use TLSv1.3 or greater", - CURLHELP_TLS}, - {" --tr-encoding", - "Request compressed transfer encoding", - CURLHELP_HTTP}, - {" --trace <file>", - "Write a debug trace to FILE", - CURLHELP_VERBOSE}, - {" --trace-ascii <file>", - "Like --trace, but without hex output", - CURLHELP_VERBOSE}, - {" --trace-time", - "Add time stamps to trace/verbose output", - CURLHELP_VERBOSE}, - {" --unix-socket <path>", - "Connect through this Unix domain socket", - CURLHELP_CONNECTION}, - {"-T, --upload-file <file>", - "Transfer local FILE to destination", - CURLHELP_IMPORTANT | CURLHELP_UPLOAD}, - {" --url <url>", - "URL to work with", - CURLHELP_CURL}, - {"-B, --use-ascii", - "Use ASCII/text transfer", - CURLHELP_MISC}, - {"-u, --user <user:password>", - "Server user and password", - CURLHELP_IMPORTANT | CURLHELP_AUTH}, - {"-A, --user-agent <name>", - "Send User-Agent <name> to server", - CURLHELP_IMPORTANT | CURLHELP_HTTP}, - {"-v, --verbose", - "Make the operation more talkative", - CURLHELP_IMPORTANT | CURLHELP_VERBOSE}, - {"-V, --version", - "Show version number and quit", - CURLHELP_IMPORTANT | CURLHELP_CURL}, - {"-w, --write-out <format>", - "Use output FORMAT after completion", - CURLHELP_VERBOSE}, - {" --xattr", - "Store metadata in extended file attributes", - CURLHELP_MISC}, - { NULL, NULL, CURLHELP_HIDDEN } -}; +extern const struct helptxt helptext[]; struct feat { const char *name; diff --git a/src/tool_help.h b/src/tool_help.h index 39ea2400d..143466286 100644 --- a/src/tool_help.h +++ b/src/tool_help.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2021, 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 @@ -27,4 +27,46 @@ void tool_help(char *category); void tool_list_engines(void); void tool_version_info(void); +typedef unsigned int curlhelp_t; + +struct helptxt { + const char *opt; + const char *desc; + curlhelp_t categories; +}; + +/* + * The bitmask output is generated with the following command + ------------------------------------------------------------ + cd $srcroot/docs/cmdline-opts + ./gen.pl listcats *.d + */ + +#define CURLHELP_HIDDEN 1u << 0u +#define CURLHELP_AUTH 1u << 1u +#define CURLHELP_CONNECTION 1u << 2u +#define CURLHELP_CURL 1u << 3u +#define CURLHELP_DNS 1u << 4u +#define CURLHELP_FILE 1u << 5u +#define CURLHELP_FTP 1u << 6u +#define CURLHELP_HTTP 1u << 7u +#define CURLHELP_IMAP 1u << 8u +#define CURLHELP_IMPORTANT 1u << 9u +#define CURLHELP_MISC 1u << 10u +#define CURLHELP_OUTPUT 1u << 11u +#define CURLHELP_POP3 1u << 12u +#define CURLHELP_POST 1u << 13u +#define CURLHELP_PROXY 1u << 14u +#define CURLHELP_SCP 1u << 15u +#define CURLHELP_SFTP 1u << 16u +#define CURLHELP_SMTP 1u << 17u +#define CURLHELP_SSH 1u << 18u +#define CURLHELP_TELNET 1u << 19u +#define CURLHELP_TFTP 1u << 20u +#define CURLHELP_TLS 1u << 21u +#define CURLHELP_UPLOAD 1u << 22u +#define CURLHELP_VERBOSE 1u << 23u + +extern const struct helptxt helptext[]; + #endif /* HEADER_CURL_TOOL_HELP_H */ diff --git a/src/tool_listhelp.c b/src/tool_listhelp.c new file mode 100644 index 000000000..ce92ec02c --- /dev/null +++ b/src/tool_listhelp.c @@ -0,0 +1,764 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel.se>, et al. + * + * This software is licensed as described in the file COPYING, which + * you should have received as part of this distribution. The terms + * are also available at https://curl.se/docs/copyright.html. + * + * You may opt to use, copy, modify, merge, publish, distribute and/or sell + * copies of the Software, and permit persons to whom the Software is + * furnished to do so, under the terms of the COPYING file. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ***************************************************************************/ +#include "tool_setup.h" +#include "tool_help.h" + +/* + * DO NOT edit tool_listhelp.c manually. + * This source file is generated with the following command: + + cd $srcroot/docs/cmdline-opts + ./gen.pl listhelp *.d > $srcroot/src/tool_listhelp.c + */ + +const struct helptxt helptext[] = { + {" --abstract-unix-socket <path>", + "Connect via abstract Unix domain socket", + CURLHELP_CONNECTION}, + {" --alt-svc <file name>", + "Enable alt-svc with this cache file", + CURLHELP_HTTP}, + {" --anyauth", + "Pick any authentication method", + CURLHELP_HTTP | CURLHELP_PROXY | CURLHELP_AUTH}, + {"-a, --append", + "Append to target file when uploading", + CURLHELP_FTP | CURLHELP_SFTP}, + {" --aws-sigv4 <provider1[:provider2[:region[:service]]]>", + "Use AWS V4 signature authentication", + CURLHELP_AUTH | CURLHELP_HTTP}, + {" --basic", + "Use HTTP Basic Authentication", + CURLHELP_AUTH}, + {" --cacert <file>", + "CA certificate to verify peer against", + CURLHELP_TLS}, + {" --capath <dir>", + "CA directory to verify peer against", + CURLHELP_TLS}, + {"-E, --cert <certificate[:password]>", + "Client certificate file and password", + CURLHELP_TLS}, + {" --cert-status", + "Verify the status of the server cert via OCSP-staple", + CURLHELP_TLS}, + {" --cert-type <type>", + "Certificate type (DER/PEM/ENG)", + CURLHELP_TLS}, + {" --ciphers <list of ciphers>", + "SSL ciphers to use", + CURLHELP_TLS}, + {" --compressed", + "Request compressed response", + CURLHELP_HTTP}, + {" --compressed-ssh", + "Enable SSH compression", + CURLHELP_SCP | CURLHELP_SSH}, + {"-K, --config <file>", + "Read config from a file", + CURLHELP_CURL}, + {" --connect-timeout <fractional seconds>", + "Maximum time allowed for connection", + CURLHELP_CONNECTION}, + {" --connect-to <HOST1:PORT1:HOST2:PORT2>", + "Connect to host", + CURLHELP_CONNECTION}, + {"-C, --continue-at <offset>", + "Resumed transfer offset", + CURLHELP_CONNECTION}, + {"-b, --cookie <data|filename>", + "Send cookies from string/file", + CURLHELP_HTTP}, + {"-c, --cookie-jar <filename>", + "Write cookies to <filename> after operation", + CURLHELP_HTTP}, + {" --create-dirs", + "Create necessary local directory hierarchy", + CURLHELP_CURL}, + {" --create-file-mode <mode>", + "File mode for created files", + CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_FILE | CURLHELP_UPLOAD}, + {" --crlf", + "Convert LF to CRLF in upload", + CURLHELP_FTP | CURLHELP_SMTP}, + {" --crlfile <file>", + "Use this CRL list", + CURLHELP_TLS}, + {" --curves <algorithm list>", + "(EC) TLS key exchange algorithm(s) to request", + CURLHELP_TLS}, + {"-d, --data <data>", + "HTTP POST data", + CURLHELP_IMPORTANT | CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, + {" --data-ascii <data>", + "HTTP POST ASCII data", + CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, + {" --data-binary <data>", + "HTTP POST binary data", + CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, + {" --data-raw <data>", + "HTTP POST data, '@' allowed", + CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, + {" --data-urlencode <data>", + "HTTP POST data url encoded", + CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, + {" --delegation <LEVEL>", + "GSS-API delegation permission", + CURLHELP_AUTH}, + {" --digest", + "Use HTTP Digest Authentication", + CURLHELP_PROXY | CURLHELP_AUTH | CURLHELP_HTTP}, + {"-q, --disable", + "Disable .curlrc", + CURLHELP_CURL}, + {" --disable-eprt", + "Inhibit using EPRT or LPRT", + CURLHELP_FTP}, + {" --disable-epsv", + "Inhibit using EPSV", + CURLHELP_FTP}, + {" --disallow-username-in-url", + "Disallow username in url", + CURLHELP_CURL | CURLHELP_HTTP}, + {" --dns-interface <interface>", + "Interface to use for DNS requests", + CURLHELP_DNS}, + {" --dns-ipv4-addr <address>", + "IPv4 address to use for DNS requests", + CURLHELP_DNS}, + {" --dns-ipv6-addr <address>", + "IPv6 address to use for DNS requests", + CURLHELP_DNS}, + {" --dns-servers <addresses>", + "DNS server addrs to use", + CURLHELP_DNS}, + {" --doh-cert-status", + "Verify the status of the DoH server cert via OCSP-staple", + CURLHELP_DNS | CURLHELP_TLS}, + {" --doh-insecure", + "Allow insecure DoH server connections", + CURLHELP_DNS | CURLHELP_TLS}, + {" --doh-url <URL>", + "Resolve host names over DoH", + CURLHELP_DNS}, + {"-D, --dump-header <filename>", + "Write the received headers to <filename>", + CURLHELP_HTTP | CURLHELP_FTP}, + {" --egd-file <file>", + "EGD socket path for random data", + CURLHELP_TLS}, + {" --engine <name>", + "Crypto engine to use", + CURLHELP_TLS}, + {" --etag-compare <file>", + "Pass an ETag from a file as a custom header", + CURLHELP_HTTP}, + {" --etag-save <file>", + "Parse ETag from a request and save it to a file", + CURLHELP_HTTP}, + {" --expect100-timeout <seconds>", + "How long to wait for 100-continue", + CURLHELP_HTTP}, + {"-f, --fail", + "Fail silently (no output at all) on HTTP errors", + CURLHELP_IMPORTANT | CURLHELP_HTTP}, + {" --fail-early", + "Fail on first transfer error, do not continue", + CURLHELP_CURL}, + {" --fail-with-body", + "Fail on HTTP errors but save the body", + CURLHELP_HTTP | CURLHELP_OUTPUT}, + {" --false-start", + "Enable TLS False Start", + CURLHELP_TLS}, + {"-F, --form <name=content>", + "Specify multipart MIME data", + CURLHELP_HTTP | CURLHELP_UPLOAD}, + {" --form-string <name=string>", + "Specify multipart MIME data", + CURLHELP_HTTP | CURLHELP_UPLOAD}, + {" --ftp-account <data>", + "Account data string", + CURLHELP_FTP | CURLHELP_AUTH}, + {" --ftp-alternative-to-user <command>", + "String to replace USER [name]", + CURLHELP_FTP}, + {" --ftp-create-dirs", + "Create the remote dirs if not present", + CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_CURL}, + {" --ftp-method <method>", + "Control CWD usage", + CURLHELP_FTP}, + {" --ftp-pasv", + "Use PASV/EPSV instead of PORT", + CURLHELP_FTP}, + {"-P, --ftp-port <address>", + "Use PORT instead of PASV", + CURLHELP_FTP}, + {" --ftp-pret", + "Send PRET before PASV", + CURLHELP_FTP}, + {" --ftp-skip-pasv-ip", + "Skip the IP address for PASV", + CURLHELP_FTP}, + {" --ftp-ssl-ccc", + "Send CCC after authenticating", + CURLHELP_FTP | CURLHELP_TLS}, + {" --ftp-ssl-ccc-mode <active/passive>", + "Set CCC mode", + CURLHELP_FTP | CURLHELP_TLS}, + {" --ftp-ssl-control", + "Require SSL/TLS for FTP login, clear for transfer", + CURLHELP_FTP | CURLHELP_TLS}, + {"-G, --get", + "Put the post data in the URL and use GET", + CURLHELP_HTTP | CURLHELP_UPLOAD}, + {"-g, --globoff", + "Disable URL sequences and ranges using {} and []", + CURLHELP_CURL}, + {" --happy-eyeballs-timeout-ms <milliseconds>", + "Time for IPv6 before trying IPv4", + CURLHELP_CONNECTION}, + {" --haproxy-protocol", + "Send HAProxy PROXY protocol v1 header", + CURLHELP_HTTP | CURLHELP_PROXY}, + {"-I, --head", + "Show document info only", + CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_FILE}, + {"-H, --header <header/@file>", + "Pass custom header(s) to server", + CURLHELP_HTTP}, + {"-h, --help <category>", + "Get help for commands", + CURLHELP_IMPORTANT | CURLHELP_CURL}, + {" --hostpubmd5 <md5>", + "Acceptable MD5 hash of the host public key", + CURLHELP_SFTP | CURLHELP_SCP}, + {" --hostpubsha256 <sha256>", + "Acceptable SHA256 hash of the host public key", + CURLHELP_SFTP | CURLHELP_SCP}, + {" --hsts <file name>", + "Enable HSTS with this cache file", + CURLHELP_HTTP}, + {" --http0.9", + "Allow HTTP 0.9 responses", + CURLHELP_HTTP}, + {"-0, --http1.0", + "Use HTTP 1.0", + CURLHELP_HTTP}, + {" --http1.1", + "Use HTTP 1.1", + CURLHELP_HTTP}, + {" --http2", + "Use HTTP 2", + CURLHELP_HTTP}, + {" --http2-prior-knowledge", + "Use HTTP 2 without HTTP/1.1 Upgrade", + CURLHELP_HTTP}, + {" --http3", + "Use HTTP v3", + CURLHELP_HTTP}, + {" --ignore-content-length", + "Ignore the size of the remote resource", + CURLHELP_HTTP | CURLHELP_FTP}, + {"-i, --include", + "Include protocol response headers in the output", + CURLHELP_IMPORTANT | CURLHELP_VERBOSE}, + {"-k, --insecure", + "Allow insecure server connections when using SSL", + CURLHELP_TLS}, + {" --interface <name>", + "Use network INTERFACE (or address)", + CURLHELP_CONNECTION}, + {"-4, --ipv4", + "Resolve names to IPv4 addresses", + CURLHELP_CONNECTION | CURLHELP_DNS}, + {"-6, --ipv6", + "Resolve names to IPv6 addresses", + CURLHELP_CONNECTION | CURLHELP_DNS}, + {"-j, --junk-session-cookies", + "Ignore session cookies read from file", + CURLHELP_HTTP}, + {" --keepalive-time <seconds>", + "Interval time for keepalive probes", + CURLHELP_CONNECTION}, + {" --key <key>", + "Private key file name", + CURLHELP_TLS | CURLHELP_SSH}, + {" --key-type <type>", + "Private key file type (DER/PEM/ENG)", + CURLHELP_TLS}, + {" --krb <level>", + "Enable Kerberos with security <level>", + CURLHELP_FTP}, + {" --libcurl <file>", + "Dump libcurl equivalent code of this command line", + CURLHELP_CURL}, + {" --limit-rate <speed>", + "Limit transfer speed to RATE", + CURLHELP_CONNECTION}, + {"-l, --list-only", + "List only mode", + CURLHELP_FTP | CURLHELP_POP3}, + {" --local-port <num/range>", + "Force use of RANGE for local port numbers", + CURLHELP_CONNECTION}, + {"-L, --location", + "Follow redirects", + CURLHELP_HTTP}, + {" --location-trusted", + "Like --location, and send auth to other hosts", + CURLHELP_HTTP | CURLHELP_AUTH}, + {" --login-options <options>", + "Server login options", + CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP | CURLHELP_AUTH}, + {" --mail-auth <address>", + "Originator address of the original email", + CURLHELP_SMTP}, + {" --mail-from <address>", + "Mail from this address", + CURLHELP_SMTP}, + {" --mail-rcpt <address>", + "Mail to this address", + CURLHELP_SMTP}, + {" --mail-rcpt-allowfails", + "Allow RCPT TO command to fail for some recipients", + CURLHELP_SMTP}, + {"-M, --manual", + "Display the full manual", + CURLHELP_CURL}, + {" --max-filesize <bytes>", + "Maximum file size to download", + CURLHELP_CONNECTION}, + {" --max-redirs <num>", + "Maximum number of redirects allowed", + CURLHELP_HTTP}, + {"-m, --max-time <fractional seconds>", + "Maximum time allowed for transfer", + CURLHELP_CONNECTION}, + {" --metalink", + "Process given URLs as metalink XML file", + CURLHELP_MISC}, + {" --negotiate", + "Use HTTP Negotiate (SPNEGO) authentication", + CURLHELP_AUTH | CURLHELP_HTTP}, + {"-n, --netrc", + "Must read .netrc for user name and password", + CURLHELP_CURL}, + {" --netrc-file <filename>", + "Specify FILE for netrc", + CURLHELP_CURL}, + {" --netrc-optional", + "Use either .netrc or URL", + CURLHELP_CURL}, + {"-:, --next", + "Make next URL use its separate set of options", + CURLHELP_CURL}, + {" --no-alpn", + "Disable the ALPN TLS extension", + CURLHELP_TLS | CURLHELP_HTTP}, + {"-N, --no-buffer", + "Disable buffering of the output stream", + CURLHELP_CURL}, + {" --no-keepalive", + "Disable TCP keepalive on the connection", + CURLHELP_CONNECTION}, + {" --no-npn", + "Disable the NPN TLS extension", + CURLHELP_TLS | CURLHELP_HTTP}, + {" --no-progress-meter", + "Do not show the progress meter", + CURLHELP_VERBOSE}, + {" --no-sessionid", + "Disable SSL session-ID reusing", + CURLHELP_TLS}, + {" --noproxy <no-proxy-list>", + "List of hosts which do not use proxy", + CURLHELP_PROXY}, + {" --ntlm", + "Use HTTP NTLM authentication", + CURLHELP_AUTH | CURLHELP_HTTP}, + {" --ntlm-wb", + "Use HTTP NTLM authentication with winbind", + CURLHELP_AUTH | CURLHELP_HTTP}, + {" --oauth2-bearer <token>", + "OAuth 2 Bearer Token", + CURLHELP_AUTH}, + {"-o, --output <file>", + "Write to file instead of stdout", + CURLHELP_IMPORTANT | CURLHELP_CURL}, + {" --output-dir <dir>", + "Directory to save files in", + CURLHELP_CURL}, + {"-Z, --parallel", + "Perform transfers in parallel", + CURLHELP_CONNECTION | CURLHELP_CURL}, + {" --parallel-immediate", + "Do not wait for multiplexing (with --parallel)", + CURLHELP_CONNECTION | CURLHELP_CURL}, + {" --parallel-max <num>", + "Maximum concurrency for parallel transfers", + CURLHELP_CONNECTION | CURLHELP_CURL}, + {" --pass <phrase>", + "Pass phrase for the private key", + CURLHELP_SSH | CURLHELP_TLS | CURLHELP_AUTH}, + {" --path-as-is", + "Do not squash .. sequences in URL path", + CURLHELP_CURL}, + {" --pinnedpubkey <hashes>", + "FILE/HASHES Public key to verify peer against", + CURLHELP_TLS}, + {" --post301", + "Do not switch to GET after following a 301", + CURLHELP_HTTP | CURLHELP_POST}, + {" --post302", + "Do not switch to GET after following a 302", + CURLHELP_HTTP | CURLHELP_POST}, + {" --post303", + "Do not switch to GET after following a 303", + CURLHELP_HTTP | CURLHELP_POST}, + {" --preproxy [protocol://]host[:port]", + "Use this proxy first", + CURLHELP_PROXY}, + {"-#, --progress-bar", + "Display transfer progress as a bar", + CURLHELP_VERBOSE}, + {" --proto <protocols>", + "Enable/disable PROTOCOLS", + CURLHELP_CONNECTION | CURLHELP_CURL}, + {" --proto-default <protocol>", + "Use PROTOCOL for any URL missing a scheme", + CURLHELP_CONNECTION | CURLHELP_CURL}, + {" --proto-redir <protocols>", + "Enable/disable PROTOCOLS on redirect", + CURLHELP_CONNECTION | CURLHELP_CURL}, + {"-x, --proxy [protocol://]host[:port]", + "Use this proxy", + CURLHELP_PROXY}, + {" --proxy-anyauth", + "Pick any proxy authentication method", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --proxy-basic", + "Use Basic authentication on the proxy", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --proxy-cacert <file>", + "CA certificate to verify peer against for proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-capath <dir>", + "CA directory to verify peer against for proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-cert <cert[:passwd]>", + "Set client certificate for proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-cert-type <type>", + "Client certificate type for HTTPS proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-ciphers <list>", + "SSL ciphers to use for proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-crlfile <file>", + "Set a CRL list for proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-digest", + "Use Digest authentication on the proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-header <header/@file>", + "Pass custom header(s) to proxy", + CURLHELP_PROXY}, + {" --proxy-insecure", + "Do HTTPS proxy connections without verifying the proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-key <key>", + "Private key for HTTPS proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-key-type <type>", + "Private key file type for proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-negotiate", + "Use HTTP Negotiate (SPNEGO) authentication on the proxy", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --proxy-ntlm", + "Use NTLM authentication on the proxy", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --proxy-pass <phrase>", + "Pass phrase for the private key for HTTPS proxy", + CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, + {" --proxy-pinnedpubkey <hashes>", + "FILE/HASHES public key to verify proxy with", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-service-name <name>", + "SPNEGO proxy service name", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-ssl-allow-beast", + "Allow security flaw for interop for HTTPS proxy", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-ssl-auto-client-cert", + "Use auto client certificate for proxy (Schannel)", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-tls13-ciphers <ciphersuite list>", + "TLS 1.3 proxy cipher suites", + CURLHELP_PROXY | CURLHELP_TLS}, + {" --proxy-tlsauthtype <type>", + "TLS authentication type for HTTPS proxy", + CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, + {" --proxy-tlspassword <string>", + "TLS password for HTTPS proxy", + CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, + {" --proxy-tlsuser <name>", + "TLS username for HTTPS proxy", + CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, + {" --proxy-tlsv1", + "Use TLSv1 for HTTPS proxy", + CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, + {"-U, --proxy-user <user:password>", + "Proxy user and password", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --proxy1.0 <host[:port]>", + "Use HTTP/1.0 proxy on given port", + CURLHELP_PROXY}, + {"-p, --proxytunnel", + "Operate through an HTTP proxy tunnel (using CONNECT)", + CURLHELP_PROXY}, + {" --pubkey <key>", + "SSH Public key file name", + CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_AUTH}, + {"-Q, --quote <command>", + "Send command(s) to server before transfer", + CURLHELP_FTP | CURLHELP_SFTP}, + {" --random-file <file>", + "File for reading random data from", + CURLHELP_MISC}, + {"-r, --range <range>", + "Retrieve only the bytes within RANGE", + CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_FILE}, + {" --raw", + "Do HTTP \"raw\"; no transfer decoding", + CURLHELP_HTTP}, + {"-e, --referer <URL>", + "Referrer URL", + CURLHELP_HTTP}, + {"-J, --remote-header-name", + "Use the header-provided filename", + CURLHELP_OUTPUT}, + {"-O, --remote-name", + "Write output to a file named as the remote file", + CURLHELP_IMPORTANT | CURLHELP_OUTPUT}, + {" --remote-name-all", + "Use the remote file name for all URLs", + CURLHELP_OUTPUT}, + {"-R, --remote-time", + "Set the remote file's time on the local output", + CURLHELP_OUTPUT}, + {"-X, --request <command>", + "Specify request command to use", + CURLHELP_CONNECTION}, + {" --request-target <path>", + "Specify the target for this request", + CURLHELP_HTTP}, + {" --resolve <[+]host:port:addr[,addr]...>", + "Resolve the host+port to this address", + CURLHELP_CONNECTION}, + {" --retry <num>", + "Retry request if transient problems occur", + CURLHELP_CURL}, + {" --retry-all-errors", + "Retry all errors (use with --retry)", + CURLHELP_CURL}, + {" --retry-connrefused", + "Retry on connection refused (use with --retry)", + CURLHELP_CURL}, + {" --retry-delay <seconds>", + "Wait time between retries", + CURLHELP_CURL}, + {" --retry-max-time <seconds>", + "Retry only within this period", + CURLHELP_CURL}, + {" --sasl-authzid <identity>", + "Identity for SASL PLAIN authentication", + CURLHELP_AUTH}, + {" --sasl-ir", + "Enable initial response in SASL authentication", + CURLHELP_AUTH}, + {" --service-name <name>", + "SPNEGO service name", + CURLHELP_MISC}, + {"-S, --show-error", + "Show error even when -s is used", + CURLHELP_CURL}, + {"-s, --silent", + "Silent mode", + CURLHELP_IMPORTANT | CURLHELP_VERBOSE}, + {" --socks4 <host[:port]>", + "SOCKS4 proxy on given host + port", + CURLHELP_PROXY}, + {" --socks4a <host[:port]>", + "SOCKS4a proxy on given host + port", + CURLHELP_PROXY}, + {" --socks5 <host[:port]>", + "SOCKS5 proxy on given host + port", + CURLHELP_PROXY}, + {" --socks5-basic", + "Enable username/password auth for SOCKS5 proxies", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --socks5-gssapi", + "Enable GSS-API auth for SOCKS5 proxies", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --socks5-gssapi-nec", + "Compatibility with NEC SOCKS5 server", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --socks5-gssapi-service <name>", + "SOCKS5 proxy service name for GSS-API", + CURLHELP_PROXY | CURLHELP_AUTH}, + {" --socks5-hostname <host[:port]>", + "SOCKS5 proxy, pass host name to proxy", + CURLHELP_PROXY}, + {"-Y, --speed-limit <speed>", + "Stop transfers slower than this", + CURLHELP_CONNECTION}, + {"-y, --speed-time <seconds>", + "Trigger 'speed-limit' abort after this time", + CURLHELP_CONNECTION}, + {" --ssl", + "Try SSL/TLS", + CURLHELP_TLS}, + {" --ssl-allow-beast", + "Allow security flaw to improve interop", + CURLHELP_TLS}, + {" --ssl-auto-client-cert", + "Use auto client certificate (Schannel)", + CURLHELP_TLS}, + {" --ssl-no-revoke", + "Disable cert revocation checks (Schannel)", + CURLHELP_TLS}, + {" --ssl-reqd", + "Require SSL/TLS", + CURLHELP_TLS}, + {" --ssl-revoke-best-effort", + "Ignore missing/offline cert CRL dist points", + CURLHELP_TLS}, + {"-2, --sslv2", + "Use SSLv2", + CURLHELP_TLS}, + {"-3, --sslv3", + "Use SSLv3", + CURLHELP_TLS}, + {" --stderr <file>", + "Where to redirect stderr", + CURLHELP_VERBOSE}, + {" --styled-output", + "Enable styled output for HTTP headers", + CURLHELP_VERBOSE}, + {" --suppress-connect-headers", + "Suppress proxy CONNECT response headers", + CURLHELP_PROXY}, + {" --tcp-fastopen", + "Use TCP Fast Open", + CURLHELP_CONNECTION}, + {" --tcp-nodelay", + "Use the TCP_NODELAY option", + CURLHELP_CONNECTION}, + {"-t, --telnet-option <opt=val>", + "Set telnet option", + CURLHELP_TELNET}, + {" --tftp-blksize <value>", + "Set TFTP BLKSIZE option", + CURLHELP_TFTP}, + {" --tftp-no-options", + "Do not send any TFTP options", + CURLHELP_TFTP}, + {"-z, --time-cond <time>", + "Transfer based on a time condition", + CURLHELP_HTTP | CURLHELP_FTP}, + {" --tls-max <VERSION>", + "Set maximum allowed TLS version", + CURLHELP_TLS}, + {" --tls13-ciphers <ciphersuite list>", + "TLS 1.3 cipher suites to use", + CURLHELP_TLS}, + {" --tlsauthtype <type>", + "TLS authentication type", + CURLHELP_TLS | CURLHELP_AUTH}, + {" --tlspassword <string>", + "TLS password", + CURLHELP_TLS | CURLHELP_AUTH}, + {" --tlsuser <name>", + "TLS user name", + CURLHELP_TLS | CURLHELP_AUTH}, + {"-1, --tlsv1", + "Use TLSv1.0 or greater", + CURLHELP_TLS}, + {" --tlsv1.0", + "Use TLSv1.0 or greater", + CURLHELP_TLS}, + {" --tlsv1.1", + "Use TLSv1.1 or greater", + CURLHELP_TLS}, + {" --tlsv1.2", + "Use TLSv1.2 or greater", + CURLHELP_TLS}, + {" --tlsv1.3", + "Use TLSv1.3 or greater", + CURLHELP_TLS}, + {" --tr-encoding", + "Request compressed transfer encoding", + CURLHELP_HTTP}, + {" --trace <file>", + "Write a debug trace to FILE", + CURLHELP_VERBOSE}, + {" --trace-ascii <file>", + "Like --trace, but without hex output", + CURLHELP_VERBOSE}, + {" --trace-time", + "Add time stamps to trace/verbose output", + CURLHELP_VERBOSE}, + {" --unix-socket <path>", + "Connect through this Unix domain socket", + CURLHELP_CONNECTION}, + {"-T, --upload-file <file>", + "Transfer local FILE to destination", + CURLHELP_IMPORTANT | CURLHELP_UPLOAD}, + {" --url <url>", + "URL to work with", + CURLHELP_CURL}, + {"-B, --use-ascii", + "Use ASCII/text transfer", + CURLHELP_MISC}, + {"-u, --user <user:password>", + "Server user and password", + CURLHELP_IMPORTANT | CURLHELP_AUTH}, + {"-A, --user-agent <name>", + "Send User-Agent <name> to server", + CURLHELP_IMPORTANT | CURLHELP_HTTP}, + {"-v, --verbose", + "Make the operation more talkative", + CURLHELP_IMPORTANT | CURLHELP_VERBOSE}, + {"-V, --version", + "Show version number and quit", + CURLHELP_IMPORTANT | CURLHELP_CURL}, + {"-w, --write-out <format>", + "Use output FORMAT after completion", + CURLHELP_VERBOSE}, + {" --xattr", + "Store metadata in extended file attributes", + CURLHELP_MISC}, + { NULL, NULL, CURLHELP_HIDDEN } +}; |