aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2026-03-23 01:48:44 -0400
committerB. Watson <urchlay@slackware.uk>2026-03-23 01:48:44 -0400
commit59bb76acede0fc72063485cdffe17acad5a3ac8c (patch)
tree103b6ddc5c0a647abe8ef3974dcbb2c74944e4a7 /src
parent22bd5a4cfface7fc6f85a8e5b1bf392a23023f1f (diff)
downloadfujinet-chat-59bb76acede0fc72063485cdffe17acad5a3ac8c.tar.gz
Don't rejoin channels and pop to screen 3 when using /motd command; clean up motd formatting.
Diffstat (limited to 'src')
-rw-r--r--src/irc.c14
1 files changed, 9 insertions, 5 deletions
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) {