Split long messages at spaces

This commit is contained in:
TingPing 2013-09-24 19:57:37 -04:00
parent 4c9b193b45
commit f198581a09
1 changed files with 13 additions and 1 deletions

View File

@ -2569,7 +2569,8 @@ cmd_load (struct session *sess, char *tbuf, char *word[], char *word_eol[])
char * char *
split_up_text(struct session *sess, char *text, int cmd_length, char *split_text) 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 */ /* maximum allowed text */
/* :nickname!username@host.com cmd_length */ /* :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; 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); split_text = g_strdup_printf ("%.*s", max, text);
return split_text; return split_text;