aboutsummaryrefslogtreecommitdiff
path: root/src/irc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/irc.c')
-rw-r--r--src/irc.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/irc.c b/src/irc.c
index e185350..7464dd9 100644
--- a/src/irc.c
+++ b/src/irc.c
@@ -368,6 +368,18 @@ static void permute_nick(void) {
}
}
+/* see: https://defs.ircdocs.horse/ */
+static void do_forward_chan(void) {
+ char s;
+
+ if(msg_argcount > 2 && msg_args[1][0] == '#' && msg_args[2][0] == '#') {
+ s = scr_getbyname(msg_args[1]);
+ if(s)
+ strncpy(scr_names[s], msg_args[2], 31);
+ }
+ do_catchall(1);
+}
+
static void do_numeric(void) {
unsigned int num = atoi(msg_cmd);
@@ -448,6 +460,10 @@ static void do_numeric(void) {
scr_eol_active();
break;
+ case 470: /* aka ERR_LINKCHANNEL, for Unreal and Solanum ircds */
+ do_forward_chan();
+ break;
+
default:
do_catchall(1);
break;