1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-26 12:56:37 +02:00

Fixed bugs in "get_info" and "command" interface functions of plugins

This commit is contained in:
Sebastien Helleu
2005-11-06 18:27:20 +00:00
parent 6eb449b370
commit 64c1dbba0e
16 changed files with 154 additions and 172 deletions
+39 -35
View File
@@ -280,12 +280,15 @@ weechat_plugin_exec_command (t_weechat_plugin *plugin,
char *server, char *channel, char *command)
{
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
if (!plugin || !command)
return;
ptr_server = plugin_find_server (server, channel);
if (ptr_server && (ptr_server->buffer))
plugin_find_server_channel (server, channel, &ptr_server, &ptr_channel);
if (ptr_server && ptr_channel)
user_command (ptr_server, ptr_channel->buffer, command);
else if (ptr_server && (ptr_server->buffer))
user_command (ptr_server, ptr_server->buffer, command);
}
@@ -296,51 +299,23 @@ weechat_plugin_exec_command (t_weechat_plugin *plugin,
*/
char *
weechat_plugin_get_info (t_weechat_plugin *plugin, char *info, char *server, char *channel)
weechat_plugin_get_info (t_weechat_plugin *plugin, char *info, char *server)
{
t_gui_buffer *ptr_buffer;
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
if (!plugin || !info)
return NULL;
ptr_buffer = plugin_find_buffer (server, channel);
if (!ptr_buffer)
return NULL;
/* below are infos that do NOT need server to return info */
if (ascii_strcasecmp (info, "version") == 0)
{
return strdup (PACKAGE_VERSION);
}
else if (ascii_strcasecmp (info, "nick") == 0)
{
if (SERVER(ptr_buffer) && (SERVER(ptr_buffer)->is_connected)
&& (SERVER(ptr_buffer)->nick))
return strdup (SERVER(ptr_buffer)->nick);
}
else if (ascii_strcasecmp (info, "channel") == 0)
{
if (BUFFER_IS_CHANNEL(ptr_buffer))
return strdup (CHANNEL(gui_current_window->buffer)->name);
}
else if (ascii_strcasecmp (info, "server") == 0)
{
if (SERVER(ptr_buffer) && (SERVER(ptr_buffer)->is_connected)
&& (SERVER(ptr_buffer)->name))
return strdup (SERVER(ptr_buffer)->name);
}
else if (ascii_strcasecmp (info, "away") == 0)
{
if (SERVER(ptr_buffer) && (SERVER(ptr_buffer)->is_connected))
{
if (SERVER(ptr_buffer)->is_away)
return strdup ("1");
else
return strdup ("0");
}
}
else if (ascii_strcasecmp (info, "weechatdir") == 0)
{
/* WARNING: deprecated info, you should use weechat_dir */
/* WARNING: deprecated info, you should use "weechat_dir" */
/* will be removed in a future version */
return strdup (weechat_home);
}
@@ -357,6 +332,35 @@ weechat_plugin_get_info (t_weechat_plugin *plugin, char *info, char *server, cha
return strdup (WEECHAT_SHAREDIR);
}
/* below are infos that need server to return value */
plugin_find_server_channel (server, NULL, &ptr_server, &ptr_channel);
if (!ptr_server)
return NULL;
if (ascii_strcasecmp (info, "nick") == 0)
{
if (ptr_server->is_connected && ptr_server->nick)
return strdup (ptr_server->nick);
}
else if (ascii_strcasecmp (info, "channel") == 0)
{
if (BUFFER_IS_CHANNEL(gui_current_window->buffer))
return strdup (CHANNEL(gui_current_window->buffer)->name);
}
else if (ascii_strcasecmp (info, "server") == 0)
{
if (ptr_server->is_connected && ptr_server->name)
return strdup (ptr_server->name);
}
else if (ascii_strcasecmp (info, "away") == 0)
{
if (ptr_server->is_connected && ptr_server->is_away)
return strdup ("1");
else
return strdup ("0");
}
/* info not found */
return NULL;
}
+20 -20
View File
@@ -105,44 +105,44 @@ plugin_find_buffer (char *server, char *channel)
}
/*
* plugin_find_server: find a server for command execution
* plugin_find_server_channel: find server/channel for command execution
*/
t_irc_server *
plugin_find_server (char *server, char *channel)
void
plugin_find_server_channel (char *server, char *channel,
t_irc_server **ptr_server,
t_irc_channel **ptr_channel)
{
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
(*ptr_server) = NULL;
(*ptr_channel) = NULL;
ptr_server = NULL;
ptr_channel = NULL;
/* nothing given => return current server */
/* nothing given => return current server/channel */
if ((!server || !server[0]) && (!channel || !channel[0]))
return SERVER(gui_current_window->buffer);
{
(*ptr_server) = SERVER(gui_current_window->buffer);
(*ptr_channel) = (BUFFER_IS_CHANNEL(gui_current_window->buffer) ||
BUFFER_IS_PRIVATE(gui_current_window->buffer)) ?
CHANNEL(gui_current_window->buffer) : NULL;
}
else
{
if (server && server[0])
return server_search (server);
(*ptr_server) = server_search (server);
else
{
ptr_server = SERVER(gui_current_window->buffer);
if (!ptr_server)
ptr_server = SERVER(gui_buffers);
(*ptr_server) = SERVER(gui_current_window->buffer);
if (!(*ptr_server))
(*ptr_server) = SERVER(gui_buffers);
}
if (channel && channel[0])
{
if (ptr_server)
return (channel_search (ptr_server, channel)) ?
ptr_server : NULL;
if ((*ptr_server))
(*ptr_channel) = channel_search ((*ptr_server), channel);
}
}
return NULL;
}
/*
* plugin_exec_on_files: find files in a directory and execute a
* function on each file
+2 -1
View File
@@ -32,7 +32,8 @@ extern t_weechat_plugin *weechat_plugins;
extern t_weechat_plugin *last_weechat_plugin;
extern t_gui_buffer *plugin_find_buffer (char *, char *);
extern t_irc_server *plugin_find_server (char *, char *);
extern void plugin_find_server_channel (char *, char *,
t_irc_server **, t_irc_channel **);
extern void plugin_exec_on_files (t_weechat_plugin *, char *,
int (*)(t_weechat_plugin *, char *));
extern t_weechat_plugin *plugin_search (char *);
+5 -11
View File
@@ -508,7 +508,7 @@ static XS (XS_weechat_remove_handler)
static XS (XS_weechat_get_info)
{
char *arg, *info, *server_name, *channel_name;
char *arg, *info, *server_name;
unsigned int integer;
dXSARGS;
@@ -523,7 +523,7 @@ static XS (XS_weechat_get_info)
XSRETURN_NO;
}
if ((items < 1) || (items > 3))
if ((items < 1) || (items > 2))
{
perl_plugin->printf_server (perl_plugin,
"Perl error: wrong parameters for "
@@ -531,18 +531,12 @@ static XS (XS_weechat_get_info)
XSRETURN_NO;
}
server_name = NULL;
channel_name = NULL;
if (items >= 2)
server_name = SvPV (ST (1), integer);
if (items == 3)
channel_name = SvPV (ST (2), integer);
server_name = (items == 2) ? SvPV (ST (1), integer) : NULL;
arg = SvPV (ST (0), integer);
if (arg)
{
info = perl_plugin->get_info (perl_plugin, arg, server_name, channel_name);
info = perl_plugin->get_info (perl_plugin, arg, server_name);
if (info)
{
@@ -1111,7 +1105,7 @@ weechat_perl_cmd (t_weechat_plugin *plugin,
path_script = NULL;
else
{
dir_home = plugin->get_info (plugin, "weechat_dir", NULL, NULL);
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
if (dir_home)
{
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
+4 -5
View File
@@ -409,7 +409,7 @@ weechat_python_remove_handler (PyObject *self, PyObject *args)
static PyObject *
weechat_python_get_info (PyObject *self, PyObject *args)
{
char *arg, *server_name, *channel_name, *info;
char *arg, *server_name, *info;
PyObject *object;
/* make gcc happy */
@@ -425,9 +425,8 @@ weechat_python_get_info (PyObject *self, PyObject *args)
arg = NULL;
server_name = NULL;
channel_name = NULL;
if (!PyArg_ParseTuple (args, "s|ss", &arg, &server_name, &channel_name))
if (!PyArg_ParseTuple (args, "s|s", &arg, &server_name))
{
python_plugin->printf_server (python_plugin,
"Python error: wrong parameters for "
@@ -437,7 +436,7 @@ weechat_python_get_info (PyObject *self, PyObject *args)
if (arg)
{
info = python_plugin->get_info (python_plugin, arg, server_name, channel_name);
info = python_plugin->get_info (python_plugin, arg, server_name);
if (info)
{
@@ -1040,7 +1039,7 @@ weechat_python_cmd (t_weechat_plugin *plugin,
path_script = NULL;
else
{
dir_home = plugin->get_info (plugin, "weechat_dir", NULL, NULL);
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
if (dir_home)
{
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
+4 -11
View File
@@ -452,10 +452,9 @@ weechat_ruby_remove_handler (VALUE class, VALUE command, VALUE function)
*/
static VALUE
weechat_ruby_get_info (VALUE class, VALUE arg, VALUE server_name,
VALUE channel_name)
weechat_ruby_get_info (VALUE class, VALUE arg, VALUE server_name)
{
char *c_arg, *c_server_name, *c_channel_name, *info;
char *c_arg, *c_server_name, *info;
VALUE return_value;
/* make gcc happy */
@@ -471,7 +470,6 @@ weechat_ruby_get_info (VALUE class, VALUE arg, VALUE server_name,
c_arg = NULL;
c_server_name = NULL;
c_channel_name = NULL;
if (NIL_P (arg))
{
@@ -484,19 +482,14 @@ weechat_ruby_get_info (VALUE class, VALUE arg, VALUE server_name,
Check_Type (arg, T_STRING);
if (!NIL_P (server_name))
Check_Type (server_name, T_STRING);
if (!NIL_P (channel_name))
Check_Type (channel_name, T_STRING);
c_arg = STR2CSTR (arg);
if (!NIL_P (server_name))
c_server_name = STR2CSTR (server_name);
if (!NIL_P (channel_name))
c_channel_name = STR2CSTR (channel_name);
if (c_arg)
{
info = ruby_plugin->get_info (ruby_plugin, c_arg,
c_server_name, c_channel_name);
info = ruby_plugin->get_info (ruby_plugin, c_arg, c_server_name);
if (info)
{
@@ -893,7 +886,7 @@ weechat_ruby_cmd (t_weechat_plugin *plugin,
path_script = NULL;
else
{
dir_home = plugin->get_info (plugin, "weechat_dir", NULL, NULL);
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
if (dir_home)
{
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
+1 -1
View File
@@ -44,7 +44,7 @@ weechat_script_auto_load (t_weechat_plugin *plugin, char *language,
int dir_length;
/* build directory, adding WeeChat home */
dir_home = plugin->get_info (plugin, "weechat_dir", NULL, NULL);
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
if (!dir_home)
return;
dir_length = strlen (dir_home) + strlen (language) + 16;
+2 -2
View File
@@ -147,7 +147,7 @@ struct t_weechat_plugin
void (*handler_remove_all) (t_weechat_plugin *);
void (*exec_command) (t_weechat_plugin *, char *, char *, char *);
char *(*get_info) (t_weechat_plugin *, char *, char *, char *);
char *(*get_info) (t_weechat_plugin *, char *, char *);
t_plugin_dcc_info *(*get_dcc_info) (t_weechat_plugin *);
void (*free_dcc_info) (t_weechat_plugin *, t_plugin_dcc_info *);
char *(*get_config) (t_weechat_plugin *, char *);
@@ -185,7 +185,7 @@ extern void weechat_plugin_handler_remove_all (t_weechat_plugin *);
/* other functions */
extern void weechat_plugin_exec_command (t_weechat_plugin *, char *, char *, char *);
extern char *weechat_plugin_get_info (t_weechat_plugin *, char *, char *, char *);
extern char *weechat_plugin_get_info (t_weechat_plugin *, char *, char *);
extern t_plugin_dcc_info *weechat_plugin_get_dcc_info (t_weechat_plugin *);
extern void weechat_plugin_free_dcc_info (t_weechat_plugin *, t_plugin_dcc_info *);
extern char *weechat_plugin_get_config (t_weechat_plugin *, char *);
+39 -35
View File
@@ -280,12 +280,15 @@ weechat_plugin_exec_command (t_weechat_plugin *plugin,
char *server, char *channel, char *command)
{
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
if (!plugin || !command)
return;
ptr_server = plugin_find_server (server, channel);
if (ptr_server && (ptr_server->buffer))
plugin_find_server_channel (server, channel, &ptr_server, &ptr_channel);
if (ptr_server && ptr_channel)
user_command (ptr_server, ptr_channel->buffer, command);
else if (ptr_server && (ptr_server->buffer))
user_command (ptr_server, ptr_server->buffer, command);
}
@@ -296,51 +299,23 @@ weechat_plugin_exec_command (t_weechat_plugin *plugin,
*/
char *
weechat_plugin_get_info (t_weechat_plugin *plugin, char *info, char *server, char *channel)
weechat_plugin_get_info (t_weechat_plugin *plugin, char *info, char *server)
{
t_gui_buffer *ptr_buffer;
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
if (!plugin || !info)
return NULL;
ptr_buffer = plugin_find_buffer (server, channel);
if (!ptr_buffer)
return NULL;
/* below are infos that do NOT need server to return info */
if (ascii_strcasecmp (info, "version") == 0)
{
return strdup (PACKAGE_VERSION);
}
else if (ascii_strcasecmp (info, "nick") == 0)
{
if (SERVER(ptr_buffer) && (SERVER(ptr_buffer)->is_connected)
&& (SERVER(ptr_buffer)->nick))
return strdup (SERVER(ptr_buffer)->nick);
}
else if (ascii_strcasecmp (info, "channel") == 0)
{
if (BUFFER_IS_CHANNEL(ptr_buffer))
return strdup (CHANNEL(gui_current_window->buffer)->name);
}
else if (ascii_strcasecmp (info, "server") == 0)
{
if (SERVER(ptr_buffer) && (SERVER(ptr_buffer)->is_connected)
&& (SERVER(ptr_buffer)->name))
return strdup (SERVER(ptr_buffer)->name);
}
else if (ascii_strcasecmp (info, "away") == 0)
{
if (SERVER(ptr_buffer) && (SERVER(ptr_buffer)->is_connected))
{
if (SERVER(ptr_buffer)->is_away)
return strdup ("1");
else
return strdup ("0");
}
}
else if (ascii_strcasecmp (info, "weechatdir") == 0)
{
/* WARNING: deprecated info, you should use weechat_dir */
/* WARNING: deprecated info, you should use "weechat_dir" */
/* will be removed in a future version */
return strdup (weechat_home);
}
@@ -357,6 +332,35 @@ weechat_plugin_get_info (t_weechat_plugin *plugin, char *info, char *server, cha
return strdup (WEECHAT_SHAREDIR);
}
/* below are infos that need server to return value */
plugin_find_server_channel (server, NULL, &ptr_server, &ptr_channel);
if (!ptr_server)
return NULL;
if (ascii_strcasecmp (info, "nick") == 0)
{
if (ptr_server->is_connected && ptr_server->nick)
return strdup (ptr_server->nick);
}
else if (ascii_strcasecmp (info, "channel") == 0)
{
if (BUFFER_IS_CHANNEL(gui_current_window->buffer))
return strdup (CHANNEL(gui_current_window->buffer)->name);
}
else if (ascii_strcasecmp (info, "server") == 0)
{
if (ptr_server->is_connected && ptr_server->name)
return strdup (ptr_server->name);
}
else if (ascii_strcasecmp (info, "away") == 0)
{
if (ptr_server->is_connected && ptr_server->is_away)
return strdup ("1");
else
return strdup ("0");
}
/* info not found */
return NULL;
}
+20 -20
View File
@@ -105,44 +105,44 @@ plugin_find_buffer (char *server, char *channel)
}
/*
* plugin_find_server: find a server for command execution
* plugin_find_server_channel: find server/channel for command execution
*/
t_irc_server *
plugin_find_server (char *server, char *channel)
void
plugin_find_server_channel (char *server, char *channel,
t_irc_server **ptr_server,
t_irc_channel **ptr_channel)
{
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
(*ptr_server) = NULL;
(*ptr_channel) = NULL;
ptr_server = NULL;
ptr_channel = NULL;
/* nothing given => return current server */
/* nothing given => return current server/channel */
if ((!server || !server[0]) && (!channel || !channel[0]))
return SERVER(gui_current_window->buffer);
{
(*ptr_server) = SERVER(gui_current_window->buffer);
(*ptr_channel) = (BUFFER_IS_CHANNEL(gui_current_window->buffer) ||
BUFFER_IS_PRIVATE(gui_current_window->buffer)) ?
CHANNEL(gui_current_window->buffer) : NULL;
}
else
{
if (server && server[0])
return server_search (server);
(*ptr_server) = server_search (server);
else
{
ptr_server = SERVER(gui_current_window->buffer);
if (!ptr_server)
ptr_server = SERVER(gui_buffers);
(*ptr_server) = SERVER(gui_current_window->buffer);
if (!(*ptr_server))
(*ptr_server) = SERVER(gui_buffers);
}
if (channel && channel[0])
{
if (ptr_server)
return (channel_search (ptr_server, channel)) ?
ptr_server : NULL;
if ((*ptr_server))
(*ptr_channel) = channel_search ((*ptr_server), channel);
}
}
return NULL;
}
/*
* plugin_exec_on_files: find files in a directory and execute a
* function on each file
+2 -1
View File
@@ -32,7 +32,8 @@ extern t_weechat_plugin *weechat_plugins;
extern t_weechat_plugin *last_weechat_plugin;
extern t_gui_buffer *plugin_find_buffer (char *, char *);
extern t_irc_server *plugin_find_server (char *, char *);
extern void plugin_find_server_channel (char *, char *,
t_irc_server **, t_irc_channel **);
extern void plugin_exec_on_files (t_weechat_plugin *, char *,
int (*)(t_weechat_plugin *, char *));
extern t_weechat_plugin *plugin_search (char *);
@@ -508,7 +508,7 @@ static XS (XS_weechat_remove_handler)
static XS (XS_weechat_get_info)
{
char *arg, *info, *server_name, *channel_name;
char *arg, *info, *server_name;
unsigned int integer;
dXSARGS;
@@ -523,7 +523,7 @@ static XS (XS_weechat_get_info)
XSRETURN_NO;
}
if ((items < 1) || (items > 3))
if ((items < 1) || (items > 2))
{
perl_plugin->printf_server (perl_plugin,
"Perl error: wrong parameters for "
@@ -531,18 +531,12 @@ static XS (XS_weechat_get_info)
XSRETURN_NO;
}
server_name = NULL;
channel_name = NULL;
if (items >= 2)
server_name = SvPV (ST (1), integer);
if (items == 3)
channel_name = SvPV (ST (2), integer);
server_name = (items == 2) ? SvPV (ST (1), integer) : NULL;
arg = SvPV (ST (0), integer);
if (arg)
{
info = perl_plugin->get_info (perl_plugin, arg, server_name, channel_name);
info = perl_plugin->get_info (perl_plugin, arg, server_name);
if (info)
{
@@ -1111,7 +1105,7 @@ weechat_perl_cmd (t_weechat_plugin *plugin,
path_script = NULL;
else
{
dir_home = plugin->get_info (plugin, "weechat_dir", NULL, NULL);
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
if (dir_home)
{
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
@@ -409,7 +409,7 @@ weechat_python_remove_handler (PyObject *self, PyObject *args)
static PyObject *
weechat_python_get_info (PyObject *self, PyObject *args)
{
char *arg, *server_name, *channel_name, *info;
char *arg, *server_name, *info;
PyObject *object;
/* make gcc happy */
@@ -425,9 +425,8 @@ weechat_python_get_info (PyObject *self, PyObject *args)
arg = NULL;
server_name = NULL;
channel_name = NULL;
if (!PyArg_ParseTuple (args, "s|ss", &arg, &server_name, &channel_name))
if (!PyArg_ParseTuple (args, "s|s", &arg, &server_name))
{
python_plugin->printf_server (python_plugin,
"Python error: wrong parameters for "
@@ -437,7 +436,7 @@ weechat_python_get_info (PyObject *self, PyObject *args)
if (arg)
{
info = python_plugin->get_info (python_plugin, arg, server_name, channel_name);
info = python_plugin->get_info (python_plugin, arg, server_name);
if (info)
{
@@ -1040,7 +1039,7 @@ weechat_python_cmd (t_weechat_plugin *plugin,
path_script = NULL;
else
{
dir_home = plugin->get_info (plugin, "weechat_dir", NULL, NULL);
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
if (dir_home)
{
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
@@ -452,10 +452,9 @@ weechat_ruby_remove_handler (VALUE class, VALUE command, VALUE function)
*/
static VALUE
weechat_ruby_get_info (VALUE class, VALUE arg, VALUE server_name,
VALUE channel_name)
weechat_ruby_get_info (VALUE class, VALUE arg, VALUE server_name)
{
char *c_arg, *c_server_name, *c_channel_name, *info;
char *c_arg, *c_server_name, *info;
VALUE return_value;
/* make gcc happy */
@@ -471,7 +470,6 @@ weechat_ruby_get_info (VALUE class, VALUE arg, VALUE server_name,
c_arg = NULL;
c_server_name = NULL;
c_channel_name = NULL;
if (NIL_P (arg))
{
@@ -484,19 +482,14 @@ weechat_ruby_get_info (VALUE class, VALUE arg, VALUE server_name,
Check_Type (arg, T_STRING);
if (!NIL_P (server_name))
Check_Type (server_name, T_STRING);
if (!NIL_P (channel_name))
Check_Type (channel_name, T_STRING);
c_arg = STR2CSTR (arg);
if (!NIL_P (server_name))
c_server_name = STR2CSTR (server_name);
if (!NIL_P (channel_name))
c_channel_name = STR2CSTR (channel_name);
if (c_arg)
{
info = ruby_plugin->get_info (ruby_plugin, c_arg,
c_server_name, c_channel_name);
info = ruby_plugin->get_info (ruby_plugin, c_arg, c_server_name);
if (info)
{
@@ -893,7 +886,7 @@ weechat_ruby_cmd (t_weechat_plugin *plugin,
path_script = NULL;
else
{
dir_home = plugin->get_info (plugin, "weechat_dir", NULL, NULL);
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
if (dir_home)
{
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
+1 -1
View File
@@ -44,7 +44,7 @@ weechat_script_auto_load (t_weechat_plugin *plugin, char *language,
int dir_length;
/* build directory, adding WeeChat home */
dir_home = plugin->get_info (plugin, "weechat_dir", NULL, NULL);
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
if (!dir_home)
return;
dir_length = strlen (dir_home) + strlen (language) + 16;
+2 -2
View File
@@ -147,7 +147,7 @@ struct t_weechat_plugin
void (*handler_remove_all) (t_weechat_plugin *);
void (*exec_command) (t_weechat_plugin *, char *, char *, char *);
char *(*get_info) (t_weechat_plugin *, char *, char *, char *);
char *(*get_info) (t_weechat_plugin *, char *, char *);
t_plugin_dcc_info *(*get_dcc_info) (t_weechat_plugin *);
void (*free_dcc_info) (t_weechat_plugin *, t_plugin_dcc_info *);
char *(*get_config) (t_weechat_plugin *, char *);
@@ -185,7 +185,7 @@ extern void weechat_plugin_handler_remove_all (t_weechat_plugin *);
/* other functions */
extern void weechat_plugin_exec_command (t_weechat_plugin *, char *, char *, char *);
extern char *weechat_plugin_get_info (t_weechat_plugin *, char *, char *, char *);
extern char *weechat_plugin_get_info (t_weechat_plugin *, char *, char *);
extern t_plugin_dcc_info *weechat_plugin_get_dcc_info (t_weechat_plugin *);
extern void weechat_plugin_free_dcc_info (t_weechat_plugin *, t_plugin_dcc_info *);
extern char *weechat_plugin_get_config (t_weechat_plugin *, char *);