1
0
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:
Sebastien Helleu
2005-11-05 15:14:17 +00:00
parent d94a7d05ea
commit 5830b0ab40
6 changed files with 92 additions and 10 deletions
+4 -4
View File
@@ -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
View File
@@ -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
+2
View 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 *);
+4 -4
View File
@@ -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
View File
@@ -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
+2
View 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 *);