diff options
-rw-r--r-- | degesch.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -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 ----------------------------------------------------- |