From ffb634d4ef5378c5f8255577fb65df3de82c0396 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 28 Sep 2021 17:36:09 +0200 Subject: 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 --- docs/cmdline-opts/gen.pl | 42 +++ src/Makefile.am | 3 + src/Makefile.inc | 1 + src/tool_help.c | 782 +---------------------------------------------- src/tool_help.h | 44 ++- src/tool_listhelp.c | 764 +++++++++++++++++++++++++++++++++++++++++++++ tests/data/test1463 | 2 +- tests/data/test1464 | 2 +- tests/manpage-scan.pl | 12 +- 9 files changed, 862 insertions(+), 790 deletions(-) create mode 100644 src/tool_listhelp.c diff --git a/docs/cmdline-opts/gen.pl b/docs/cmdline-opts/gen.pl index 405099b71..2a89d5e76 100755 --- a/docs/cmdline-opts/gen.pl +++ b/docs/cmdline-opts/gen.pl @@ -47,6 +47,7 @@ my %catlong; use POSIX qw(strftime); my $date = strftime "%B %d %Y", localtime; +my $year = strftime "%Y", localtime; my $version = "unknown"; open(INC, "<../../include/curl/curlver.h"); @@ -418,6 +419,42 @@ sub header { } sub listhelp { + print <, 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[] = { +HEAD + ; foreach my $f (sort keys %helplong) { my $long = $f; my $short = $optlong{$long}; @@ -455,6 +492,11 @@ sub listhelp { } print $line; } + print < 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 ", - "Connect via abstract Unix domain socket", - CURLHELP_CONNECTION}, - {" --alt-svc ", - "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 ", - "Use AWS V4 signature authentication", - CURLHELP_AUTH | CURLHELP_HTTP}, - {" --basic", - "Use HTTP Basic Authentication", - CURLHELP_AUTH}, - {" --cacert ", - "CA certificate to verify peer against", - CURLHELP_TLS}, - {" --capath ", - "CA directory to verify peer against", - CURLHELP_TLS}, - {"-E, --cert ", - "Client certificate file and password", - CURLHELP_TLS}, - {" --cert-status", - "Verify the status of the server cert via OCSP-staple", - CURLHELP_TLS}, - {" --cert-type ", - "Certificate type (DER/PEM/ENG)", - CURLHELP_TLS}, - {" --ciphers ", - "SSL ciphers to use", - CURLHELP_TLS}, - {" --compressed", - "Request compressed response", - CURLHELP_HTTP}, - {" --compressed-ssh", - "Enable SSH compression", - CURLHELP_SCP | CURLHELP_SSH}, - {"-K, --config ", - "Read config from a file", - CURLHELP_CURL}, - {" --connect-timeout ", - "Maximum time allowed for connection", - CURLHELP_CONNECTION}, - {" --connect-to ", - "Connect to host", - CURLHELP_CONNECTION}, - {"-C, --continue-at ", - "Resumed transfer offset", - CURLHELP_CONNECTION}, - {"-b, --cookie ", - "Send cookies from string/file", - CURLHELP_HTTP}, - {"-c, --cookie-jar ", - "Write cookies to after operation", - CURLHELP_HTTP}, - {" --create-dirs", - "Create necessary local directory hierarchy", - CURLHELP_CURL}, - {" --create-file-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 ", - "Use this CRL list", - CURLHELP_TLS}, - {" --curves ", - "(EC) TLS key exchange algorithm(s) to request", - CURLHELP_TLS}, - {"-d, --data ", - "HTTP POST data", - CURLHELP_IMPORTANT | CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --data-ascii ", - "HTTP POST ASCII data", - CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --data-binary ", - "HTTP POST binary data", - CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --data-raw ", - "HTTP POST data, '@' allowed", - CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --data-urlencode ", - "HTTP POST data url encoded", - CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD}, - {" --delegation ", - "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 to use for DNS requests", - CURLHELP_DNS}, - {" --dns-ipv4-addr
", - "IPv4 address to use for DNS requests", - CURLHELP_DNS}, - {" --dns-ipv6-addr
", - "IPv6 address to use for DNS requests", - CURLHELP_DNS}, - {" --dns-servers ", - "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 ", - "Resolve host names over DoH", - CURLHELP_DNS}, - {"-D, --dump-header ", - "Write the received headers to ", - CURLHELP_HTTP | CURLHELP_FTP}, - {" --egd-file ", - "EGD socket path for random data", - CURLHELP_TLS}, - {" --engine ", - "Crypto engine to use", - CURLHELP_TLS}, - {" --etag-compare ", - "Pass an ETag from a file as a custom header", - CURLHELP_HTTP}, - {" --etag-save ", - "Parse ETag from a request and save it to a file", - CURLHELP_HTTP}, - {" --expect100-timeout ", - "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 ", - "Specify multipart MIME data", - CURLHELP_HTTP | CURLHELP_UPLOAD}, - {" --form-string ", - "Specify multipart MIME data", - CURLHELP_HTTP | CURLHELP_UPLOAD}, - {" --ftp-account ", - "Account data string", - CURLHELP_FTP | CURLHELP_AUTH}, - {" --ftp-alternative-to-user ", - "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 ", - "Control CWD usage", - CURLHELP_FTP}, - {" --ftp-pasv", - "Use PASV/EPSV instead of PORT", - CURLHELP_FTP}, - {"-P, --ftp-port
", - "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 ", - "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 ", - "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
", - "Pass custom header(s) to server", - CURLHELP_HTTP}, - {"-h, --help ", - "Get help for commands", - CURLHELP_IMPORTANT | CURLHELP_CURL}, - {" --hostpubmd5 ", - "Acceptable MD5 hash of the host public key", - CURLHELP_SFTP | CURLHELP_SCP}, - {" --hostpubsha256 ", - "Acceptable SHA256 hash of the host public key", - CURLHELP_SFTP | CURLHELP_SCP}, - {" --hsts ", - "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 ", - "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 ", - "Interval time for keepalive probes", - CURLHELP_CONNECTION}, - {" --key ", - "Private key file name", - CURLHELP_TLS | CURLHELP_SSH}, - {" --key-type ", - "Private key file type (DER/PEM/ENG)", - CURLHELP_TLS}, - {" --krb ", - "Enable Kerberos with security ", - CURLHELP_FTP}, - {" --libcurl ", - "Dump libcurl equivalent code of this command line", - CURLHELP_CURL}, - {" --limit-rate ", - "Limit transfer speed to RATE", - CURLHELP_CONNECTION}, - {"-l, --list-only", - "List only mode", - CURLHELP_FTP | CURLHELP_POP3}, - {" --local-port ", - "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 ", - "Server login options", - CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP | CURLHELP_AUTH}, - {" --mail-auth
", - "Originator address of the original email", - CURLHELP_SMTP}, - {" --mail-from
", - "Mail from this address", - CURLHELP_SMTP}, - {" --mail-rcpt
", - "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 ", - "Maximum file size to download", - CURLHELP_CONNECTION}, - {" --max-redirs ", - "Maximum number of redirects allowed", - CURLHELP_HTTP}, - {"-m, --max-time ", - "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 ", - "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 ", - "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 ", - "OAuth 2 Bearer Token", - CURLHELP_AUTH}, - {"-o, --output ", - "Write to file instead of stdout", - CURLHELP_IMPORTANT | CURLHELP_CURL}, - {" --output-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 ", - "Maximum concurrency for parallel transfers", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {" --pass ", - "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 ", - "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 ", - "Enable/disable PROTOCOLS", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {" --proto-default ", - "Use PROTOCOL for any URL missing a scheme", - CURLHELP_CONNECTION | CURLHELP_CURL}, - {" --proto-redir ", - "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 ", - "CA certificate to verify peer against for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-capath ", - "CA directory to verify peer against for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-cert ", - "Set client certificate for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-cert-type ", - "Client certificate type for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-ciphers ", - "SSL ciphers to use for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-crlfile ", - "Set a CRL list for proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-digest", - "Use Digest authentication on the proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-header
", - "Pass custom header(s) to proxy", - CURLHELP_PROXY}, - {" --proxy-insecure", - "Do HTTPS proxy connections without verifying the proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-key ", - "Private key for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-key-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 ", - "Pass phrase for the private key for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, - {" --proxy-pinnedpubkey ", - "FILE/HASHES public key to verify proxy with", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-service-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 ", - "TLS 1.3 proxy cipher suites", - CURLHELP_PROXY | CURLHELP_TLS}, - {" --proxy-tlsauthtype ", - "TLS authentication type for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, - {" --proxy-tlspassword ", - "TLS password for HTTPS proxy", - CURLHELP_PROXY | CURLHELP_TLS | CURLHELP_AUTH}, - {" --proxy-tlsuser ", - "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 ", - "Proxy user and password", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --proxy1.0 ", - "Use HTTP/1.0 proxy on given port", - CURLHELP_PROXY}, - {"-p, --proxytunnel", - "Operate through an HTTP proxy tunnel (using CONNECT)", - CURLHELP_PROXY}, - {" --pubkey ", - "SSH Public key file name", - CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_AUTH}, - {"-Q, --quote ", - "Send command(s) to server before transfer", - CURLHELP_FTP | CURLHELP_SFTP}, - {" --random-file ", - "File for reading random data from", - CURLHELP_MISC}, - {"-r, --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 ", - "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 ", - "Specify request command to use", - CURLHELP_CONNECTION}, - {" --request-target ", - "Specify the target for this request", - CURLHELP_HTTP}, - {" --resolve <[+]host:port:addr[,addr]...>", - "Resolve the host+port to this address", - CURLHELP_CONNECTION}, - {" --retry ", - "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 ", - "Wait time between retries", - CURLHELP_CURL}, - {" --retry-max-time ", - "Retry only within this period", - CURLHELP_CURL}, - {" --sasl-authzid ", - "Identity for SASL PLAIN authentication", - CURLHELP_AUTH}, - {" --sasl-ir", - "Enable initial response in SASL authentication", - CURLHELP_AUTH}, - {" --service-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 ", - "SOCKS4 proxy on given host + port", - CURLHELP_PROXY}, - {" --socks4a ", - "SOCKS4a proxy on given host + port", - CURLHELP_PROXY}, - {" --socks5 ", - "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 ", - "SOCKS5 proxy service name for GSS-API", - CURLHELP_PROXY | CURLHELP_AUTH}, - {" --socks5-hostname ", - "SOCKS5 proxy, pass host name to proxy", - CURLHELP_PROXY}, - {"-Y, --speed-limit ", - "Stop transfers slower than this", - CURLHELP_CONNECTION}, - {"-y, --speed-time ", - "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 ", - "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 ", - "Set telnet option", - CURLHELP_TELNET}, - {" --tftp-blksize ", - "Set TFTP BLKSIZE option", - CURLHELP_TFTP}, - {" --tftp-no-options", - "Do not send any TFTP options", - CURLHELP_TFTP}, - {"-z, --time-cond