struct t_hashtable * irc_info_info_hashtable_irc_message_split_cb (void *data, const char *info_name, struct t_hashtable *hashtable) { const char *server, *message; struct t_irc_server *ptr_server; struct t_hashtable *value; /* make C compiler happy */ (void) data; (void) info_name; if (!hashtable) return NULL; server = dogechat_hashtable_get (hashtable, "server"); ptr_server = (server) ? irc_server_search (server) : NULL; message = dogechat_hashtable_get (hashtable, "message"); if (message) { value = irc_message_split (ptr_server, message); return value; } return NULL; }
void irc_input_send_user_message (struct t_gui_buffer *buffer, int flags, const char *tags, char *message) { int number, action; char hash_key[32], *str_args; struct t_hashtable *hashtable; IRC_BUFFER_GET_SERVER_CHANNEL(buffer); if (!ptr_server || !ptr_channel || !message || !message[0]) return; if (!ptr_server->is_connected) { dogechat_printf (buffer, _("%s%s: you are not connected to server"), dogechat_prefix ("error"), IRC_PLUGIN_NAME); return; } hashtable = irc_server_sendf (ptr_server, flags | IRC_SERVER_SEND_RETURN_HASHTABLE, tags, "PRIVMSG %s :%s", ptr_channel->name, message); if (hashtable) { action = (strncmp (message, "\01ACTION ", 8) == 0); number = 1; while (1) { snprintf (hash_key, sizeof (hash_key), "args%d", number); str_args = dogechat_hashtable_get (hashtable, hash_key); if (!str_args) break; irc_input_user_message_display (buffer, action, str_args); number++; } dogechat_hashtable_free (hashtable); } }