From db1343f2ec8d3b944e861fb40593d96be4ec5dda Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Mon, 23 Mar 2026 02:04:36 -0400 Subject: Error messages (numerics 400 to 599) go to the current screen, not [server]. --- TODO | 15 --------------- src/irc.c | 8 ++++++-- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/TODO b/TODO index c5585c4..6ecdd5b 100644 --- a/TODO +++ b/TODO @@ -20,21 +20,6 @@ Other stuff: - [*] When running /motd after connection, it works (even if 'hide MOTD' is enabled), but it jumps to screen #3 if there's a channel in that screen. -? Implemented, but not sure it was worth doing: - If an VBI-driven keyboard buffer turns out to be impossible or - too much of a PITA to contemplate, another idea to avoid dropping - keystrokes: after every keypress, wait something like 1/4 or 1/3 - second for another keypress, before checking for incoming net - traffic. As long as the user's typing 4 (or 3) keys per second, - he won't lose keystrokes. Probably have to put a limit on it, - a pathological case would be holding down a key long enough to - fill the edit box with 240 of the same character. That would - cause a 60 sec delay in net traffic, which might actually cause - us to time out... need some data on just how fast a fast typist - really types, and on average, how often they pause (to think or - read back what they just wrote, etc). Also look into detecting - key repeats (SRTIMER). - Remove this when/if I do a proper typeahead buffer. - [*] Write a cgetc() replacement that doesn't call the OS K: "get one byte" routine. I was avoiding it because it will need a 192-byte table (keycode -> atascii lookup)... but I'm spending more than 192 bytes diff --git a/src/irc.c b/src/irc.c index cafd0a0..00ec89a 100644 --- a/src/irc.c +++ b/src/irc.c @@ -443,11 +443,13 @@ static void do_numeric(void) { */ case ERR_NICKNAMEINUSE: - do_catchall(0); - if(!regged) { + if(regged) { + scr_activate(scr_current); + } else { permute_nick(); send_nick(); } + do_catchall(1); break; /* don't print these, just noise */ @@ -501,6 +503,8 @@ static void do_numeric(void) { break; default: + if(num >= 400 && num < 600) + scr_activate(scr_current); do_catchall(1); break; } -- cgit v1.2.3