xC: deal with so far unexpected multiline messages
And get rid of an outdated unmarked TODO comment.
This commit is contained in:
parent
e7d0f2380e
commit
7d5e63be1f
26
xC.c
26
xC.c
|
@ -9075,12 +9075,21 @@ irc_autosplit_message (struct server *s, const char *message,
|
|||
- 1 - (int) strlen (s->irc_user_host)
|
||||
- 1 - fixed_part;
|
||||
|
||||
// However we don't always have the full info for message splitting
|
||||
if (!space_in_one_message)
|
||||
strv_append (output, message);
|
||||
else if (!wrap_message (message, space_in_one_message, output, e))
|
||||
return false;
|
||||
return true;
|
||||
// Multiline messages can be triggered through hooks and plugins.
|
||||
struct strv lines = strv_make ();
|
||||
cstr_split (message, "\r\n", false, &lines);
|
||||
bool success = true;
|
||||
for (size_t i = 0; i < lines.len; i++)
|
||||
{
|
||||
// We don't always have the full info for message splitting.
|
||||
if (!space_in_one_message)
|
||||
strv_append (output, lines.vector[i]);
|
||||
else if (!(success =
|
||||
wrap_message (lines.vector[i], space_in_one_message, output, e)))
|
||||
break;
|
||||
}
|
||||
strv_free (&lines);
|
||||
return success;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -9089,12 +9098,11 @@ send_autosplit_message (struct server *s,
|
|||
const char *prefix, const char *suffix)
|
||||
{
|
||||
struct buffer *buffer = str_map_find (&s->irc_buffer_map, target);
|
||||
|
||||
// "COMMAND target * :prefix*suffix"
|
||||
int fixed_part = strlen (command) + 1 + strlen (target) + 1 + 1
|
||||
+ strlen (prefix) + strlen (suffix);
|
||||
|
||||
// We might also want to preserve attributes across splits but
|
||||
// that would make this code a lot more complicated
|
||||
|
||||
struct strv lines = strv_make ();
|
||||
struct error *e = NULL;
|
||||
if (!irc_autosplit_message (s, message, fixed_part, &lines, &e))
|
||||
|
|
Loading…
Reference in New Issue