From 53b46482f5cc361c5e725cf50c45234bfe19916e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Wed, 22 Apr 2015 22:41:01 +0200 Subject: degesch: preliminary message autosplitting --- degesch.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'degesch.c') 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 -- cgit v1.2.3