From 632b484974d98742cf67274838fcc4bc2c078e6a Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Mon, 9 Mar 2026 00:13:54 -0400 Subject: auto-away on ATRACT, auto-un-away on keystroke. --- src/cmd.c | 11 ++++++++++- src/irc.c | 10 ++++++++++ src/irc.h | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/cmd.c b/src/cmd.c index 5be0fd5..ea6d6cf 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -12,6 +12,7 @@ char *command, *arg1, *arg2, *arg3; static char *target; +static void do_away(void); static void do_color(void); static void do_ctcp(void); static void do_info(void); @@ -36,9 +37,10 @@ typedef struct { } cmd_t; /* future commands: - AWAY OP DEOP VOICE DEVOICE KICK BAN KB IGNORE UNIGNORE MODE + OP DEOP VOICE DEVOICE KICK BAN KB IGNORE UNIGNORE MODE */ cmd_t command_defs[] = { + { "AWAY", do_away, 1 }, { "COLOR", do_color, 1 }, { "CTCP", do_ctcp, 1 }, { "INFO", do_info, 0 }, @@ -344,6 +346,13 @@ static void do_msg(void) { } } +static void do_away(void) { + OS.atract = 0x80; + irc_away = 1; + txbuf_set_str2("AWAY :", arg1); + txbuf_send(); +} + static int cmd_local(void) { arg1 = nextarg(command); diff --git a/src/irc.c b/src/irc.c index e0bf3b1..5035ace 100644 --- a/src/irc.c +++ b/src/irc.c @@ -19,6 +19,8 @@ char *msg_src, *msg_cmd, *msg_dest, *msg_text; char *msg_args[MAX_MSG_ARGS]; int msg_argcount; +char irc_away = 0; + static char msgbuf[MAX_MSG] = { 0 }; static char *msg; /* with source removed */ static int msgbuf_len = 0, msg_len = 0; @@ -644,6 +646,10 @@ static void start_keystroke(void) { static void keystroke(void) { if(OS.ch == 0xff) return; + if(irc_away) { + txbuf_send_str("AWAY"); + irc_away = 0; + } if(GTIA_READ.consol == 6) { /* start pressed */ start_keystroke(); } else { @@ -654,6 +660,10 @@ static void keystroke(void) { /* only exits on error (e.g. connection closed, which might be via /QUIT). */ void irc_loop(void) { while(1) { + if(!irc_away && (OS.atract & 0x80)) { + irc_away = 1; + txbuf_send_str("AWAY :ATRACT mode"); + } if(!irc_read()) return; keystroke(); } diff --git a/src/irc.h b/src/irc.h index 8590314..edecb24 100644 --- a/src/irc.h +++ b/src/irc.h @@ -44,6 +44,7 @@ void print_error(unsigned char err); extern char *msg_src, *msg_cmd, *msg_dest, *msg_text; extern char *msg_args[MAX_MSG_ARGS]; extern int msg_argcount; +extern char irc_away; /* call this once, right after TCP connection is established. */ void irc_register(void); -- cgit v1.2.3