mirror of
https://github.com/curl/curl.git
synced 2026-08-24 21:13:40 +03:00
tool: use feature names instead of bit mask, when possible
If the run-time libcurl is too old to support feature names, the name array is created locally from the bit masks. This is the only sequence left that uses feature bit masks. Closes #9583
This commit is contained in:
parent
e1e482517f
commit
184fc6f07a
6 changed files with 160 additions and 129 deletions
|
|
@ -920,9 +920,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
break;
|
||||
|
||||
case 'j': /* --compressed */
|
||||
if(toggle &&
|
||||
!(curlinfo->features & (CURL_VERSION_LIBZ |
|
||||
CURL_VERSION_BROTLI | CURL_VERSION_ZSTD)))
|
||||
if(toggle && !(feature_libz || feature_brotli || feature_zstd))
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
config->encoding = toggle;
|
||||
break;
|
||||
|
|
@ -939,36 +937,30 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
break;
|
||||
|
||||
case 'l': /* --negotiate */
|
||||
if(toggle) {
|
||||
if(curlinfo->features & CURL_VERSION_SPNEGO)
|
||||
config->authtype |= CURLAUTH_NEGOTIATE;
|
||||
else
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
}
|
||||
else
|
||||
if(!toggle)
|
||||
config->authtype &= ~CURLAUTH_NEGOTIATE;
|
||||
else if(feature_spnego)
|
||||
config->authtype |= CURLAUTH_NEGOTIATE;
|
||||
else
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
break;
|
||||
|
||||
case 'm': /* --ntlm */
|
||||
if(toggle) {
|
||||
if(curlinfo->features & CURL_VERSION_NTLM)
|
||||
config->authtype |= CURLAUTH_NTLM;
|
||||
else
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
}
|
||||
else
|
||||
if(!toggle)
|
||||
config->authtype &= ~CURLAUTH_NTLM;
|
||||
else if(feature_ntlm)
|
||||
config->authtype |= CURLAUTH_NTLM;
|
||||
else
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
break;
|
||||
|
||||
case 'M': /* --ntlm-wb */
|
||||
if(toggle) {
|
||||
if(curlinfo->features & CURL_VERSION_NTLM_WB)
|
||||
config->authtype |= CURLAUTH_NTLM_WB;
|
||||
else
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
}
|
||||
else
|
||||
if(!toggle)
|
||||
config->authtype &= ~CURLAUTH_NTLM_WB;
|
||||
else if(feature_ntlm_wb)
|
||||
config->authtype |= CURLAUTH_NTLM_WB;
|
||||
else
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
break;
|
||||
|
||||
case 'n': /* --basic for completeness */
|
||||
|
|
@ -1014,10 +1006,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
break;
|
||||
|
||||
case 't': /* --proxy-ntlm */
|
||||
if(curlinfo->features & CURL_VERSION_NTLM)
|
||||
config->proxyntlm = toggle;
|
||||
else
|
||||
if(!feature_ntlm)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
config->proxyntlm = toggle;
|
||||
break;
|
||||
|
||||
case 'u': /* --crlf */
|
||||
|
|
@ -1051,10 +1042,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
break;
|
||||
case 'x': /* --krb */
|
||||
/* kerberos level string */
|
||||
if(curlinfo->features & CURL_VERSION_SPNEGO)
|
||||
GetStr(&config->krblevel, nextarg);
|
||||
else
|
||||
if(!feature_spnego)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
GetStr(&config->krblevel, nextarg);
|
||||
break;
|
||||
case 'X': /* --haproxy-protocol */
|
||||
config->haproxy_protocol = toggle;
|
||||
|
|
@ -1114,7 +1104,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
case '$': /* more options without a short option */
|
||||
switch(subletter) {
|
||||
case 'a': /* --ssl */
|
||||
if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
|
||||
if(toggle && !feature_ssl)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
config->ftp_ssl = toggle;
|
||||
if(config->ftp_ssl)
|
||||
|
|
@ -1174,10 +1164,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
break;
|
||||
|
||||
case 'k': /* --proxy-negotiate */
|
||||
if(curlinfo->features & CURL_VERSION_SPNEGO)
|
||||
config->proxynegotiate = toggle;
|
||||
else
|
||||
if(!feature_spnego)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
config->proxynegotiate = toggle;
|
||||
break;
|
||||
|
||||
case 'l': /* --form-escape */
|
||||
|
|
@ -1238,7 +1227,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
GetStr(&config->ftp_alternative_to_user, nextarg);
|
||||
break;
|
||||
case 'v': /* --ssl-reqd */
|
||||
if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
|
||||
if(toggle && !feature_ssl)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
config->ftp_ssl_reqd = toggle;
|
||||
break;
|
||||
|
|
@ -1246,7 +1235,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
config->disable_sessionid = (!toggle)?TRUE:FALSE;
|
||||
break;
|
||||
case 'x': /* --ftp-ssl-control */
|
||||
if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
|
||||
if(toggle && !feature_ssl)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
config->ftp_ssl_control = toggle;
|
||||
break;
|
||||
|
|
@ -1443,10 +1432,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
break;
|
||||
case '4': /* --http3 */
|
||||
/* HTTP version 3 go over QUIC - at once */
|
||||
if(curlinfo->features & CURL_VERSION_HTTP3)
|
||||
config->httpversion = CURL_HTTP_VERSION_3;
|
||||
else
|
||||
if(!feature_http3)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
config->httpversion = CURL_HTTP_VERSION_3;
|
||||
break;
|
||||
case '9':
|
||||
/* Allow HTTP/0.9 responses! */
|
||||
|
|
@ -1511,16 +1499,14 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
case 'b':
|
||||
switch(subletter) {
|
||||
case 'a': /* --alt-svc */
|
||||
if(curlinfo->features & CURL_VERSION_ALTSVC)
|
||||
GetStr(&config->altsvc, nextarg);
|
||||
else
|
||||
if(!feature_altsvc)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
GetStr(&config->altsvc, nextarg);
|
||||
break;
|
||||
case 'b': /* --hsts */
|
||||
if(curlinfo->features & CURL_VERSION_HSTS)
|
||||
GetStr(&config->hsts, nextarg);
|
||||
else
|
||||
if(!feature_hsts)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
GetStr(&config->hsts, nextarg);
|
||||
break;
|
||||
default: /* --cookie string coming up: */
|
||||
if(nextarg[0] == '@') {
|
||||
|
|
@ -1762,7 +1748,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
GetStr(&config->crlfile, nextarg);
|
||||
break;
|
||||
case 'k': /* TLS username */
|
||||
if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
|
||||
if(!feature_tls_srp) {
|
||||
cleanarg(clearthis);
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
}
|
||||
|
|
@ -1770,7 +1756,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
cleanarg(clearthis);
|
||||
break;
|
||||
case 'l': /* TLS password */
|
||||
if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
|
||||
if(!feature_tls_srp) {
|
||||
cleanarg(clearthis);
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
}
|
||||
|
|
@ -1778,26 +1764,24 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
cleanarg(clearthis);
|
||||
break;
|
||||
case 'm': /* TLS authentication type */
|
||||
if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
|
||||
GetStr(&config->tls_authtype, nextarg);
|
||||
if(!curl_strequal(config->tls_authtype, "SRP"))
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
|
||||
}
|
||||
else
|
||||
if(!feature_tls_srp)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
GetStr(&config->tls_authtype, nextarg);
|
||||
if(!curl_strequal(config->tls_authtype, "SRP"))
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
|
||||
break;
|
||||
case 'n': /* no empty SSL fragments, --ssl-allow-beast */
|
||||
if(curlinfo->features & CURL_VERSION_SSL)
|
||||
if(feature_ssl)
|
||||
config->ssl_allow_beast = toggle;
|
||||
break;
|
||||
|
||||
case 'o': /* --ssl-auto-client-cert */
|
||||
if(curlinfo->features & CURL_VERSION_SSL)
|
||||
if(feature_ssl)
|
||||
config->ssl_auto_client_cert = toggle;
|
||||
break;
|
||||
|
||||
case 'O': /* --proxy-ssl-auto-client-cert */
|
||||
if(curlinfo->features & CURL_VERSION_SSL)
|
||||
if(feature_ssl)
|
||||
config->proxy_ssl_auto_client_cert = toggle;
|
||||
break;
|
||||
|
||||
|
|
@ -1822,12 +1806,12 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
break;
|
||||
|
||||
case 's': /* --ssl-no-revoke */
|
||||
if(curlinfo->features & CURL_VERSION_SSL)
|
||||
if(feature_ssl)
|
||||
config->ssl_no_revoke = TRUE;
|
||||
break;
|
||||
|
||||
case 'S': /* --ssl-revoke-best-effort */
|
||||
if(curlinfo->features & CURL_VERSION_SSL)
|
||||
if(feature_ssl)
|
||||
config->ssl_revoke_best_effort = TRUE;
|
||||
break;
|
||||
|
||||
|
|
@ -1837,28 +1821,24 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
|
||||
case 'u': /* TLS username for proxy */
|
||||
cleanarg(clearthis);
|
||||
if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
|
||||
if(!feature_tls_srp)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
}
|
||||
GetStr(&config->proxy_tls_username, nextarg);
|
||||
break;
|
||||
|
||||
case 'v': /* TLS password for proxy */
|
||||
cleanarg(clearthis);
|
||||
if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
|
||||
if(!feature_tls_srp)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
}
|
||||
GetStr(&config->proxy_tls_password, nextarg);
|
||||
break;
|
||||
|
||||
case 'w': /* TLS authentication type for proxy */
|
||||
if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
|
||||
GetStr(&config->proxy_tls_authtype, nextarg);
|
||||
if(!curl_strequal(config->proxy_tls_authtype, "SRP"))
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
|
||||
}
|
||||
else
|
||||
if(!feature_tls_srp)
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||
GetStr(&config->proxy_tls_authtype, nextarg);
|
||||
if(!curl_strequal(config->proxy_tls_authtype, "SRP"))
|
||||
return PARAM_LIBCURL_DOESNT_SUPPORT; /* only support TLS-SRP */
|
||||
break;
|
||||
|
||||
case 'x': /* certificate file for proxy */
|
||||
|
|
@ -1893,7 +1873,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
break;
|
||||
|
||||
case '4': /* no empty SSL fragments for proxy */
|
||||
if(curlinfo->features & CURL_VERSION_SSL)
|
||||
if(feature_ssl)
|
||||
config->proxy_ssl_allow_beast = toggle;
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue