summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/command.c25
-rw-r--r--src/plugins/plugins.c12
2 files changed, 30 insertions, 7 deletions
diff --git a/src/common/command.c b/src/common/command.c
index 61d65db7e..f0682f73b 100644
--- a/src/common/command.c
+++ b/src/common/command.c
@@ -657,6 +657,8 @@ void
user_command (t_irc_server *server, t_gui_buffer *buffer, char *command)
{
t_irc_nick *ptr_nick;
+ int plugin_args_length;
+ char *plugin_args;
if ((!command) || (!command[0]) || (command[0] == '\r') || (command[0] == '\n'))
return;
@@ -682,7 +684,7 @@ user_command (t_irc_server *server, t_gui_buffer *buffer, char *command)
else
server_sendf (server, "PRIVMSG %s :%s\r\n",
CHANNEL(buffer)->name, command);
-
+
if (CHANNEL(buffer)->type == CHAT_PRIVATE)
{
gui_printf_type_color (CHANNEL(buffer)->buffer,
@@ -717,6 +719,27 @@ user_command (t_irc_server *server, t_gui_buffer *buffer, char *command)
WEECHAT_ERROR);
}
}
+
+ /* sending a copy of the message as PRIVMSG to plugins because irc server doesn't */
+ plugin_args_length = strlen ("localhost PRIVMSG :") +
+ strlen (CHANNEL(buffer)->name) + strlen(command) + 16;
+ plugin_args = (char *) malloc (plugin_args_length * sizeof (*plugin_args));
+
+ if (plugin_args)
+ {
+ snprintf (plugin_args, plugin_args_length,
+ "localhost PRIVMSG %s :%s",
+ CHANNEL(buffer)->name, command);
+ plugin_event_msg ("privmsg", server->name, plugin_args);
+ free (plugin_args);
+ }
+ else
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf (server->buffer,
+ _("%s unable to call handler for message (not enough memory)\n"),
+ WEECHAT_ERROR);
+ }
}
else
{
diff --git a/src/plugins/plugins.c b/src/plugins/plugins.c
index bd5e4af9f..aa35bbc36 100644
--- a/src/plugins/plugins.c
+++ b/src/plugins/plugins.c
@@ -290,7 +290,7 @@ plugin_handler_free_all_type (t_plugin_handler **plugin_handlers,
*/
void
-plugin_event_msg (char *irc_command, char *arguments, char *server)
+plugin_event_msg (char *irc_command, char *server, char *arguments)
{
#ifdef PLUGINS
t_plugin_handler *ptr_plugin_handler;
@@ -306,7 +306,7 @@ plugin_event_msg (char *irc_command, char *arguments, char *server)
if (ptr_plugin_handler->running == 0)
{
ptr_plugin_handler->running = 1;
- wee_perl_exec (ptr_plugin_handler->function_name, arguments, server);
+ wee_perl_exec (ptr_plugin_handler->function_name, server, arguments);
ptr_plugin_handler->running = 0;
}
}
@@ -317,7 +317,7 @@ plugin_event_msg (char *irc_command, char *arguments, char *server)
if (ptr_plugin_handler->running == 0)
{
ptr_plugin_handler->running = 1;
- wee_python_exec (ptr_plugin_handler->function_name, arguments, server);
+ wee_python_exec (ptr_plugin_handler->function_name, server, arguments);
ptr_plugin_handler->running = 0;
}
}
@@ -337,7 +337,7 @@ plugin_event_msg (char *irc_command, char *arguments, char *server)
*/
int
-plugin_exec_command (char *user_command, char *arguments, char *server)
+plugin_exec_command (char *user_command, char *server, char *arguments)
{
#ifdef PLUGINS
t_plugin_handler *ptr_plugin_handler;
@@ -353,7 +353,7 @@ plugin_exec_command (char *user_command, char *arguments, char *server)
if (ptr_plugin_handler->running == 0)
{
ptr_plugin_handler->running = 1;
- wee_perl_exec (ptr_plugin_handler->function_name, arguments, server);
+ wee_perl_exec (ptr_plugin_handler->function_name, server, arguments);
ptr_plugin_handler->running = 0;
}
}
@@ -364,7 +364,7 @@ plugin_exec_command (char *user_command, char *arguments, char *server)
if (ptr_plugin_handler->running == 0)
{
ptr_plugin_handler->running = 1;
- wee_python_exec (ptr_plugin_handler->function_name, arguments, server);
+ wee_python_exec (ptr_plugin_handler->function_name, server, arguments);
ptr_plugin_handler->running = 0;
}
}