void relay_weechat_recv (struct t_relay_client *client, const char *data) { char *new_partial, *pos, *tmp, **commands; int num_commands, i; if (relay_weechat_partial_message) { new_partial = realloc (relay_weechat_partial_message, strlen (relay_weechat_partial_message) + strlen (data) + 1); if (!new_partial) return; relay_weechat_partial_message = new_partial; strcat (relay_weechat_partial_message, data); } else relay_weechat_partial_message = strdup (data); pos = strrchr (relay_weechat_partial_message, '\n'); if (pos) { pos[0] = '\0'; commands = weechat_string_split (relay_weechat_partial_message, "\n", 0, 0, &num_commands); if (commands) { for (i = 0; i < num_commands; i++) { relay_weechat_protocol_recv (client, commands[i]); } weechat_string_free_split (commands); } if (pos[1]) { tmp = strdup (pos + 1); free (relay_weechat_partial_message); relay_weechat_partial_message = tmp; } else { free (relay_weechat_partial_message); relay_weechat_partial_message = NULL; } } }
void relay_weechat_recv (struct t_relay_client *client, const char *data) { relay_weechat_protocol_recv (client, data); }