From 59bb76acede0fc72063485cdffe17acad5a3ac8c Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Mon, 23 Mar 2026 01:48:44 -0400 Subject: Don't rejoin channels and pop to screen 3 when using /motd command; clean up motd formatting. --- src/irc.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/irc.c') diff --git a/src/irc.c b/src/irc.c index 6391ca2..cafd0a0 100644 --- a/src/irc.c +++ b/src/irc.c @@ -31,6 +31,7 @@ char bell_type; char hide_motd; char start_latch = 0; char new_scr_status; +char need_rejoin; static char msgbuf[MAX_MSG] = { 0 }; static char *msg; /* with source removed */ @@ -454,18 +455,20 @@ static void do_numeric(void) { break; case RPL_MOTD: - /* FIXME: this prevents the user using /MOTD on purpose, too */ if(!hide_motd) - do_catchall(0); + do_catchall(1); break; /* don't print, but do trigger rejoin */ case RPL_ENDOFMOTD: case ERR_NOMOTD: hide_motd = 0; - cmd_rejoin_chans(); - if(scr_names[2][0] == '#') - scr_display(2); + if(need_rejoin) { + cmd_rejoin_chans(); + if(scr_names[2][0] == '#') + scr_display(2); + need_rejoin = 0; + } break; case RPL_NAMREPLY: @@ -1046,6 +1049,7 @@ void irc_loop(void) { /* this stuff happens on every connect. */ hide_motd = conf->hide_motd; msgbuf[0] = msgbuf_len = regged = irc_away = minutes = 0; + need_rejoin = 1; start_minute_timer(); while(1) { -- cgit v1.2.3