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:
@@ -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
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 *);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 *);
|
||||
|
||||
Reference in New Issue
Block a user