aboutsummaryrefslogtreecommitdiffstats
path: root/irc_im.c
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2016-03-21 13:55:32 +0100
committerMarius Halden <marius.h@lden.org>2016-05-07 14:27:54 +0200
commita21ce7901fd2d4f81cddcd7f5d30346d28dfc316 (patch)
treef9b21bfdc6a500be799c05b8f8d17011002937bd /irc_im.c
parent58feabffb4155be993b822b105f5fec73377fcfd (diff)
Add server-time capability
Diffstat (limited to 'irc_im.c')
-rw-r--r--irc_im.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/irc_im.c b/irc_im.c
index 87b5262e..72ae74ef 100644
--- a/irc_im.c
+++ b/irc_im.c
@@ -224,9 +224,16 @@ static gboolean bee_irc_user_msg(bee_t *bee, bee_user_t *bu, const char *msg_, g
char *wrapped, *ts = NULL;
char *msg = g_strdup(msg_);
char *message_type = "PRIVMSG";
+ char *tags = NULL;
GSList *l;
-
- if (sent_at > 0 && set_getbool(&irc->b->set, "display_timestamps")) {
+ struct tm msg_time;
+
+ if (sent_at > 0 && (irc->caps & CAP_SERVER_TIME)) {
+ gmtime_r(&sent_at, &msg_time);
+ tags = g_strdup_printf("time=%04d-%02d-%02dT%02d:%02d:%02d.000Z",
+ msg_time.tm_year + 1900, msg_time.tm_mon + 1, msg_time.tm_mday,
+ msg_time.tm_hour, msg_time.tm_min, msg_time.tm_sec);
+ } else if (sent_at > 0 && set_getbool(&irc->b->set, "display_timestamps")) {
ts = irc_format_timestamp(irc, sent_at);
}
@@ -299,13 +306,14 @@ static gboolean bee_irc_user_msg(bee_t *bee, bee_user_t *bu, const char *msg_, g
}
wrapped = word_wrap(msg, 425);
- irc_send_msg(src_iu, message_type, dst, wrapped, prefix);
+ irc_send_msg_tagged(src_iu, message_type, dst, wrapped, prefix, tags);
g_free(wrapped);
cleanup:
g_free(prefix);
g_free(msg);
g_free(ts);
+ g_free(tags);
return TRUE;
}
@@ -663,19 +671,27 @@ static gboolean bee_irc_chat_msg(bee_t *bee, struct groupchat *c, bee_user_t *bu
irc_user_t *iu = flags & OPT_SELFMESSAGE ? irc->user : bu->ui_data;
irc_channel_t *ic = c->ui_data;
char *wrapped, *ts = NULL;
+ char *tags = NULL;
+ struct tm msg_time;
if (ic == NULL) {
return FALSE;
}
- if (sent_at > 0 && set_getbool(&bee->set, "display_timestamps")) {
+ if (sent_at > 0 && (irc->caps & CAP_SERVER_TIME)) {
+ gmtime_r(&sent_at, &msg_time);
+ tags = g_strdup_printf("time=%04d-%02d-%02dT%02d:%02d:%02d.000Z",
+ msg_time.tm_year + 1900, msg_time.tm_mon + 1, msg_time.tm_mday,
+ msg_time.tm_hour, msg_time.tm_min, msg_time.tm_sec);
+ } else if (sent_at > 0 && set_getbool(&bee->set, "display_timestamps")) {
ts = irc_format_timestamp(irc, sent_at);
}
wrapped = word_wrap(msg, 425);
- irc_send_msg(iu, "PRIVMSG", ic->name, wrapped, ts);
+ irc_send_msg_tagged(iu, "PRIVMSG", ic->name, wrapped, ts, tags);
g_free(ts);
g_free(wrapped);
+ g_free(tags);
return TRUE;
}