1
0
mirror of https://github.com/irssi/irssi.git synced 2024-12-04 14:46:39 -05:00

Merge pull request #1171 from ailin-nemui/hidden-options

hide the deprecated -ssl options from completion
This commit is contained in:
ailin-nemui 2020-04-07 19:12:04 +00:00 committed by GitHub
commit 261631a6e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 51 additions and 16 deletions

View File

@ -517,7 +517,12 @@ void chat_commands_init(void)
signal_add("server sendmsg", (SIGNAL_FUNC) sig_server_sendmsg); signal_add("server sendmsg", (SIGNAL_FUNC) sig_server_sendmsg);
command_set_options("connect", "4 6 !! -network ssl +ssl_cert +ssl_pkey +ssl_pass ssl_verify +ssl_cafile +ssl_capath +ssl_ciphers +ssl_pinned_cert +ssl_pinned_pubkey tls +tls_cert +tls_pkey +tls_pass tls_verify +tls_cafile +tls_capath +tls_ciphers +tls_pinned_cert +tls_pinned_pubkey +host noproxy -rawlog noautosendcmd"); command_set_options(
"connect",
"4 6 !! -network ~ssl ~+ssl_cert ~+ssl_pkey ~+ssl_pass ~ssl_verify ~+ssl_cafile "
"~+ssl_capath ~+ssl_ciphers ~+ssl_pinned_cert ~+ssl_pinned_pubkey tls +tls_cert "
"+tls_pkey +tls_pass tls_verify +tls_cafile +tls_capath +tls_ciphers +tls_pinned_cert "
"+tls_pinned_pubkey +host noproxy -rawlog noautosendcmd");
command_set_options("msg", "channel nick"); command_set_options("msg", "channel nick");
} }

View File

@ -339,11 +339,28 @@ void command_runsub(const char *cmd, const char *data,
g_free(orig); g_free(orig);
} }
static char *optname(char *option)
{
char *opt = option;
if (*opt == '~')
opt++;
if (iscmdtype(*opt))
opt++;
return opt;
}
static gboolean optflag(char *option, char *flag)
{
if (*option == '~')
return optflag(option + 1, flag);
return (strchr(flag, *option) != NULL) || (!iscmdtype(*option) && strchr(flag, ' '));
}
static GSList *optlist_find(GSList *optlist, const char *option) static GSList *optlist_find(GSList *optlist, const char *option)
{ {
while (optlist != NULL) { while (optlist != NULL) {
char *name = optlist->data; char *name = optname(optlist->data);
if (iscmdtype(*name)) name++;
if (g_ascii_strcasecmp(name, option) == 0) if (g_ascii_strcasecmp(name, option) == 0)
return optlist; return optlist;
@ -369,7 +386,7 @@ int command_have_option(const char *cmd, const char *option)
return FALSE; return FALSE;
for (tmp = rec->options; *tmp != NULL; tmp++) { for (tmp = rec->options; *tmp != NULL; tmp++) {
char *name = iscmdtype(**tmp) ? (*tmp)+1 : *tmp; char *name = optname(*tmp);
if (g_ascii_strcasecmp(name, option) == 0) if (g_ascii_strcasecmp(name, option) == 0)
return TRUE; return TRUE;
@ -399,7 +416,7 @@ static void command_calc_options(COMMAND_REC *rec, const char *options)
/* merge the options */ /* merge the options */
for (tmp = optlist; *tmp != NULL; tmp++) { for (tmp = optlist; *tmp != NULL; tmp++) {
name = iscmdtype(**tmp) ? (*tmp)+1 : *tmp; name = optname(*tmp);
oldopt = optlist_find(list, name); oldopt = optlist_find(list, name);
if (oldopt != NULL) { if (oldopt != NULL) {
@ -529,7 +546,7 @@ static int option_find(char **array, const char *option)
found = -1; index = 0; multiple = FALSE; found = -1; index = 0; multiple = FALSE;
for (tmp = array; *tmp != NULL; tmp++, index++) { for (tmp = array; *tmp != NULL; tmp++, index++) {
const char *text = *tmp + iscmdtype(**tmp); const char *text = optname(*tmp);
if (g_ascii_strncasecmp(text, option, len) == 0) { if (g_ascii_strncasecmp(text, option, len) == 0) {
if (text[len] == '\0') { if (text[len] == '\0') {
@ -568,9 +585,9 @@ static int get_cmd_options(char **data, int ignore_unknown,
option = NULL; pos = -1; option = NULL; pos = -1;
for (;;) { for (;;) {
if (**data == '\0' || **data == '-') { if (**data == '\0' || **data == '-') {
if (option != NULL && *optlist[pos] == '+') { if (option != NULL && optflag(optlist[pos], "+")) {
/* required argument missing! */ /* required argument missing! */
*data = optlist[pos] + 1; *data = optname(optlist[pos]);
return CMDERR_OPTION_ARG_MISSING; return CMDERR_OPTION_ARG_MISSING;
} }
} }
@ -621,14 +638,12 @@ static int get_cmd_options(char **data, int ignore_unknown,
if (pos >= 0) { if (pos >= 0) {
/* if we used a shortcut of parameter, put /* if we used a shortcut of parameter, put
the whole parameter name in options table */ the whole parameter name in options table */
option = optlist[pos] + option = optname(optlist[pos]);
iscmdtype(*optlist[pos]);
} }
if (options != NULL && pos != -3) if (options != NULL && pos != -3)
g_hash_table_insert(options, option, ""); g_hash_table_insert(options, option, "");
if (pos < 0 || !iscmdtype(*optlist[pos]) || if (pos < 0 || optflag(optlist[pos], " !"))
*optlist[pos] == '!')
option = NULL; option = NULL;
while (**data == ' ') (*data)++; while (**data == ' ') (*data)++;
@ -638,7 +653,7 @@ static int get_cmd_options(char **data, int ignore_unknown,
if (option == NULL) if (option == NULL)
break; break;
if (*optlist[pos] == '@' && !is_numeric(*data, ' ')) if (optflag(optlist[pos], "@") && !is_numeric(*data, ' '))
break; /* expected a numeric argument */ break; /* expected a numeric argument */
/* save the argument */ /* save the argument */

View File

@ -544,7 +544,11 @@ static GList *completion_get_options(const char *cmd, const char *option)
list = NULL; list = NULL;
len = strlen(option); len = strlen(option);
for (tmp = rec->options; *tmp != NULL; tmp++) { for (tmp = rec->options; *tmp != NULL; tmp++) {
const char *optname = *tmp + iscmdtype(**tmp); const char *optname;
if (**tmp == '~')
continue; /* deprecated or hidden option */
optname = *tmp + iscmdtype(**tmp);
if (len == 0 || g_ascii_strncasecmp(optname, option, len) == 0) if (len == 0 || g_ascii_strncasecmp(optname, option, len) == 0)
list = g_list_append(list, g_strconcat("-", optname, NULL)); list = g_list_append(list, g_strconcat("-", optname, NULL));

View File

@ -453,8 +453,19 @@ void fe_server_init(void)
command_bind_first("server", NULL, (SIGNAL_FUNC) server_command); command_bind_first("server", NULL, (SIGNAL_FUNC) server_command);
command_bind_first("disconnect", NULL, (SIGNAL_FUNC) server_command); command_bind_first("disconnect", NULL, (SIGNAL_FUNC) server_command);
command_set_options("server add", "4 6 !! ssl nossl +ssl_cert +ssl_pkey +ssl_pass ssl_verify nossl_verify +ssl_cafile +ssl_capath +ssl_ciphers +ssl_fingerprint tls notls +tls_cert +tls_pkey +tls_pass tls_verify notls_verify +tls_cafile +tls_capath +tls_ciphers +tls_pinned_cert +tls_pinned_pubkey auto noauto proxy noproxy -host -port noautosendcmd"); command_set_options(
command_set_options("server modify", "4 6 !! ssl nossl +ssl_cert +ssl_pkey +ssl_pass ssl_verify nossl_verify +ssl_cafile +ssl_capath +ssl_ciphers +ssl_fingerprint tls notls +tls_cert +tls_pkey +tls_pass tls_verify notls_verify +tls_cafile +tls_capath +tls_ciphers +tls_pinned_cert +tls_pinned_pubkey auto noauto proxy noproxy -host -port noautosendcmd"); "server add", "4 6 !! ~ssl ~nossl ~+ssl_cert ~+ssl_pkey ~+ssl_pass ~ssl_verify "
"~nossl_verify ~+ssl_cafile ~+ssl_capath ~+ssl_ciphers ~+ssl_fingerprint "
"tls notls +tls_cert +tls_pkey +tls_pass tls_verify notls_verify "
"+tls_cafile +tls_capath +tls_ciphers +tls_pinned_cert "
"+tls_pinned_pubkey auto noauto proxy noproxy -host -port noautosendcmd");
command_set_options(
"server modify",
"4 6 !! ~ssl ~nossl ~+ssl_cert ~+ssl_pkey ~+ssl_pass ~ssl_verify ~nossl_verify "
"~+ssl_cafile ~+ssl_capath ~+ssl_ciphers ~+ssl_fingerprint tls notls +tls_cert "
"+tls_pkey +tls_pass tls_verify notls_verify +tls_cafile +tls_capath +tls_ciphers "
"+tls_pinned_cert +tls_pinned_pubkey auto noauto proxy noproxy -host -port "
"noautosendcmd");
signal_add("server looking", (SIGNAL_FUNC) sig_server_looking); signal_add("server looking", (SIGNAL_FUNC) sig_server_looking);
signal_add("server connecting", (SIGNAL_FUNC) sig_server_connecting); signal_add("server connecting", (SIGNAL_FUNC) sig_server_connecting);