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: [PATCH] degesch: preliminary message autosplitting
---
degesch.c | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
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