diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2015-04-22 22:41:01 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-04-22 22:41:01 +0200 |
commit | 53b46482f5cc361c5e725cf50c45234bfe19916e (patch) | |
tree | 6986ce9fcf12199b1f509f56a48ce2aa32943809 | |
parent | f2a2206e49627f81918df89ef682d56736177ad6 (diff) | |
download | xK-53b46482f5cc361c5e725cf50c45234bfe19916e.tar.gz xK-53b46482f5cc361c5e725cf50c45234bfe19916e.tar.xz xK-53b46482f5cc361c5e725cf50c45234bfe19916e.zip |
degesch: preliminary message autosplitting
-rw-r--r-- | degesch.c | 26 |
1 files changed, 22 insertions, 4 deletions
@@ -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) + // :<nick>!<user>@<host> PRIVMSG <target> :<message> + 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 |