cmdline-opts: category cleanup

Option cleanups:

 --get is not upload
 --form* are post
 - added several options into ldap, smtp, imap and pop3
 - shortened the category descriptions in the list

category curl fixes:

 --create-dirs removed from 'curl'
 --ftp-create-dirs removed from 'curl'
 --netrc moved to 'auth' from 'curl'
 --netrc-file moved to 'auth' from 'curl'
 --netrc-optional moved to 'auth' from 'curl'
 --no-buffer moved to 'output' from 'curl'
 --no-clobber removed from 'curl'
 --output removed from 'curl'
 --output-dir removed from 'curl'
 --remove-on-error removed from 'curl'

Add a "global" category:

- Made all "global" options set this category

Add a "deprecated" category:

- Moved the deprecated options to it (maybe they should not be in any
 category long term)

Add a 'timeout' category

- Put a number of appropriate options in it

Add an 'ldap' category

- Put the LDAP related option in there

Remove categories "ECH" and "ipfs"

- They should not be categories. Had only one single option each.

Remove category "misc"

- It should not be a category as it is impossible to know when to browse
  it.

--use-ascii moved to ftp and output
--xattr moved to output
--service-name moved to auth

Managen fixes:

- errors if an option is given a category name that is not already setup
  for in code

- verifies that options set `scope: global` also is put in category
  `global´

Closes #14101
This commit is contained in:
Daniel Stenberg 2024-07-04 13:38:18 +02:00
parent 18c61aa036
commit 2abfc759b9
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
64 changed files with 239 additions and 204 deletions

View file

@ -42,41 +42,39 @@
struct category_descriptors {
const char *opt;
const char *desc;
curlhelp_t category;
unsigned int category;
};
static const struct category_descriptors categories[] = {
{"auth", "Different types of authentication methods", CURLHELP_AUTH},
{"connection", "Low level networking operations",
CURLHELP_CONNECTION},
{"curl", "The command line tool itself", CURLHELP_CURL},
{"dns", "General DNS options", CURLHELP_DNS},
{"file", "FILE protocol options", CURLHELP_FILE},
{"ftp", "FTP protocol options", CURLHELP_FTP},
{"http", "HTTP and HTTPS protocol options", CURLHELP_HTTP},
{"imap", "IMAP protocol options", CURLHELP_IMAP},
/* important is left out because it is the default help page */
{"misc", "Options that do not fit into any other category", CURLHELP_MISC},
{"auth", "Authentication methods", CURLHELP_AUTH},
{"connection", "Manage connections", CURLHELP_CONNECTION},
{"curl", "The command line tool itself", CURLHELP_CURL},
{"deprecated", "Legacy", CURLHELP_DEPRECATED},
{"dns", "Names and resolving", CURLHELP_DNS},
{"file", "FILE protocol", CURLHELP_FILE},
{"ftp", "FTP protocol", CURLHELP_FTP},
{"global", "Global options", CURLHELP_GLOBAL},
{"http", "HTTP and HTTPS protocol", CURLHELP_HTTP},
{"imap", "IMAP protocol", CURLHELP_IMAP},
{"ldap", "LDAP protocol", CURLHELP_LDAP},
{"output", "Filesystem output", CURLHELP_OUTPUT},
{"pop3", "POP3 protocol options", CURLHELP_POP3},
{"post", "HTTP Post specific options", CURLHELP_POST},
{"proxy", "All options related to proxies", CURLHELP_PROXY},
{"scp", "SCP protocol options", CURLHELP_SCP},
{"sftp", "SFTP protocol options", CURLHELP_SFTP},
{"smtp", "SMTP protocol options", CURLHELP_SMTP},
{"ssh", "SSH protocol options", CURLHELP_SSH},
{"telnet", "TELNET protocol options", CURLHELP_TELNET},
{"tftp", "TFTP protocol options", CURLHELP_TFTP},
{"tls", "All TLS/SSL related options", CURLHELP_TLS},
{"ech", "All Encrypted Client Hello (ECH) options", CURLHELP_ECH},
{"upload", "All options for uploads",
CURLHELP_UPLOAD},
{"verbose", "Options related to any kind of command line output of curl",
CURLHELP_VERBOSE},
{NULL, NULL, CURLHELP_HIDDEN}
{"pop3", "POP3 protocol", CURLHELP_POP3},
{"post", "HTTP POST specific", CURLHELP_POST},
{"proxy", "Options for proxies", CURLHELP_PROXY},
{"scp", "SCP protocol", CURLHELP_SCP},
{"sftp", "SFTP protocol", CURLHELP_SFTP},
{"smtp", "SMTP protocol", CURLHELP_SMTP},
{"ssh", "SSH protocol", CURLHELP_SSH},
{"telnet", "TELNET protocol", CURLHELP_TELNET},
{"tftp", "TFTP protocol", CURLHELP_TFTP},
{"timeout", "Timeouts and delays", CURLHELP_TIMEOUT},
{"tls", "TLS/SSL related", CURLHELP_TLS},
{"upload", "Upload, sending data", CURLHELP_UPLOAD},
{"verbose", "Tracing, logging etc", CURLHELP_VERBOSE}
};
static void print_category(curlhelp_t category, unsigned int cols)
static void print_category(unsigned int category, unsigned int cols)
{
unsigned int i;
size_t longopt = 5;
@ -114,7 +112,7 @@ static void print_category(curlhelp_t category, unsigned int cols)
static int get_category_content(const char *category, unsigned int cols)
{
unsigned int i;
for(i = 0; categories[i].opt; ++i)
for(i = 0; i < sizeof(categories)/sizeof(categories[0]); ++i)
if(curl_strequal(categories[i].opt, category)) {
printf("%s: %s\n", categories[i].opt, categories[i].desc);
print_category(categories[i].category, cols);
@ -127,7 +125,7 @@ static int get_category_content(const char *category, unsigned int cols)
static void get_categories(void)
{
unsigned int i;
for(i = 0; categories[i].opt; ++i)
for(i = 0; i < sizeof(categories)/sizeof(categories[0]); ++i)
printf(" %-11s %s\n", categories[i].opt, categories[i].desc);
}
@ -147,14 +145,14 @@ void tool_help(char *category)
}
/* Lets print everything if "all" was provided */
else if(curl_strequal(category, "all"))
/* Print everything except hidden */
print_category(~(CURLHELP_HIDDEN), cols);
/* Print everything */
print_category(CURLHELP_ALL, cols);
/* Lets handle the string "category" differently to not print an errormsg */
else if(curl_strequal(category, "category"))
get_categories();
/* Otherwise print category and handle the case if the cat was not found */
else if(get_category_content(category, cols)) {
puts("Invalid category provided, here is a list of all categories:\n");
puts("Unknown category provided, here is a list of all categories:\n");
get_categories();
}
free(category);

View file

@ -29,12 +29,10 @@ 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;
unsigned int categories;
};
/*
@ -43,32 +41,34 @@ struct helptxt {
make -C docs/cmdline-opts listcats
*/
#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_IPFS 1u << 10u
#define CURLHELP_MISC 1u << 11u
#define CURLHELP_OUTPUT 1u << 12u
#define CURLHELP_POP3 1u << 13u
#define CURLHELP_POST 1u << 14u
#define CURLHELP_PROXY 1u << 15u
#define CURLHELP_SCP 1u << 16u
#define CURLHELP_SFTP 1u << 17u
#define CURLHELP_SMTP 1u << 18u
#define CURLHELP_SSH 1u << 19u
#define CURLHELP_TELNET 1u << 20u
#define CURLHELP_TFTP 1u << 21u
#define CURLHELP_TLS 1u << 22u
#define CURLHELP_UPLOAD 1u << 23u
#define CURLHELP_VERBOSE 1u << 24u
#define CURLHELP_ECH 1u << 25u
#define CURLHELP_AUTH (1u << 0u)
#define CURLHELP_CONNECTION (1u << 1u)
#define CURLHELP_CURL (1u << 2u)
#define CURLHELP_DEPRECATED (1u << 3u)
#define CURLHELP_DNS (1u << 4u)
#define CURLHELP_FILE (1u << 5u)
#define CURLHELP_FTP (1u << 6u)
#define CURLHELP_GLOBAL (1u << 7u)
#define CURLHELP_HTTP (1u << 8u)
#define CURLHELP_IMAP (1u << 9u)
#define CURLHELP_IMPORTANT (1u << 10u)
#define CURLHELP_LDAP (1u << 11u)
#define CURLHELP_OUTPUT (1u << 12u)
#define CURLHELP_POP3 (1u << 13u)
#define CURLHELP_POST (1u << 14u)
#define CURLHELP_PROXY (1u << 15u)
#define CURLHELP_SCP (1u << 16u)
#define CURLHELP_SFTP (1u << 17u)
#define CURLHELP_SMTP (1u << 18u)
#define CURLHELP_SSH (1u << 19u)
#define CURLHELP_TELNET (1u << 20u)
#define CURLHELP_TFTP (1u << 21u)
#define CURLHELP_TIMEOUT (1u << 22u)
#define CURLHELP_TLS (1u << 23u)
#define CURLHELP_UPLOAD (1u << 24u)
#define CURLHELP_VERBOSE (1u << 25u)
#define CURLHELP_ALL (0xfffffffu)
extern const struct helptxt helptext[];

View file

@ -83,10 +83,10 @@ const struct helptxt helptext[] = {
CURLHELP_CURL},
{" --connect-timeout <seconds>",
"Maximum time allowed to connect",
CURLHELP_CONNECTION},
CURLHELP_CONNECTION | CURLHELP_TIMEOUT},
{" --connect-to <HOST1:PORT1:HOST2:PORT2>",
"Connect to host",
CURLHELP_CONNECTION},
"Connect to host2 instead of host1",
CURLHELP_CONNECTION | CURLHELP_DNS},
{"-C, --continue-at <offset>",
"Resumed transfer offset",
CURLHELP_CONNECTION},
@ -98,7 +98,7 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP},
{" --create-dirs",
"Create necessary local directory hierarchy",
CURLHELP_CURL | CURLHELP_OUTPUT},
CURLHELP_OUTPUT},
{" --create-file-mode <mode>",
"File mode for created files",
CURLHELP_SFTP | CURLHELP_SCP | CURLHELP_FILE | CURLHELP_UPLOAD},
@ -170,10 +170,10 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP | CURLHELP_FTP},
{" --ech <config>",
"Configure ECH",
CURLHELP_TLS | CURLHELP_ECH},
CURLHELP_TLS},
{" --egd-file <file>",
"EGD socket path for random data",
CURLHELP_TLS},
CURLHELP_DEPRECATED},
{" --engine <name>",
"Crypto engine to use",
CURLHELP_TLS},
@ -185,13 +185,13 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP},
{" --expect100-timeout <seconds>",
"How long to wait for 100-continue",
CURLHELP_HTTP},
CURLHELP_HTTP | CURLHELP_TIMEOUT},
{"-f, --fail",
"Fail fast with no output on HTTP errors",
CURLHELP_IMPORTANT | CURLHELP_HTTP},
{" --fail-early",
"Fail on first transfer error",
CURLHELP_CURL},
CURLHELP_CURL | CURLHELP_GLOBAL},
{" --fail-with-body",
"Fail on HTTP errors but save the body",
CURLHELP_HTTP | CURLHELP_OUTPUT},
@ -200,13 +200,15 @@ const struct helptxt helptext[] = {
CURLHELP_TLS},
{"-F, --form <name=content>",
"Specify multipart MIME data",
CURLHELP_HTTP | CURLHELP_UPLOAD},
CURLHELP_HTTP | CURLHELP_UPLOAD | CURLHELP_POST | CURLHELP_IMAP |
CURLHELP_SMTP},
{" --form-escape",
"Escape form fields using backslash",
CURLHELP_HTTP | CURLHELP_UPLOAD},
CURLHELP_HTTP | CURLHELP_UPLOAD | CURLHELP_POST},
{" --form-string <name=string>",
"Specify multipart MIME data",
CURLHELP_HTTP | CURLHELP_UPLOAD},
CURLHELP_HTTP | CURLHELP_UPLOAD | CURLHELP_POST | CURLHELP_SMTP |
CURLHELP_IMAP},
{" --ftp-account <data>",
"Account data string",
CURLHELP_FTP | CURLHELP_AUTH},
@ -215,7 +217,7 @@ const struct helptxt helptext[] = {
CURLHELP_FTP},
{" --ftp-create-dirs",
"Create the remote dirs if not present",
CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_CURL},
CURLHELP_FTP | CURLHELP_SFTP},
{" --ftp-method <method>",
"Control CWD usage",
CURLHELP_FTP},
@ -242,13 +244,13 @@ const struct helptxt helptext[] = {
CURLHELP_FTP | CURLHELP_TLS},
{"-G, --get",
"Put the post data in the URL and use GET",
CURLHELP_HTTP | CURLHELP_UPLOAD},
CURLHELP_HTTP},
{"-g, --globoff",
"Disable URL globbing with {} and []",
CURLHELP_CURL},
{" --happy-eyeballs-timeout-ms <ms>",
"Time for IPv6 before IPv4",
CURLHELP_CONNECTION},
CURLHELP_CONNECTION | CURLHELP_TIMEOUT},
{" --haproxy-clientip <ip>",
"Set address in HAProxy PROXY",
CURLHELP_HTTP | CURLHELP_PROXY},
@ -311,7 +313,7 @@ const struct helptxt helptext[] = {
CURLHELP_CONNECTION},
{" --ipfs-gateway <URL>",
"Gateway for IPFS",
CURLHELP_IPFS},
CURLHELP_CURL},
{"-4, --ipv4",
"Resolve names to IPv4 addresses",
CURLHELP_CONNECTION | CURLHELP_DNS},
@ -329,7 +331,7 @@ const struct helptxt helptext[] = {
CURLHELP_CONNECTION},
{" --keepalive-time <seconds>",
"Interval time for keepalive probes",
CURLHELP_CONNECTION},
CURLHELP_CONNECTION | CURLHELP_TIMEOUT},
{" --key <key>",
"Private key filename",
CURLHELP_TLS | CURLHELP_SSH},
@ -341,7 +343,7 @@ const struct helptxt helptext[] = {
CURLHELP_FTP},
{" --libcurl <file>",
"Generate libcurl code for this command line",
CURLHELP_CURL},
CURLHELP_CURL | CURLHELP_GLOBAL},
{" --limit-rate <speed>",
"Limit transfer speed to RATE",
CURLHELP_CONNECTION},
@ -359,7 +361,8 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP | CURLHELP_AUTH},
{" --login-options <options>",
"Server login options",
CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP | CURLHELP_AUTH},
CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP | CURLHELP_AUTH |
CURLHELP_LDAP},
{" --mail-auth <address>",
"Originator address of the original email",
CURLHELP_SMTP},
@ -383,10 +386,10 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP},
{"-m, --max-time <seconds>",
"Maximum time allowed for transfer",
CURLHELP_CONNECTION},
CURLHELP_CONNECTION | CURLHELP_TIMEOUT},
{" --metalink",
"Process given URLs as metalink XML file",
CURLHELP_MISC},
CURLHELP_DEPRECATED},
{" --mptcp",
"Enable Multipath TCP",
CURLHELP_CONNECTION},
@ -395,13 +398,13 @@ const struct helptxt helptext[] = {
CURLHELP_AUTH | CURLHELP_HTTP},
{"-n, --netrc",
"Must read .netrc for username and password",
CURLHELP_CURL},
CURLHELP_AUTH},
{" --netrc-file <filename>",
"Specify FILE for netrc",
CURLHELP_CURL},
CURLHELP_AUTH},
{" --netrc-optional",
"Use either .netrc or URL",
CURLHELP_CURL},
CURLHELP_AUTH},
{"-:, --next",
"Make next URL use separate options",
CURLHELP_CURL},
@ -410,10 +413,10 @@ const struct helptxt helptext[] = {
CURLHELP_TLS | CURLHELP_HTTP},
{"-N, --no-buffer",
"Disable buffering of the output stream",
CURLHELP_CURL},
CURLHELP_OUTPUT},
{" --no-clobber",
"Do not overwrite files that already exist",
CURLHELP_CURL | CURLHELP_OUTPUT},
CURLHELP_OUTPUT},
{" --no-keepalive",
"Disable TCP keepalive on the connection",
CURLHELP_CONNECTION},
@ -434,25 +437,26 @@ const struct helptxt helptext[] = {
CURLHELP_AUTH | CURLHELP_HTTP},
{" --ntlm-wb",
"HTTP NTLM authentication with winbind",
CURLHELP_AUTH | CURLHELP_HTTP},
CURLHELP_DEPRECATED},
{" --oauth2-bearer <token>",
"OAuth 2 Bearer Token",
CURLHELP_AUTH},
CURLHELP_AUTH | CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP |
CURLHELP_LDAP},
{"-o, --output <file>",
"Write to file instead of stdout",
CURLHELP_IMPORTANT | CURLHELP_CURL | CURLHELP_OUTPUT},
CURLHELP_IMPORTANT | CURLHELP_OUTPUT},
{" --output-dir <dir>",
"Directory to save files in",
CURLHELP_CURL | CURLHELP_OUTPUT},
CURLHELP_OUTPUT},
{"-Z, --parallel",
"Perform transfers in parallel",
CURLHELP_CONNECTION | CURLHELP_CURL},
CURLHELP_CONNECTION | CURLHELP_CURL | CURLHELP_GLOBAL},
{" --parallel-immediate",
"Do not wait for multiplexing",
CURLHELP_CONNECTION | CURLHELP_CURL},
CURLHELP_CONNECTION | CURLHELP_CURL | CURLHELP_GLOBAL},
{" --parallel-max <num>",
"Maximum concurrency for parallel transfers",
CURLHELP_CONNECTION | CURLHELP_CURL},
CURLHELP_CONNECTION | CURLHELP_CURL | CURLHELP_GLOBAL},
{" --pass <phrase>",
"Passphrase for the private key",
CURLHELP_SSH | CURLHELP_TLS | CURLHELP_AUTH},
@ -476,7 +480,7 @@ const struct helptxt helptext[] = {
CURLHELP_PROXY},
{"-#, --progress-bar",
"Display transfer progress as a bar",
CURLHELP_VERBOSE},
CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{" --proto <protocols>",
"Enable/disable PROTOCOLS",
CURLHELP_CONNECTION | CURLHELP_CURL},
@ -587,13 +591,13 @@ const struct helptxt helptext[] = {
CURLHELP_FTP | CURLHELP_SFTP},
{" --random-file <file>",
"File for reading random data from",
CURLHELP_MISC},
CURLHELP_DEPRECATED},
{"-r, --range <range>",
"Retrieve only the bytes within RANGE",
CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_FILE},
{" --rate <max request rate>",
"Request rate for serial transfers",
CURLHELP_CONNECTION},
CURLHELP_CONNECTION | CURLHELP_GLOBAL},
{" --raw",
"Do HTTP raw; no transfer decoding",
CURLHELP_HTTP},
@ -614,10 +618,11 @@ const struct helptxt helptext[] = {
CURLHELP_OUTPUT},
{" --remove-on-error",
"Remove output file on errors",
CURLHELP_CURL | CURLHELP_OUTPUT},
CURLHELP_OUTPUT},
{"-X, --request <method>",
"Specify request method to use",
CURLHELP_CONNECTION},
CURLHELP_CONNECTION | CURLHELP_POP3 | CURLHELP_FTP | CURLHELP_IMAP |
CURLHELP_SMTP},
{" --request-target <path>",
"Specify the target for this request",
CURLHELP_HTTP},
@ -635,10 +640,10 @@ const struct helptxt helptext[] = {
CURLHELP_CURL},
{" --retry-delay <seconds>",
"Wait time between retries",
CURLHELP_CURL},
CURLHELP_CURL | CURLHELP_TIMEOUT},
{" --retry-max-time <seconds>",
"Retry only within this period",
CURLHELP_CURL},
CURLHELP_CURL | CURLHELP_TIMEOUT},
{" --sasl-authzid <identity>",
"Identity for SASL PLAIN authentication",
CURLHELP_AUTH},
@ -647,10 +652,10 @@ const struct helptxt helptext[] = {
CURLHELP_AUTH},
{" --service-name <name>",
"SPNEGO service name",
CURLHELP_MISC},
CURLHELP_AUTH},
{"-S, --show-error",
"Show error even when -s is used",
CURLHELP_CURL},
CURLHELP_CURL | CURLHELP_GLOBAL},
{"-s, --silent",
"Silent mode",
CURLHELP_IMPORTANT | CURLHELP_VERBOSE},
@ -683,10 +688,11 @@ const struct helptxt helptext[] = {
CURLHELP_CONNECTION},
{"-y, --speed-time <seconds>",
"Trigger 'speed-limit' abort after this time",
CURLHELP_CONNECTION},
CURLHELP_CONNECTION | CURLHELP_TIMEOUT},
{" --ssl",
"Try enabling TLS",
CURLHELP_TLS},
CURLHELP_TLS | CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP |
CURLHELP_LDAP},
{" --ssl-allow-beast",
"Allow security flaw to improve interop",
CURLHELP_TLS},
@ -698,7 +704,8 @@ const struct helptxt helptext[] = {
CURLHELP_TLS},
{" --ssl-reqd",
"Require SSL/TLS",
CURLHELP_TLS},
CURLHELP_TLS | CURLHELP_IMAP | CURLHELP_POP3 | CURLHELP_SMTP |
CURLHELP_LDAP},
{" --ssl-revoke-best-effort",
"Ignore missing cert CRL dist points",
CURLHELP_TLS},
@ -710,10 +717,10 @@ const struct helptxt helptext[] = {
CURLHELP_TLS},
{" --stderr <file>",
"Where to redirect stderr",
CURLHELP_VERBOSE},
CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{" --styled-output",
"Enable styled output for HTTP headers",
CURLHELP_VERBOSE},
CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{" --suppress-connect-headers",
"Suppress proxy CONNECT response headers",
CURLHELP_PROXY},
@ -770,19 +777,19 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP},
{" --trace <file>",
"Write a debug trace to FILE",
CURLHELP_VERBOSE},
CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{" --trace-ascii <file>",
"Like --trace, but without hex output",
CURLHELP_VERBOSE},
CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{" --trace-config <string>",
"Details to log in trace/verbose output",
CURLHELP_VERBOSE},
CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{" --trace-ids",
"Transfer + connection ids in verbose output",
CURLHELP_VERBOSE},
CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{" --trace-time",
"Add time stamps to trace/verbose output",
CURLHELP_VERBOSE},
CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{" --unix-socket <path>",
"Connect through this Unix domain socket",
CURLHELP_CONNECTION},
@ -797,7 +804,7 @@ const struct helptxt helptext[] = {
CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
{"-B, --use-ascii",
"Use ASCII/text transfer",
CURLHELP_MISC},
CURLHELP_FTP | CURLHELP_OUTPUT | CURLHELP_LDAP},
{"-u, --user <user:password>",
"Server user and password",
CURLHELP_IMPORTANT | CURLHELP_AUTH},
@ -809,7 +816,7 @@ const struct helptxt helptext[] = {
CURLHELP_CURL},
{"-v, --verbose",
"Make the operation more talkative",
CURLHELP_IMPORTANT | CURLHELP_VERBOSE},
CURLHELP_IMPORTANT | CURLHELP_VERBOSE | CURLHELP_GLOBAL},
{"-V, --version",
"Show version number and quit",
CURLHELP_IMPORTANT | CURLHELP_CURL},
@ -821,6 +828,6 @@ const struct helptxt helptext[] = {
CURLHELP_VERBOSE},
{" --xattr",
"Store metadata in extended file attributes",
CURLHELP_MISC},
{ NULL, NULL, CURLHELP_HIDDEN }
CURLHELP_OUTPUT},
{ NULL, NULL, 0 }
};