aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmd.c11
-rw-r--r--src/irc.c10
-rw-r--r--src/irc.h1
3 files changed, 21 insertions, 1 deletions
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);