From 3a3301e19ba1a81a2653f1f3b062415eef684ca2 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Fri, 1 Apr 2022 15:52:54 +0200 Subject: [PATCH 1/8] Format RPL_HELPSTART/RPL_HELPTXT/RPL_ENDOFHELP They are typical replies when using the HELP command. --- src/fe-common/irc/fe-events-numeric.c | 51 +++++++++++++++++++++++++++ src/fe-common/irc/module-formats.c | 3 ++ src/fe-common/irc/module-formats.h | 7 ++-- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/fe-common/irc/fe-events-numeric.c b/src/fe-common/irc/fe-events-numeric.c index f78289c0..efe0cfa8 100644 --- a/src/fe-common/irc/fe-events-numeric.c +++ b/src/fe-common/irc/fe-events-numeric.c @@ -554,6 +554,54 @@ static void event_489(IRC_SERVER_REC *server, const char *data, const char *nick g_free(params); } +static void event_help(IRC_SERVER_REC *server, int formatnum, const char *data) { + /* Common handling for umerics 704 (RPL_HELPSTART), 705 (RPL_HELPTXT), + * and 706 (RPL_ENDOFHELP); sent as a reply to HELP or HELPOP command. + */ + char *params, *topic, *help_text; + + g_return_if_fail(data != NULL); + + params = event_get_params(data, 3, NULL, &topic, &help_text); + + g_return_if_fail(help_text != NULL); + + if (help_text[0] == '\0') { + /* Empty lines can be used by servers for styling; and we need to replace + * them with something non-empty or they would be dropped when displayed. + */ + help_text = " "; + } + + printformat(server, NULL, MSGLEVEL_CRAP, formatnum, + topic, help_text); + g_free(params); +} + +static void event_helpstart(IRC_SERVER_REC *server, const char *data, + const char *nick) +{ + /* Numeric 704 (RPL_HELPSTART) sent as a reply to HELP or HELPOP command. + */ + event_help(server, IRCTXT_HELP_START, data); +} + +static void event_helptxt(IRC_SERVER_REC *server, const char *data, + const char *nick) +{ + /* Numeric 705 (RPL_HELPTXT), sent as a reply to HELP or HELPOP command. + */ + event_help(server, IRCTXT_HELP_TXT, data); +} + +static void event_endofhelp(IRC_SERVER_REC *server, const char *data, + const char *nick) +{ + /* Numeric 706 (RPL_ENDOFHELP), sent as a reply to HELP or HELPOP command. + */ + event_help(server, IRCTXT_END_OF_HELP, data); +} + static void event_target_too_fast(IRC_SERVER_REC *server, const char *data, const char *nick) { @@ -713,6 +761,9 @@ void fe_events_numeric_init(void) signal_add("event 372", (SIGNAL_FUNC) event_motd); signal_add("event 422", (SIGNAL_FUNC) event_motd); signal_add("event 439", (SIGNAL_FUNC) event_target_too_fast); + signal_add("event 704", (SIGNAL_FUNC) event_helpstart); + signal_add("event 705", (SIGNAL_FUNC) event_helptxt); + signal_add("event 706", (SIGNAL_FUNC) event_endofhelp); signal_add("event 707", (SIGNAL_FUNC) event_target_too_fast); signal_add("default event numeric", (SIGNAL_FUNC) event_numeric); diff --git a/src/fe-common/irc/module-formats.c b/src/fe-common/irc/module-formats.c index 12a94463..baf9e5a4 100644 --- a/src/fe-common/irc/module-formats.c +++ b/src/fe-common/irc/module-formats.c @@ -89,6 +89,9 @@ FORMAT_REC fecommon_irc_formats[] = { { "invitelist_long", "{channel $0}: invite {ban $1} {comment by {nick $2}, $3 secs ago}", 4, { 0, 0, 0, 1 } }, { "no_such_channel", "{channel $0}: No such channel", 1, { 0 } }, { "channel_synced", "Join to {channel $0} was synced in {hilight $1} secs", 2, { 0, 2 } }, + { "irctxt_help_start", "$1", 2, { 0, 0 } }, + { "irctxt_help_txt", "$1", 2, { 0, 0 } }, + { "irctxt_end_of_help", "$1", 2, { 0, 0 } }, /* ---- */ { NULL, "Nick", 0 }, diff --git a/src/fe-common/irc/module-formats.h b/src/fe-common/irc/module-formats.h index 5abd04a4..21bf4594 100644 --- a/src/fe-common/irc/module-formats.h +++ b/src/fe-common/irc/module-formats.h @@ -66,6 +66,9 @@ enum { IRCTXT_INVITELIST_LONG, IRCTXT_NO_SUCH_CHANNEL, IRCTXT_CHANNEL_SYNCED, + IRCTXT_HELP_START, + IRCTXT_HELP_TXT, + IRCTXT_END_OF_HELP, IRCTXT_FILL_4, @@ -89,7 +92,7 @@ enum { IRCTXT_WHOIS_OPER, IRCTXT_WHOIS_MODES, IRCTXT_WHOIS_REALHOST, - IRCTXT_WHOIS_USERMODE, + IRCTXT_WHOIS_USERMODE, IRCTXT_WHOIS_CHANNELS, IRCTXT_WHOIS_AWAY, IRCTXT_WHOIS_SPECIAL, @@ -143,7 +146,7 @@ enum { IRCTXT_SILENCED, IRCTXT_UNSILENCED, IRCTXT_SILENCE_LINE, - IRCTXT_ASK_OPER_PASS, + IRCTXT_ASK_OPER_PASS, IRCTXT_ACCEPT_LIST }; /* clang-format on */ From 1415ef5389bbe14f515dec1939ffd4a487029e19 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Wed, 6 Apr 2022 09:19:03 +0200 Subject: [PATCH 2/8] Add ERR_HELPNOTFOUND --- src/fe-common/irc/fe-events-numeric.c | 9 +++++++++ src/fe-common/irc/module-formats.c | 1 + src/fe-common/irc/module-formats.h | 1 + 3 files changed, 11 insertions(+) diff --git a/src/fe-common/irc/fe-events-numeric.c b/src/fe-common/irc/fe-events-numeric.c index efe0cfa8..63d11970 100644 --- a/src/fe-common/irc/fe-events-numeric.c +++ b/src/fe-common/irc/fe-events-numeric.c @@ -578,6 +578,14 @@ static void event_help(IRC_SERVER_REC *server, int formatnum, const char *data) g_free(params); } +static void event_helpnotfound(IRC_SERVER_REC *server, const char *data, + const char *nick) +{ + /* Numeric 524 (ERR_HELPNOTFOUND) sent as a reply to HELP or HELPOP command. + */ + event_help(server, IRCTXT_HELP_NOT_FOUND, data); +} + static void event_helpstart(IRC_SERVER_REC *server, const char *data, const char *nick) { @@ -761,6 +769,7 @@ void fe_events_numeric_init(void) signal_add("event 372", (SIGNAL_FUNC) event_motd); signal_add("event 422", (SIGNAL_FUNC) event_motd); signal_add("event 439", (SIGNAL_FUNC) event_target_too_fast); + signal_add("event 524", (SIGNAL_FUNC) event_helpnotfound); signal_add("event 704", (SIGNAL_FUNC) event_helpstart); signal_add("event 705", (SIGNAL_FUNC) event_helptxt); signal_add("event 706", (SIGNAL_FUNC) event_endofhelp); diff --git a/src/fe-common/irc/module-formats.c b/src/fe-common/irc/module-formats.c index baf9e5a4..131676c5 100644 --- a/src/fe-common/irc/module-formats.c +++ b/src/fe-common/irc/module-formats.c @@ -89,6 +89,7 @@ FORMAT_REC fecommon_irc_formats[] = { { "invitelist_long", "{channel $0}: invite {ban $1} {comment by {nick $2}, $3 secs ago}", 4, { 0, 0, 0, 1 } }, { "no_such_channel", "{channel $0}: No such channel", 1, { 0 } }, { "channel_synced", "Join to {channel $0} was synced in {hilight $1} secs", 2, { 0, 2 } }, + { "irctxt_help_not_found", "$1", 2, { 0, 0 } }, { "irctxt_help_start", "$1", 2, { 0, 0 } }, { "irctxt_help_txt", "$1", 2, { 0, 0 } }, { "irctxt_end_of_help", "$1", 2, { 0, 0 } }, diff --git a/src/fe-common/irc/module-formats.h b/src/fe-common/irc/module-formats.h index 21bf4594..d2e7c1e2 100644 --- a/src/fe-common/irc/module-formats.h +++ b/src/fe-common/irc/module-formats.h @@ -66,6 +66,7 @@ enum { IRCTXT_INVITELIST_LONG, IRCTXT_NO_SUCH_CHANNEL, IRCTXT_CHANNEL_SYNCED, + IRCTXT_HELP_NOT_FOUND, IRCTXT_HELP_START, IRCTXT_HELP_TXT, IRCTXT_END_OF_HELP, From 41b3895ce3ca798c3a110ab84131ddb2756d42a6 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Wed, 6 Apr 2022 09:19:15 +0200 Subject: [PATCH 3/8] Free signals --- src/fe-common/irc/fe-events-numeric.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/fe-common/irc/fe-events-numeric.c b/src/fe-common/irc/fe-events-numeric.c index 63d11970..b1c226c9 100644 --- a/src/fe-common/irc/fe-events-numeric.c +++ b/src/fe-common/irc/fe-events-numeric.c @@ -868,6 +868,10 @@ void fe_events_numeric_deinit(void) signal_remove("event 372", (SIGNAL_FUNC) event_motd); signal_remove("event 422", (SIGNAL_FUNC) event_motd); signal_remove("event 439", (SIGNAL_FUNC) event_target_too_fast); + signal_remove("event 524", (SIGNAL_FUNC) event_helpnotfound); + signal_remove("event 704", (SIGNAL_FUNC) event_helpstart); + signal_remove("event 705", (SIGNAL_FUNC) event_helptxt); + signal_remove("event 706", (SIGNAL_FUNC) event_endofhelp); signal_remove("event 707", (SIGNAL_FUNC) event_target_too_fast); signal_remove("default event numeric", (SIGNAL_FUNC) event_numeric); From 48571389c7dd652eecd34a38d97bbd89a352ce80 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Wed, 20 Apr 2022 22:42:21 +0200 Subject: [PATCH 4/8] Revert "Add ERR_HELPNOTFOUND" This reverts commit 91439c099e1bbf848dac03f67a3239fcc4c1f771; because it adds handling for numeric 524, which conflicts with ERR_QUARANTINED and ERR_OPERSPVERIFY. --- src/fe-common/irc/fe-events-numeric.c | 10 ---------- src/fe-common/irc/module-formats.c | 1 - src/fe-common/irc/module-formats.h | 1 - 3 files changed, 12 deletions(-) diff --git a/src/fe-common/irc/fe-events-numeric.c b/src/fe-common/irc/fe-events-numeric.c index b1c226c9..90d87b46 100644 --- a/src/fe-common/irc/fe-events-numeric.c +++ b/src/fe-common/irc/fe-events-numeric.c @@ -578,14 +578,6 @@ static void event_help(IRC_SERVER_REC *server, int formatnum, const char *data) g_free(params); } -static void event_helpnotfound(IRC_SERVER_REC *server, const char *data, - const char *nick) -{ - /* Numeric 524 (ERR_HELPNOTFOUND) sent as a reply to HELP or HELPOP command. - */ - event_help(server, IRCTXT_HELP_NOT_FOUND, data); -} - static void event_helpstart(IRC_SERVER_REC *server, const char *data, const char *nick) { @@ -769,7 +761,6 @@ void fe_events_numeric_init(void) signal_add("event 372", (SIGNAL_FUNC) event_motd); signal_add("event 422", (SIGNAL_FUNC) event_motd); signal_add("event 439", (SIGNAL_FUNC) event_target_too_fast); - signal_add("event 524", (SIGNAL_FUNC) event_helpnotfound); signal_add("event 704", (SIGNAL_FUNC) event_helpstart); signal_add("event 705", (SIGNAL_FUNC) event_helptxt); signal_add("event 706", (SIGNAL_FUNC) event_endofhelp); @@ -868,7 +859,6 @@ void fe_events_numeric_deinit(void) signal_remove("event 372", (SIGNAL_FUNC) event_motd); signal_remove("event 422", (SIGNAL_FUNC) event_motd); signal_remove("event 439", (SIGNAL_FUNC) event_target_too_fast); - signal_remove("event 524", (SIGNAL_FUNC) event_helpnotfound); signal_remove("event 704", (SIGNAL_FUNC) event_helpstart); signal_remove("event 705", (SIGNAL_FUNC) event_helptxt); signal_remove("event 706", (SIGNAL_FUNC) event_endofhelp); diff --git a/src/fe-common/irc/module-formats.c b/src/fe-common/irc/module-formats.c index 131676c5..baf9e5a4 100644 --- a/src/fe-common/irc/module-formats.c +++ b/src/fe-common/irc/module-formats.c @@ -89,7 +89,6 @@ FORMAT_REC fecommon_irc_formats[] = { { "invitelist_long", "{channel $0}: invite {ban $1} {comment by {nick $2}, $3 secs ago}", 4, { 0, 0, 0, 1 } }, { "no_such_channel", "{channel $0}: No such channel", 1, { 0 } }, { "channel_synced", "Join to {channel $0} was synced in {hilight $1} secs", 2, { 0, 2 } }, - { "irctxt_help_not_found", "$1", 2, { 0, 0 } }, { "irctxt_help_start", "$1", 2, { 0, 0 } }, { "irctxt_help_txt", "$1", 2, { 0, 0 } }, { "irctxt_end_of_help", "$1", 2, { 0, 0 } }, diff --git a/src/fe-common/irc/module-formats.h b/src/fe-common/irc/module-formats.h index d2e7c1e2..21bf4594 100644 --- a/src/fe-common/irc/module-formats.h +++ b/src/fe-common/irc/module-formats.h @@ -66,7 +66,6 @@ enum { IRCTXT_INVITELIST_LONG, IRCTXT_NO_SUCH_CHANNEL, IRCTXT_CHANNEL_SYNCED, - IRCTXT_HELP_NOT_FOUND, IRCTXT_HELP_START, IRCTXT_HELP_TXT, IRCTXT_END_OF_HELP, From f684c1886791a3f3f9b3d03b13a8091af3a27aac Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Wed, 20 Apr 2022 23:00:33 +0200 Subject: [PATCH 5/8] s/irctxt_/server_/ --- src/fe-common/irc/module-formats.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/fe-common/irc/module-formats.c b/src/fe-common/irc/module-formats.c index baf9e5a4..9432c5f9 100644 --- a/src/fe-common/irc/module-formats.c +++ b/src/fe-common/irc/module-formats.c @@ -89,9 +89,9 @@ FORMAT_REC fecommon_irc_formats[] = { { "invitelist_long", "{channel $0}: invite {ban $1} {comment by {nick $2}, $3 secs ago}", 4, { 0, 0, 0, 1 } }, { "no_such_channel", "{channel $0}: No such channel", 1, { 0 } }, { "channel_synced", "Join to {channel $0} was synced in {hilight $1} secs", 2, { 0, 2 } }, - { "irctxt_help_start", "$1", 2, { 0, 0 } }, - { "irctxt_help_txt", "$1", 2, { 0, 0 } }, - { "irctxt_end_of_help", "$1", 2, { 0, 0 } }, + { "server_help_start", "$1", 2, { 0, 0 } }, + { "server_help_txt", "$1", 2, { 0, 0 } }, + { "server_end_of_help", "$1", 2, { 0, 0 } }, /* ---- */ { NULL, "Nick", 0 }, From ba16d71e9fa01cea5f2442c9635dedfee8b73a13 Mon Sep 17 00:00:00 2001 From: Ailin Nemui Date: Thu, 21 Apr 2022 13:18:50 +0200 Subject: [PATCH 6/8] add SERVER_ to constants --- src/fe-common/irc/fe-events-numeric.c | 6 +++--- src/fe-common/irc/module-formats.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/fe-common/irc/fe-events-numeric.c b/src/fe-common/irc/fe-events-numeric.c index 90d87b46..f643b949 100644 --- a/src/fe-common/irc/fe-events-numeric.c +++ b/src/fe-common/irc/fe-events-numeric.c @@ -583,7 +583,7 @@ static void event_helpstart(IRC_SERVER_REC *server, const char *data, { /* Numeric 704 (RPL_HELPSTART) sent as a reply to HELP or HELPOP command. */ - event_help(server, IRCTXT_HELP_START, data); + event_help(server, IRCTXT_SERVER_HELP_START, data); } static void event_helptxt(IRC_SERVER_REC *server, const char *data, @@ -591,7 +591,7 @@ static void event_helptxt(IRC_SERVER_REC *server, const char *data, { /* Numeric 705 (RPL_HELPTXT), sent as a reply to HELP or HELPOP command. */ - event_help(server, IRCTXT_HELP_TXT, data); + event_help(server, IRCTXT_SERVER_HELP_TXT, data); } static void event_endofhelp(IRC_SERVER_REC *server, const char *data, @@ -599,7 +599,7 @@ static void event_endofhelp(IRC_SERVER_REC *server, const char *data, { /* Numeric 706 (RPL_ENDOFHELP), sent as a reply to HELP or HELPOP command. */ - event_help(server, IRCTXT_END_OF_HELP, data); + event_help(server, IRCTXT_SERVER_END_OF_HELP, data); } static void event_target_too_fast(IRC_SERVER_REC *server, const char *data, diff --git a/src/fe-common/irc/module-formats.h b/src/fe-common/irc/module-formats.h index 21bf4594..a9d29cb0 100644 --- a/src/fe-common/irc/module-formats.h +++ b/src/fe-common/irc/module-formats.h @@ -66,9 +66,9 @@ enum { IRCTXT_INVITELIST_LONG, IRCTXT_NO_SUCH_CHANNEL, IRCTXT_CHANNEL_SYNCED, - IRCTXT_HELP_START, - IRCTXT_HELP_TXT, - IRCTXT_END_OF_HELP, + IRCTXT_SERVER_HELP_START, + IRCTXT_SERVER_HELP_TXT, + IRCTXT_SERVER_END_OF_HELP, IRCTXT_FILL_4, From 4f1e5f35a32b6e86cd0ef100b6a8fbd1b70b0355 Mon Sep 17 00:00:00 2001 From: Ailin Nemui Date: Thu, 21 Apr 2022 14:01:42 +0200 Subject: [PATCH 7/8] fix formatting --- src/fe-common/irc/fe-events-numeric.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/fe-common/irc/fe-events-numeric.c b/src/fe-common/irc/fe-events-numeric.c index f643b949..34ba3fe7 100644 --- a/src/fe-common/irc/fe-events-numeric.c +++ b/src/fe-common/irc/fe-events-numeric.c @@ -554,7 +554,8 @@ static void event_489(IRC_SERVER_REC *server, const char *data, const char *nick g_free(params); } -static void event_help(IRC_SERVER_REC *server, int formatnum, const char *data) { +static void event_help(IRC_SERVER_REC *server, int formatnum, const char *data) +{ /* Common handling for umerics 704 (RPL_HELPSTART), 705 (RPL_HELPTXT), * and 706 (RPL_ENDOFHELP); sent as a reply to HELP or HELPOP command. */ @@ -573,29 +574,25 @@ static void event_help(IRC_SERVER_REC *server, int formatnum, const char *data) help_text = " "; } - printformat(server, NULL, MSGLEVEL_CRAP, formatnum, - topic, help_text); + printformat(server, NULL, MSGLEVEL_CRAP, formatnum, topic, help_text); g_free(params); } -static void event_helpstart(IRC_SERVER_REC *server, const char *data, - const char *nick) +static void event_helpstart(IRC_SERVER_REC *server, const char *data, const char *nick) { /* Numeric 704 (RPL_HELPSTART) sent as a reply to HELP or HELPOP command. */ event_help(server, IRCTXT_SERVER_HELP_START, data); } -static void event_helptxt(IRC_SERVER_REC *server, const char *data, - const char *nick) +static void event_helptxt(IRC_SERVER_REC *server, const char *data, const char *nick) { /* Numeric 705 (RPL_HELPTXT), sent as a reply to HELP or HELPOP command. */ event_help(server, IRCTXT_SERVER_HELP_TXT, data); } -static void event_endofhelp(IRC_SERVER_REC *server, const char *data, - const char *nick) +static void event_endofhelp(IRC_SERVER_REC *server, const char *data, const char *nick) { /* Numeric 706 (RPL_ENDOFHELP), sent as a reply to HELP or HELPOP command. */ From 49479f151cae6d282d588a62d590696048b0912c Mon Sep 17 00:00:00 2001 From: Ailin Nemui Date: Thu, 21 Apr 2022 22:18:33 +0200 Subject: [PATCH 8/8] up abi --- src/common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common.h b/src/common.h index 6b757ec3..a6dfd3b9 100644 --- a/src/common.h +++ b/src/common.h @@ -6,7 +6,7 @@ #define IRSSI_GLOBAL_CONFIG "irssi.conf" /* config file name in /etc/ */ #define IRSSI_HOME_CONFIG "config" /* config file name in ~/.irssi/ */ -#define IRSSI_ABI_VERSION 47 +#define IRSSI_ABI_VERSION 48 #define DEFAULT_SERVER_ADD_PORT 6667 #define DEFAULT_SERVER_ADD_TLS_PORT 6697