From 6d16dbb16d4d575a63f30bd1288b616e48598813 Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Sun, 7 Jun 2015 00:41:59 +0200
Subject: degesch: process RPL_TOPICWHOTIME
---
degesch.c | 31 +++++++++++++++++++++++++++++++
kike-replies | 1 +
2 files changed, 32 insertions(+)
diff --git a/degesch.c b/degesch.c
index 789ab55..8b71d59 100644
--- a/degesch.c
+++ b/degesch.c
@@ -4875,6 +4875,35 @@ irc_handle_rpl_creationtime (struct server *s, const struct irc_message *msg)
}
}
+static void
+irc_handle_rpl_topicwhotime (struct server *s, const struct irc_message *msg)
+{
+ if (msg->params.len < 4)
+ return;
+
+ const char *channel_name = msg->params.vector[1];
+ const char *who = msg->params.vector[2];
+ const char *change_time = msg->params.vector[3];
+
+ unsigned long changed;
+ if (!xstrtoul (&changed, change_time, 10))
+ return;
+
+ struct channel *channel = str_map_find (&s->irc_channels, channel_name);
+ struct buffer *buffer = str_map_find (&s->irc_buffer_map, channel_name);
+ hard_assert ((channel && buffer) ||
+ (channel && !buffer) || (!channel && !buffer));
+
+ // Topic set by x (y@z) on ...
+ if (buffer)
+ {
+ // FIXME: logging
+ char *x = make_time_string (changed);
+ buffer_send_status (s->ctx, buffer, "Topic set by %s on %s", who, x);
+ free (x);
+ }
+}
+
static void
irc_handle_isupport_prefix (struct server *s, char *value)
{
@@ -5068,6 +5097,8 @@ irc_process_numeric (struct server *s,
irc_handle_rpl_channelmodeis (s, msg); buffer = NULL; break;
case IRC_RPL_CREATIONTIME:
irc_handle_rpl_creationtime (s, msg); buffer = NULL; break;
+ case IRC_RPL_TOPICWHOTIME:
+ irc_handle_rpl_topicwhotime (s, msg); buffer = NULL; break;
case IRC_ERR_NICKNAMEINUSE:
// TODO: if (state == IRC_CONNECTED), use a different nick;
diff --git a/kike-replies b/kike-replies
index d5c4b75..decc880 100644
--- a/kike-replies
+++ b/kike-replies
@@ -27,6 +27,7 @@
329 IRC_RPL_CREATIONTIME "%s %lld"
331 IRC_RPL_NOTOPIC "%s :No topic is set"
332 IRC_RPL_TOPIC "%s :%s"
+333 IRC_RPL_TOPICWHOTIME "%s %s %lld"
346 IRC_RPL_INVITELIST "%s %s"
347 IRC_RPL_ENDOFINVITELIST "%s :End of channel invite list"
348 IRC_RPL_EXCEPTLIST "%s %s"
--
cgit v1.2.3-70-g09d2