From f198581a09f12df2b816243168a6ef25027c7c08 Mon Sep 17 00:00:00 2001 From: TingPing Date: Tue, 24 Sep 2013 19:57:37 -0400 Subject: Split long messages at spaces --- src/common/outbound.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/common') diff --git a/src/common/outbound.c b/src/common/outbound.c index 936e0ede..cd0cd021 100644 --- a/src/common/outbound.c +++ b/src/common/outbound.c @@ -2569,7 +2569,8 @@ cmd_load (struct session *sess, char *tbuf, char *word[], char *word_eol[]) char * split_up_text(struct session *sess, char *text, int cmd_length, char *split_text) { - unsigned int max; + unsigned int max, space_offset; + char *space; /* maximum allowed text */ /* :nickname!username@host.com cmd_length */ @@ -2602,6 +2603,17 @@ split_up_text(struct session *sess, char *text, int cmd_length, char *split_text } max = i; + /* Try splitting at last space */ + space = g_utf8_strrchr (text, max, ' '); + if (space) + { + space_offset = g_utf8_pointer_to_offset (text, space); + + /* Only split if last word is of sane length */ + if (max != space_offset && max - space_offset < 20) + max = space_offset + 1; + } + split_text = g_strdup_printf ("%.*s", max, text); return split_text; -- cgit 1.4.1