mirror of
https://github.com/weechat/weechat.git
synced 2026-07-02 15:53:12 +02:00
Fixed server detection when using "command" interface function from scripts
This commit is contained in:
@@ -279,14 +279,14 @@ void
|
||||
weechat_plugin_exec_command (t_weechat_plugin *plugin,
|
||||
char *server, char *channel, char *command)
|
||||
{
|
||||
t_gui_buffer *ptr_buffer;
|
||||
t_irc_server *ptr_server;
|
||||
|
||||
if (!plugin || !command)
|
||||
return;
|
||||
|
||||
ptr_buffer = plugin_find_buffer (server, channel);
|
||||
if (ptr_buffer)
|
||||
user_command (SERVER(ptr_buffer), ptr_buffer, command);
|
||||
ptr_server = plugin_find_server (server, channel);
|
||||
if (ptr_server && (ptr_server->buffer))
|
||||
user_command (ptr_server, ptr_server->buffer, command);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+40
-1
@@ -48,7 +48,7 @@ t_weechat_plugin *last_weechat_plugin = NULL;
|
||||
|
||||
|
||||
/*
|
||||
* plugin_find_buffer: find a buffer for text display or command execution
|
||||
* plugin_find_buffer: find a buffer for text display
|
||||
*/
|
||||
|
||||
t_gui_buffer *
|
||||
@@ -104,6 +104,45 @@ plugin_find_buffer (char *server, char *channel)
|
||||
return (ptr_buffer->dcc) ? gui_buffers : ptr_buffer;
|
||||
}
|
||||
|
||||
/*
|
||||
* plugin_find_server: find a server for command execution
|
||||
*/
|
||||
|
||||
t_irc_server *
|
||||
plugin_find_server (char *server, char *channel)
|
||||
{
|
||||
t_irc_server *ptr_server;
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
ptr_server = NULL;
|
||||
ptr_channel = NULL;
|
||||
|
||||
/* nothing given => return current server */
|
||||
if ((!server || !server[0]) && (!channel || !channel[0]))
|
||||
return SERVER(gui_current_window->buffer);
|
||||
else
|
||||
{
|
||||
if (server && server[0])
|
||||
return server_search (server);
|
||||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* plugin_exec_on_files: find files in a directory and execute a
|
||||
* function on each file
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#define __WEECHAT_PLUGINS_H 1
|
||||
|
||||
#include "weechat-plugin.h"
|
||||
#include "../irc/irc.h"
|
||||
#include "../gui/gui.h"
|
||||
|
||||
typedef int (t_weechat_init_func) (t_weechat_plugin *);
|
||||
@@ -31,6 +32,7 @@ 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_exec_on_files (t_weechat_plugin *, char *,
|
||||
int (*)(t_weechat_plugin *, char *));
|
||||
extern t_weechat_plugin *plugin_search (char *);
|
||||
|
||||
@@ -279,14 +279,14 @@ void
|
||||
weechat_plugin_exec_command (t_weechat_plugin *plugin,
|
||||
char *server, char *channel, char *command)
|
||||
{
|
||||
t_gui_buffer *ptr_buffer;
|
||||
t_irc_server *ptr_server;
|
||||
|
||||
if (!plugin || !command)
|
||||
return;
|
||||
|
||||
ptr_buffer = plugin_find_buffer (server, channel);
|
||||
if (ptr_buffer)
|
||||
user_command (SERVER(ptr_buffer), ptr_buffer, command);
|
||||
ptr_server = plugin_find_server (server, channel);
|
||||
if (ptr_server && (ptr_server->buffer))
|
||||
user_command (ptr_server, ptr_server->buffer, command);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -48,7 +48,7 @@ t_weechat_plugin *last_weechat_plugin = NULL;
|
||||
|
||||
|
||||
/*
|
||||
* plugin_find_buffer: find a buffer for text display or command execution
|
||||
* plugin_find_buffer: find a buffer for text display
|
||||
*/
|
||||
|
||||
t_gui_buffer *
|
||||
@@ -104,6 +104,45 @@ plugin_find_buffer (char *server, char *channel)
|
||||
return (ptr_buffer->dcc) ? gui_buffers : ptr_buffer;
|
||||
}
|
||||
|
||||
/*
|
||||
* plugin_find_server: find a server for command execution
|
||||
*/
|
||||
|
||||
t_irc_server *
|
||||
plugin_find_server (char *server, char *channel)
|
||||
{
|
||||
t_irc_server *ptr_server;
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
ptr_server = NULL;
|
||||
ptr_channel = NULL;
|
||||
|
||||
/* nothing given => return current server */
|
||||
if ((!server || !server[0]) && (!channel || !channel[0]))
|
||||
return SERVER(gui_current_window->buffer);
|
||||
else
|
||||
{
|
||||
if (server && server[0])
|
||||
return server_search (server);
|
||||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* plugin_exec_on_files: find files in a directory and execute a
|
||||
* function on each file
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#define __WEECHAT_PLUGINS_H 1
|
||||
|
||||
#include "weechat-plugin.h"
|
||||
#include "../irc/irc.h"
|
||||
#include "../gui/gui.h"
|
||||
|
||||
typedef int (t_weechat_init_func) (t_weechat_plugin *);
|
||||
@@ -31,6 +32,7 @@ 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_exec_on_files (t_weechat_plugin *, char *,
|
||||
int (*)(t_weechat_plugin *, char *));
|
||||
extern t_weechat_plugin *plugin_search (char *);
|
||||
|
||||
Reference in New Issue
Block a user