From dc6297d5df43f87d1ed2ea1b5c1f5a5193ec235a Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Mon, 2 Mar 2026 22:03:10 -0500 Subject: Fix "nick already in use" and permutation. --- src/irc.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'src/irc.c') diff --git a/src/irc.c b/src/irc.c index 9f1a280..460b4d0 100644 --- a/src/irc.c +++ b/src/irc.c @@ -7,6 +7,7 @@ #include "screen.h" #include "edbox.h" #include "numerics.h" +#include "keyclick.h" #include #include @@ -31,6 +32,11 @@ static void join_channel(void) { } */ +static void send_nick(void) { + txbuf_set_str2("NICK ", usernick); + txbuf_send(); +} + static void print_reason(void) { if(msg_text) { scr_print_active(": "); @@ -60,8 +66,9 @@ static void do_chan_nick(void) { scr_print_active(msg_dest); } hilite_bold(); - scr_print_active("> "); + scr_print_active(">"); hilite_bold(); + scr_print_active(" "); } static void do_priv_nick(void) { @@ -258,7 +265,7 @@ static void do_numeric(void) { do_catchall(0); if(!regged) { permute_nick(); - irc_register(); + send_nick(); } break; @@ -363,7 +370,7 @@ static void parse_msg(void) { } if(*p == ':') { - msg_src = p; /* generally :irc.example.com or :nick!user@host */ + msg_src = p + 1; /* generally :irc.example.com or :nick!user@host */ msg_cmd = strtok(0, " "); } else { msg_src = 0; /* no source supplied */ @@ -395,7 +402,6 @@ static void parse_msg(void) { if(msg_src) { if((p = strstr(msg_src, "!"))) { - msg_src++; *p = '\0'; } else if(strstr(msg_src, ".")) { msg_src = 0; @@ -486,8 +492,17 @@ void irc_register(void) { txbuf_set_str3("USER ", usernick, " 0 * :FujiNetChat User"); txbuf_send(); - txbuf_set_str2("NICK ", usernick); - txbuf_send(); + send_nick(); +} + +static void scrollback() { + OS.ch = 0xff; + scr_scrollback(); + while(OS.ch == 0xff) + /* NOP */ ; + keyclick(); + OS.ch = 0xff; + scr_end_scrollback(); } static void start_keystroke(void) { @@ -498,6 +513,8 @@ static void start_keystroke(void) { s = i - '1'; if(scr_status[s] != SCR_UNUSED) scr_display(s); + } else if(i == CH_CURS_UP || i == '-') { + scrollback(); } } -- cgit v1.2.3