From 6c4e7f8fdcc67b76f372aab4409d702a4bca1b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Fri, 17 Apr 2015 22:11:36 +0200 Subject: [PATCH] degesch: fix irc_process_message() --- degesch.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/degesch.c b/degesch.c index 23e2ae1..6dd6be7 100644 --- a/degesch.c +++ b/degesch.c @@ -1517,8 +1517,8 @@ irc_process_message (const struct irc_message *msg, || !strcasecmp (msg->command, "376") // RPL_ENDOFMOTD || !strcasecmp (msg->command, "422"))) // ERR_NOMOTD { - // FIXME: print to the server buffer - print_status ("successfully connected"); + // XXX: should we really print this? + buffer_send_status (ctx, ctx->server_buffer, "successfully connected"); ctx->irc_ready = true; const char *autojoin = str_map_find (&ctx->config, "autojoin"); @@ -1530,14 +1530,20 @@ irc_process_message (const struct irc_message *msg, struct irc_handler *handler = bsearch (&key, g_irc_handlers, N_ELEMENTS (g_irc_handlers), sizeof key, irc_handler_cmp_by_name); if (handler) + { handler->handler (ctx, msg); + return; + } // Numerics typically have human-readable information unsigned long dummy; if (xstrtoul (&dummy, msg->command, 10)) - // TODO: ensure proper encoding - // FIXME: print to the server buffer - print_status ("%s", raw); + { + // TODO: check for valid UTF-8 and eventually try recoding from fallback + char *reconstructed = join_str_vector (&msg->params, ' '); + buffer_send_status (ctx, ctx->server_buffer, "%s", reconstructed); + free (reconstructed); + } } // --- User input handling -----------------------------------------------------