diff --git a/degesch.c b/degesch.c index a5443f5..5b10c7b 100644 --- a/degesch.c +++ b/degesch.c @@ -2722,10 +2722,28 @@ send_message_to_target (struct app_context *ctx, return; } - // TODO: autosplit - irc_send (ctx, "PRIVMSG %s :%s", target, message); - buffer_send (ctx, buffer, BUFFER_LINE_PRIVMSG, 0, - ctx->irc_user->nickname, NULL, "%s", message); + int one_message = 0; + if (ctx->irc_user_host) + // :!@ PRIVMSG : + one_message = 510 - 1 - (int) strlen (ctx->irc_user->nickname) + - 1 - (int) strlen (ctx->irc_user_host) + - 1 - 7 - 1 - strlen (target) - 1 - 1; + + // FIXME: UTF-8 sequences + int left = strlen (message); + while (left) + { + int part = MIN (one_message, left); + if (!one_message) + part = left; + + irc_send (ctx, "PRIVMSG %s :%.*s", target, part, message); + buffer_send (ctx, buffer, BUFFER_LINE_PRIVMSG, 0, + ctx->irc_user->nickname, NULL, "%.*s", part, message); + + left -= part; + message += part; + } } static void