mirror of
https://github.com/weechat/weechat.git
synced 2026-07-05 17:05:42 +02:00
Added "modifier" in plugins API, improved /plugin command
This commit is contained in:
+412
-8
File diff suppressed because it is too large
Load Diff
@@ -128,13 +128,19 @@ functions: list internal functions for key bindings
|
||||
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
|
||||
|
||||
</programlisting>
|
||||
<command>plugin [load Dateiname] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [mask]] | [listfull [mask]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
|
||||
<programlisting>
|
||||
auflisten/laden/entladen von Plugins
|
||||
|
||||
Dateiname: zu ladendes Plugin
|
||||
list: list loaded plugins
|
||||
listfull: list loaded plugins with detailed info for each plugin
|
||||
mask: part of name of a loaded plugin
|
||||
load: load a plugin
|
||||
autoload: autoload plugins in system or user directory
|
||||
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
|
||||
unload: unload one or all plugins
|
||||
|
||||
Ohne Argumente werden alle geladenen Plugins aufgelistet.
|
||||
Without argument, /plugin command lists loaded plugins.
|
||||
|
||||
</programlisting>
|
||||
<command>server [Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname Name] [-command Befehl] [-autojoin Channel[,Channel]] ] | [del Servername]</command>
|
||||
|
||||
+413
-9
File diff suppressed because it is too large
Load Diff
@@ -127,13 +127,19 @@ functions: list internal functions for key bindings
|
||||
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
|
||||
|
||||
</programlisting>
|
||||
<command>plugin [load filename] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [mask]] | [listfull [mask]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
|
||||
<programlisting>
|
||||
list/load/unload plugins
|
||||
|
||||
filename: WeeChat plugin (file) to load
|
||||
list: list loaded plugins
|
||||
listfull: list loaded plugins with detailed info for each plugin
|
||||
mask: part of name of a loaded plugin
|
||||
load: load a plugin
|
||||
autoload: autoload plugins in system or user directory
|
||||
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
|
||||
unload: unload one or all plugins
|
||||
|
||||
Without argument, /plugin command lists all loaded plugins.
|
||||
Without argument, /plugin command lists loaded plugins.
|
||||
|
||||
</programlisting>
|
||||
<command>server [servername] | [servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 nick2 nick3] [-username username] [-realname realname] [-command command] [-autojoin channel[,channel]] ] | [del servername]</command>
|
||||
|
||||
+426
-12
File diff suppressed because it is too large
Load Diff
@@ -127,13 +127,19 @@ functions: lister la liste des fonctions internes pour les associations de touch
|
||||
reset: restaure les touches aux valeurs par défaut et supprime TOUTES les touches personnelles (utiliser avec précaution !)
|
||||
|
||||
</programlisting>
|
||||
<command>plugin [load fichier] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [masque]] | [listfull [masque]] | [load fichier] | [autoload] | [reload [nom]] | [unload [nom]]</command>
|
||||
<programlisting>
|
||||
liste/charge/décharge des extensions
|
||||
|
||||
fichier: extension WeeChat (fichier) à charger
|
||||
list: lister les extensions chargées
|
||||
listfull: lister les extensions chargées avec de l'info détaillée pour chaque extension
|
||||
masque: morceau de nom d'une extension chargée
|
||||
load: charger une extension
|
||||
autoload: charger automatiquement les extensions dans un répertoire système ou utilisateur
|
||||
reload: recharger une extension (si pas de nom donné, décharger toutes les extensions, puis puis recharger automatiquement les extensions)
|
||||
unload: décharger une ou plusieurs exteneions
|
||||
|
||||
Sans paramètre, la commande /plugin liste toutes les extensions chargées.
|
||||
Sans paramètre, la commande /plugin liste les extensions chargées.
|
||||
|
||||
</programlisting>
|
||||
<command>server [nom_serveur] | [nom_serveur nom/IP port [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks pseudo1 pseudo2 pseudo3] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [del nom_serveur]</command>
|
||||
|
||||
+395
-364
File diff suppressed because it is too large
Load Diff
+184
-111
File diff suppressed because it is too large
Load Diff
@@ -154,7 +154,7 @@ completion_get_command_infos (t_completion *completion,
|
||||
for (ptr_handler = ptr_plugin->handlers;
|
||||
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
||||
{
|
||||
if ((ptr_handler->type == HANDLER_COMMAND)
|
||||
if ((ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||
&& (ascii_strcasecmp (ptr_handler->command,
|
||||
ptr_command2) == 0))
|
||||
{
|
||||
@@ -304,7 +304,7 @@ completion_list_add_plugin_cmd (t_completion *completion)
|
||||
for (ptr_handler = ptr_plugin->handlers;
|
||||
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
||||
{
|
||||
if (ptr_handler->type == HANDLER_COMMAND)
|
||||
if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||
completion_list_add (completion, ptr_handler->command);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ gui_main_loop ()
|
||||
if ((ptr_server->lag_check_time.tv_sec == 0)
|
||||
&& (new_time >= ptr_server->lag_next_check))
|
||||
{
|
||||
server_sendf (ptr_server, "PING %s\r\n", ptr_server->address);
|
||||
server_sendf (ptr_server, "PING %s", ptr_server->address);
|
||||
gettimeofday (&(ptr_server->lag_check_time), NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -360,10 +360,11 @@ gui_printf_internal (t_gui_buffer *buffer, int display_time, int type, char *nic
|
||||
|
||||
/*
|
||||
* gui_printf_raw_data: display raw IRC data (only if raw IRC data buffer exists)
|
||||
* type: 0 = recv, 1 = send, -1 = recv, modified by a modifier (plugin)
|
||||
*/
|
||||
|
||||
void
|
||||
gui_printf_raw_data (void *server, int send, char *message)
|
||||
gui_printf_raw_data (void *server, int send, int modified, char *message)
|
||||
{
|
||||
char *pos;
|
||||
|
||||
@@ -381,7 +382,8 @@ gui_printf_raw_data (void *server, int send, char *message)
|
||||
((t_irc_server *)server)->name,
|
||||
GUI_COLOR(COLOR_WIN_CHAT_DARK),
|
||||
GUI_COLOR((send) ? COLOR_WIN_CHAT_PART : COLOR_WIN_CHAT_JOIN),
|
||||
(send) ? PREFIX_PART : PREFIX_JOIN,
|
||||
(send) ? ((modified) ? PREFIX_SEND_MOD : PREFIX_PART) :
|
||||
((modified) ? PREFIX_RECV_MOD : PREFIX_JOIN),
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
message);
|
||||
if (pos)
|
||||
|
||||
+1
-1
@@ -184,7 +184,7 @@ extern void gui_infobar_remove_all ();
|
||||
extern int gui_word_strlen (t_gui_window *, char *);
|
||||
extern int gui_word_real_pos (t_gui_window *, char *, int);
|
||||
extern void gui_printf_internal (t_gui_buffer *, int, int, char *, char *, ...);
|
||||
extern void gui_printf_raw_data (void *, int, char *);
|
||||
extern void gui_printf_raw_data (void *, int, int, char *);
|
||||
extern void gui_input_optimize_size (t_gui_buffer *);
|
||||
extern void gui_input_init_color_mask (t_gui_buffer *);
|
||||
extern void gui_input_move (t_gui_buffer *, char *, char *, int );
|
||||
|
||||
@@ -427,7 +427,7 @@ channel_check_away (t_irc_server *server, t_irc_channel *channel, int force)
|
||||
(channel->nicks_count <= cfg_irc_away_check_max_nicks))
|
||||
{
|
||||
channel->checking_away++;
|
||||
server_sendf (server, "WHO %s\r\n", channel->name);
|
||||
server_sendf (server, "WHO %s", channel->name);
|
||||
}
|
||||
else
|
||||
channel_remove_away (channel);
|
||||
|
||||
+7
-7
@@ -632,8 +632,8 @@ dcc_accept (t_irc_dcc *ptr_dcc)
|
||||
ptr_dcc->status = DCC_CONNECTING;
|
||||
server_sendf (ptr_dcc->server,
|
||||
(strchr (ptr_dcc->filename, ' ')) ?
|
||||
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC RESUME %s %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC RESUME %s %d %u\01",
|
||||
ptr_dcc->nick, ptr_dcc->filename,
|
||||
ptr_dcc->port, ptr_dcc->start_resume);
|
||||
dcc_redraw (HOTLIST_MSG);
|
||||
@@ -661,8 +661,8 @@ dcc_accept_resume (t_irc_server *server, char *filename, int port,
|
||||
ptr_dcc->last_check_pos = pos_start;
|
||||
server_sendf (ptr_dcc->server,
|
||||
(strchr (ptr_dcc->filename, ' ')) ?
|
||||
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01",
|
||||
ptr_dcc->nick, ptr_dcc->filename,
|
||||
ptr_dcc->port, ptr_dcc->start_resume);
|
||||
|
||||
@@ -1158,13 +1158,13 @@ dcc_send_request (t_irc_server *server, int type, char *nick, char *filename)
|
||||
/* send DCC request to nick */
|
||||
if (type == DCC_CHAT_SEND)
|
||||
server_sendf (server,
|
||||
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01\r\n",
|
||||
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01",
|
||||
nick, local_addr, port);
|
||||
else
|
||||
server_sendf (server,
|
||||
(spaces) ?
|
||||
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01",
|
||||
nick, short_filename, local_addr, port,
|
||||
(unsigned long) st.st_size);
|
||||
|
||||
|
||||
+11
-11
@@ -725,7 +725,7 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *nick, char *arguments
|
||||
nick);
|
||||
}
|
||||
irc_mode_channel_set (ptr_channel, pos_modes);
|
||||
server_sendf (server, "MODE %s\r\n", ptr_channel->name);
|
||||
server_sendf (server, "MODE %s", ptr_channel->name);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1180,7 +1180,7 @@ irc_cmd_recv_ping (t_irc_server *server, char *host, char *nick, char *arguments
|
||||
pos = strrchr (arguments, ' ');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
server_sendf (server, "PONG :%s\r\n", arguments);
|
||||
server_sendf (server, "PONG :%s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1253,7 +1253,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
|
||||
"%s %s / %s%s",
|
||||
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
|
||||
&buf->sysname,
|
||||
&buf->release, &buf->machine, "\01\r\n");
|
||||
&buf->release, &buf->machine, "\01");
|
||||
free (buf);
|
||||
}
|
||||
else
|
||||
@@ -1261,7 +1261,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
|
||||
"NOTICE %s :%sVERSION %s v%s"
|
||||
" compiled on %s%s",
|
||||
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
|
||||
"\01\r\n");
|
||||
"\01");
|
||||
irc_display_prefix (server, ptr_buffer, PREFIX_SERVER);
|
||||
gui_printf (ptr_buffer,
|
||||
_("CTCP %sVERSION%s received from %s%s"),
|
||||
@@ -1408,10 +1408,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
|
||||
if (pos && !pos[0])
|
||||
pos = NULL;
|
||||
if (pos)
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01",
|
||||
nick, pos);
|
||||
else
|
||||
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING\01",
|
||||
nick);
|
||||
irc_display_prefix (server, ptr_channel->buffer, PREFIX_SERVER);
|
||||
gui_printf (ptr_channel->buffer,
|
||||
@@ -1549,10 +1549,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
|
||||
if (pos && !pos[0])
|
||||
pos = NULL;
|
||||
if (pos)
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01",
|
||||
nick, pos);
|
||||
else
|
||||
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING\01",
|
||||
nick);
|
||||
irc_display_prefix (server, server->buffer, PREFIX_SERVER);
|
||||
gui_printf (server->buffer,
|
||||
@@ -2414,10 +2414,10 @@ irc_cmd_recv_001 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
if (ptr_channel->type == CHANNEL_TYPE_CHANNEL)
|
||||
{
|
||||
if (ptr_channel->key)
|
||||
server_sendf (server, "JOIN %s %s\r\n",
|
||||
server_sendf (server, "JOIN %s %s",
|
||||
ptr_channel->name, ptr_channel->key);
|
||||
else
|
||||
server_sendf (server, "JOIN %s\r\n",
|
||||
server_sendf (server, "JOIN %s",
|
||||
ptr_channel->name);
|
||||
}
|
||||
}
|
||||
@@ -4811,7 +4811,7 @@ irc_cmd_recv_433 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
if (!hostname[0])
|
||||
strcpy (hostname, _("unknown"));
|
||||
server_sendf (server,
|
||||
"NICK %s\r\n",
|
||||
"NICK %s",
|
||||
server->nick);
|
||||
}
|
||||
else
|
||||
|
||||
+94
-94
File diff suppressed because it is too large
Load Diff
+215
-86
File diff suppressed because it is too large
Load Diff
@@ -50,6 +50,8 @@
|
||||
#define PREFIX_QUIT "<--"
|
||||
#define PREFIX_ERROR "=!="
|
||||
#define PREFIX_PLUGIN "-P-"
|
||||
#define PREFIX_RECV_MOD "==>"
|
||||
#define PREFIX_SEND_MOD "<=="
|
||||
|
||||
#define DEFAULT_IRC_PORT 6667
|
||||
|
||||
@@ -345,6 +347,7 @@ extern char *server_get_charset_decode_utf (t_irc_server *);
|
||||
extern char *server_get_charset_encode (t_irc_server *);
|
||||
extern int server_send (t_irc_server *, char *, int);
|
||||
extern void server_sendf (t_irc_server *, char *, ...);
|
||||
extern void server_parse_message (char *, char **, char **, char **);
|
||||
extern void server_recv (t_irc_server *);
|
||||
extern void server_child_read (t_irc_server *);
|
||||
extern int server_connect (t_irc_server *);
|
||||
|
||||
@@ -356,6 +356,46 @@ weechat_plugin_handler_remove_all (t_weechat_plugin *plugin)
|
||||
plugin_handler_remove_all (plugin);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_plugin_modifier_add: add a IRC message modifier
|
||||
*/
|
||||
|
||||
t_plugin_modifier *
|
||||
weechat_plugin_modifier_add (t_weechat_plugin *plugin,
|
||||
char *type, char *message,
|
||||
t_plugin_modifier_func *modifier_func,
|
||||
char *modifier_args, void *modifier_pointer)
|
||||
{
|
||||
if (plugin && type && modifier_func)
|
||||
return plugin_modifier_add (plugin, type, message, modifier_func,
|
||||
modifier_args, modifier_pointer);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_plugin_modifier_remove: remove a WeeChat modifier
|
||||
*/
|
||||
|
||||
void
|
||||
weechat_plugin_modifier_remove (t_weechat_plugin *plugin,
|
||||
t_plugin_modifier *modifier)
|
||||
{
|
||||
if (plugin && modifier)
|
||||
plugin_modifier_remove (plugin, modifier);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_plugin_modifier_remove_all: remove all WeeChat modifiers
|
||||
*/
|
||||
|
||||
void
|
||||
weechat_plugin_modifier_remove_all (t_weechat_plugin *plugin)
|
||||
{
|
||||
if (plugin)
|
||||
plugin_modifier_remove_all (plugin);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_plugin_exec_command: execute a command (simulate user entry)
|
||||
*/
|
||||
|
||||
+251
-14
File diff suppressed because it is too large
Load Diff
@@ -68,12 +68,21 @@ extern int plugin_keyboard_handler_exec (char *, char *, char *);
|
||||
extern void plugin_handler_remove (t_weechat_plugin *,
|
||||
t_plugin_handler *);
|
||||
extern void plugin_handler_remove_all (t_weechat_plugin *);
|
||||
extern t_plugin_modifier *plugin_modifier_add (t_weechat_plugin *,
|
||||
char *, char *,
|
||||
t_plugin_modifier_func *,
|
||||
char *, void *);
|
||||
extern char *plugin_modifier_exec (t_plugin_modifier_type, char *, char *);
|
||||
extern void plugin_modifier_remove (t_weechat_plugin *,
|
||||
t_plugin_modifier *);
|
||||
extern void plugin_modifier_remove_all (t_weechat_plugin *);
|
||||
extern t_weechat_plugin *plugin_load (char *);
|
||||
extern void plugin_auto_load ();
|
||||
extern void plugin_remove (t_weechat_plugin *);
|
||||
extern void plugin_unload (t_weechat_plugin *);
|
||||
extern void plugin_unload_name (char *);
|
||||
extern void plugin_unload_all ();
|
||||
extern void plugin_reload_name (char *);
|
||||
extern void plugin_init (int);
|
||||
extern void plugin_end ();
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -293,9 +293,9 @@ weechat_script_remove_handler (t_weechat_plugin *plugin,
|
||||
while (ptr_handler)
|
||||
{
|
||||
ptr_arg1 = NULL;
|
||||
if (ptr_handler->type == HANDLER_MESSAGE)
|
||||
if (ptr_handler->type == PLUGIN_HANDLER_MESSAGE)
|
||||
ptr_arg1 = ptr_handler->irc_command;
|
||||
else if (ptr_handler->type == HANDLER_COMMAND)
|
||||
else if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||
ptr_arg1 = ptr_handler->command;
|
||||
|
||||
if ((ptr_arg1)
|
||||
@@ -327,7 +327,7 @@ weechat_script_remove_timer_handler (t_weechat_plugin *plugin,
|
||||
ptr_handler = plugin->handlers;
|
||||
while (ptr_handler)
|
||||
{
|
||||
if ((ptr_handler->type == HANDLER_TIMER)
|
||||
if ((ptr_handler->type == PLUGIN_HANDLER_TIMER)
|
||||
&& ((t_plugin_script *)ptr_handler->handler_pointer == script)
|
||||
&& (plugin->ascii_strcasecmp (plugin, ptr_handler->handler_args, function) == 0))
|
||||
{
|
||||
@@ -355,7 +355,7 @@ weechat_script_remove_keyboard_handler (t_weechat_plugin *plugin,
|
||||
ptr_handler = plugin->handlers;
|
||||
while (ptr_handler)
|
||||
{
|
||||
if ((ptr_handler->type == HANDLER_KEYBOARD)
|
||||
if ((ptr_handler->type == PLUGIN_HANDLER_KEYBOARD)
|
||||
&& ((t_plugin_script *)ptr_handler->handler_pointer == script)
|
||||
&& (plugin->ascii_strcasecmp (plugin, ptr_handler->handler_args, function) == 0))
|
||||
{
|
||||
@@ -368,6 +368,51 @@ weechat_script_remove_keyboard_handler (t_weechat_plugin *plugin,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_script_remove_modifier: remove a modifier
|
||||
* arg1=type, arg2=command, arg3=function
|
||||
*/
|
||||
|
||||
void
|
||||
weechat_script_remove_modifier (t_weechat_plugin *plugin,
|
||||
t_plugin_script *script,
|
||||
char *arg1, char *arg2, char *arg3)
|
||||
{
|
||||
t_plugin_modifier *ptr_modifier, *next_modifier;
|
||||
t_plugin_modifier_type type;
|
||||
char *ptr_arg2;
|
||||
|
||||
if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_IN_STR) == 0)
|
||||
type = PLUGIN_MODIFIER_IRC_IN;
|
||||
else if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_USER_STR) == 0)
|
||||
type = PLUGIN_MODIFIER_IRC_USER;
|
||||
else if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_OUT_STR) == 0)
|
||||
type = PLUGIN_MODIFIER_IRC_OUT;
|
||||
else
|
||||
return;
|
||||
|
||||
/* search and remove modifiers */
|
||||
ptr_modifier = plugin->modifiers;
|
||||
while (ptr_modifier)
|
||||
{
|
||||
ptr_arg2 = NULL;
|
||||
if (ptr_modifier->type == type)
|
||||
ptr_arg2 = ptr_modifier->command;
|
||||
|
||||
if ((ptr_arg2)
|
||||
&& ((t_plugin_script *)ptr_modifier->modifier_pointer == script)
|
||||
&& (plugin->ascii_strcasecmp (plugin, ptr_arg2, arg2) == 0)
|
||||
&& (plugin->ascii_strcasecmp (plugin, ptr_modifier->modifier_args, arg3) == 0))
|
||||
{
|
||||
next_modifier = ptr_modifier->next_modifier;
|
||||
plugin->modifier_remove (plugin, ptr_modifier);
|
||||
ptr_modifier = next_modifier;
|
||||
}
|
||||
else
|
||||
ptr_modifier = ptr_modifier->next_modifier;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_script_get_plugin_config: get a value of a script option
|
||||
* format in file is: plugin.script.option=value
|
||||
|
||||
@@ -59,6 +59,9 @@ extern void weechat_script_remove_timer_handler (t_weechat_plugin *,
|
||||
extern void weechat_script_remove_keyboard_handler (t_weechat_plugin *,
|
||||
t_plugin_script *,
|
||||
char *);
|
||||
extern void weechat_script_remove_modifier (t_weechat_plugin *,
|
||||
t_plugin_script *,
|
||||
char *, char *, char *);
|
||||
extern char *weechat_script_get_plugin_config (t_weechat_plugin *,
|
||||
t_plugin_script *,
|
||||
char *);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -128,13 +128,19 @@ functions: list internal functions for key bindings
|
||||
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
|
||||
|
||||
</programlisting>
|
||||
<command>plugin [load Dateiname] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [mask]] | [listfull [mask]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
|
||||
<programlisting>
|
||||
auflisten/laden/entladen von Plugins
|
||||
|
||||
Dateiname: zu ladendes Plugin
|
||||
list: list loaded plugins
|
||||
listfull: list loaded plugins with detailed info for each plugin
|
||||
mask: part of name of a loaded plugin
|
||||
load: load a plugin
|
||||
autoload: autoload plugins in system or user directory
|
||||
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
|
||||
unload: unload one or all plugins
|
||||
|
||||
Ohne Argumente werden alle geladenen Plugins aufgelistet.
|
||||
Without argument, /plugin command lists loaded plugins.
|
||||
|
||||
</programlisting>
|
||||
<command>server [Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname Name] [-command Befehl] [-autojoin Channel[,Channel]] ] | [del Servername]</command>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -127,13 +127,19 @@ functions: list internal functions for key bindings
|
||||
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
|
||||
|
||||
</programlisting>
|
||||
<command>plugin [load filename] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [mask]] | [listfull [mask]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
|
||||
<programlisting>
|
||||
list/load/unload plugins
|
||||
|
||||
filename: WeeChat plugin (file) to load
|
||||
list: list loaded plugins
|
||||
listfull: list loaded plugins with detailed info for each plugin
|
||||
mask: part of name of a loaded plugin
|
||||
load: load a plugin
|
||||
autoload: autoload plugins in system or user directory
|
||||
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
|
||||
unload: unload one or all plugins
|
||||
|
||||
Without argument, /plugin command lists all loaded plugins.
|
||||
Without argument, /plugin command lists loaded plugins.
|
||||
|
||||
</programlisting>
|
||||
<command>server [servername] | [servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 nick2 nick3] [-username username] [-realname realname] [-command command] [-autojoin channel[,channel]] ] | [del servername]</command>
|
||||
|
||||
+426
-12
File diff suppressed because it is too large
Load Diff
@@ -127,13 +127,19 @@ functions: lister la liste des fonctions internes pour les associations de touch
|
||||
reset: restaure les touches aux valeurs par défaut et supprime TOUTES les touches personnelles (utiliser avec précaution !)
|
||||
|
||||
</programlisting>
|
||||
<command>plugin [load fichier] | [autoload] | [reload] | [unload]</command>
|
||||
<command>plugin [list [masque]] | [listfull [masque]] | [load fichier] | [autoload] | [reload [nom]] | [unload [nom]]</command>
|
||||
<programlisting>
|
||||
liste/charge/décharge des extensions
|
||||
|
||||
fichier: extension WeeChat (fichier) à charger
|
||||
list: lister les extensions chargées
|
||||
listfull: lister les extensions chargées avec de l'info détaillée pour chaque extension
|
||||
masque: morceau de nom d'une extension chargée
|
||||
load: charger une extension
|
||||
autoload: charger automatiquement les extensions dans un répertoire système ou utilisateur
|
||||
reload: recharger une extension (si pas de nom donné, décharger toutes les extensions, puis puis recharger automatiquement les extensions)
|
||||
unload: décharger une ou plusieurs exteneions
|
||||
|
||||
Sans paramètre, la commande /plugin liste toutes les extensions chargées.
|
||||
Sans paramètre, la commande /plugin liste les extensions chargées.
|
||||
|
||||
</programlisting>
|
||||
<command>server [nom_serveur] | [nom_serveur nom/IP port [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks pseudo1 pseudo2 pseudo3] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [del nom_serveur]</command>
|
||||
|
||||
+405
-364
File diff suppressed because it is too large
Load Diff
+405
-364
File diff suppressed because it is too large
Load Diff
+407
-364
File diff suppressed because it is too large
Load Diff
+417
-365
File diff suppressed because it is too large
Load Diff
+405
-364
File diff suppressed because it is too large
Load Diff
+406
-365
File diff suppressed because it is too large
Load Diff
+395
-364
File diff suppressed because it is too large
Load Diff
+184
-111
File diff suppressed because it is too large
Load Diff
@@ -154,7 +154,7 @@ completion_get_command_infos (t_completion *completion,
|
||||
for (ptr_handler = ptr_plugin->handlers;
|
||||
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
||||
{
|
||||
if ((ptr_handler->type == HANDLER_COMMAND)
|
||||
if ((ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||
&& (ascii_strcasecmp (ptr_handler->command,
|
||||
ptr_command2) == 0))
|
||||
{
|
||||
@@ -304,7 +304,7 @@ completion_list_add_plugin_cmd (t_completion *completion)
|
||||
for (ptr_handler = ptr_plugin->handlers;
|
||||
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
||||
{
|
||||
if (ptr_handler->type == HANDLER_COMMAND)
|
||||
if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||
completion_list_add (completion, ptr_handler->command);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ gui_main_loop ()
|
||||
if ((ptr_server->lag_check_time.tv_sec == 0)
|
||||
&& (new_time >= ptr_server->lag_next_check))
|
||||
{
|
||||
server_sendf (ptr_server, "PING %s\r\n", ptr_server->address);
|
||||
server_sendf (ptr_server, "PING %s", ptr_server->address);
|
||||
gettimeofday (&(ptr_server->lag_check_time), NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -360,10 +360,11 @@ gui_printf_internal (t_gui_buffer *buffer, int display_time, int type, char *nic
|
||||
|
||||
/*
|
||||
* gui_printf_raw_data: display raw IRC data (only if raw IRC data buffer exists)
|
||||
* type: 0 = recv, 1 = send, -1 = recv, modified by a modifier (plugin)
|
||||
*/
|
||||
|
||||
void
|
||||
gui_printf_raw_data (void *server, int send, char *message)
|
||||
gui_printf_raw_data (void *server, int send, int modified, char *message)
|
||||
{
|
||||
char *pos;
|
||||
|
||||
@@ -381,7 +382,8 @@ gui_printf_raw_data (void *server, int send, char *message)
|
||||
((t_irc_server *)server)->name,
|
||||
GUI_COLOR(COLOR_WIN_CHAT_DARK),
|
||||
GUI_COLOR((send) ? COLOR_WIN_CHAT_PART : COLOR_WIN_CHAT_JOIN),
|
||||
(send) ? PREFIX_PART : PREFIX_JOIN,
|
||||
(send) ? ((modified) ? PREFIX_SEND_MOD : PREFIX_PART) :
|
||||
((modified) ? PREFIX_RECV_MOD : PREFIX_JOIN),
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
message);
|
||||
if (pos)
|
||||
|
||||
@@ -184,7 +184,7 @@ extern void gui_infobar_remove_all ();
|
||||
extern int gui_word_strlen (t_gui_window *, char *);
|
||||
extern int gui_word_real_pos (t_gui_window *, char *, int);
|
||||
extern void gui_printf_internal (t_gui_buffer *, int, int, char *, char *, ...);
|
||||
extern void gui_printf_raw_data (void *, int, char *);
|
||||
extern void gui_printf_raw_data (void *, int, int, char *);
|
||||
extern void gui_input_optimize_size (t_gui_buffer *);
|
||||
extern void gui_input_init_color_mask (t_gui_buffer *);
|
||||
extern void gui_input_move (t_gui_buffer *, char *, char *, int );
|
||||
|
||||
@@ -427,7 +427,7 @@ channel_check_away (t_irc_server *server, t_irc_channel *channel, int force)
|
||||
(channel->nicks_count <= cfg_irc_away_check_max_nicks))
|
||||
{
|
||||
channel->checking_away++;
|
||||
server_sendf (server, "WHO %s\r\n", channel->name);
|
||||
server_sendf (server, "WHO %s", channel->name);
|
||||
}
|
||||
else
|
||||
channel_remove_away (channel);
|
||||
|
||||
@@ -632,8 +632,8 @@ dcc_accept (t_irc_dcc *ptr_dcc)
|
||||
ptr_dcc->status = DCC_CONNECTING;
|
||||
server_sendf (ptr_dcc->server,
|
||||
(strchr (ptr_dcc->filename, ' ')) ?
|
||||
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC RESUME %s %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC RESUME %s %d %u\01",
|
||||
ptr_dcc->nick, ptr_dcc->filename,
|
||||
ptr_dcc->port, ptr_dcc->start_resume);
|
||||
dcc_redraw (HOTLIST_MSG);
|
||||
@@ -661,8 +661,8 @@ dcc_accept_resume (t_irc_server *server, char *filename, int port,
|
||||
ptr_dcc->last_check_pos = pos_start;
|
||||
server_sendf (ptr_dcc->server,
|
||||
(strchr (ptr_dcc->filename, ' ')) ?
|
||||
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01",
|
||||
ptr_dcc->nick, ptr_dcc->filename,
|
||||
ptr_dcc->port, ptr_dcc->start_resume);
|
||||
|
||||
@@ -1158,13 +1158,13 @@ dcc_send_request (t_irc_server *server, int type, char *nick, char *filename)
|
||||
/* send DCC request to nick */
|
||||
if (type == DCC_CHAT_SEND)
|
||||
server_sendf (server,
|
||||
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01\r\n",
|
||||
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01",
|
||||
nick, local_addr, port);
|
||||
else
|
||||
server_sendf (server,
|
||||
(spaces) ?
|
||||
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01",
|
||||
nick, short_filename, local_addr, port,
|
||||
(unsigned long) st.st_size);
|
||||
|
||||
|
||||
+11
-11
@@ -725,7 +725,7 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *nick, char *arguments
|
||||
nick);
|
||||
}
|
||||
irc_mode_channel_set (ptr_channel, pos_modes);
|
||||
server_sendf (server, "MODE %s\r\n", ptr_channel->name);
|
||||
server_sendf (server, "MODE %s", ptr_channel->name);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1180,7 +1180,7 @@ irc_cmd_recv_ping (t_irc_server *server, char *host, char *nick, char *arguments
|
||||
pos = strrchr (arguments, ' ');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
server_sendf (server, "PONG :%s\r\n", arguments);
|
||||
server_sendf (server, "PONG :%s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1253,7 +1253,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
|
||||
"%s %s / %s%s",
|
||||
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
|
||||
&buf->sysname,
|
||||
&buf->release, &buf->machine, "\01\r\n");
|
||||
&buf->release, &buf->machine, "\01");
|
||||
free (buf);
|
||||
}
|
||||
else
|
||||
@@ -1261,7 +1261,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
|
||||
"NOTICE %s :%sVERSION %s v%s"
|
||||
" compiled on %s%s",
|
||||
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
|
||||
"\01\r\n");
|
||||
"\01");
|
||||
irc_display_prefix (server, ptr_buffer, PREFIX_SERVER);
|
||||
gui_printf (ptr_buffer,
|
||||
_("CTCP %sVERSION%s received from %s%s"),
|
||||
@@ -1408,10 +1408,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
|
||||
if (pos && !pos[0])
|
||||
pos = NULL;
|
||||
if (pos)
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01",
|
||||
nick, pos);
|
||||
else
|
||||
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING\01",
|
||||
nick);
|
||||
irc_display_prefix (server, ptr_channel->buffer, PREFIX_SERVER);
|
||||
gui_printf (ptr_channel->buffer,
|
||||
@@ -1549,10 +1549,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
|
||||
if (pos && !pos[0])
|
||||
pos = NULL;
|
||||
if (pos)
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01",
|
||||
nick, pos);
|
||||
else
|
||||
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING\01",
|
||||
nick);
|
||||
irc_display_prefix (server, server->buffer, PREFIX_SERVER);
|
||||
gui_printf (server->buffer,
|
||||
@@ -2414,10 +2414,10 @@ irc_cmd_recv_001 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
if (ptr_channel->type == CHANNEL_TYPE_CHANNEL)
|
||||
{
|
||||
if (ptr_channel->key)
|
||||
server_sendf (server, "JOIN %s %s\r\n",
|
||||
server_sendf (server, "JOIN %s %s",
|
||||
ptr_channel->name, ptr_channel->key);
|
||||
else
|
||||
server_sendf (server, "JOIN %s\r\n",
|
||||
server_sendf (server, "JOIN %s",
|
||||
ptr_channel->name);
|
||||
}
|
||||
}
|
||||
@@ -4811,7 +4811,7 @@ irc_cmd_recv_433 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
if (!hostname[0])
|
||||
strcpy (hostname, _("unknown"));
|
||||
server_sendf (server,
|
||||
"NICK %s\r\n",
|
||||
"NICK %s",
|
||||
server->nick);
|
||||
}
|
||||
else
|
||||
|
||||
+94
-94
File diff suppressed because it is too large
Load Diff
+215
-86
File diff suppressed because it is too large
Load Diff
@@ -50,6 +50,8 @@
|
||||
#define PREFIX_QUIT "<--"
|
||||
#define PREFIX_ERROR "=!="
|
||||
#define PREFIX_PLUGIN "-P-"
|
||||
#define PREFIX_RECV_MOD "==>"
|
||||
#define PREFIX_SEND_MOD "<=="
|
||||
|
||||
#define DEFAULT_IRC_PORT 6667
|
||||
|
||||
@@ -345,6 +347,7 @@ extern char *server_get_charset_decode_utf (t_irc_server *);
|
||||
extern char *server_get_charset_encode (t_irc_server *);
|
||||
extern int server_send (t_irc_server *, char *, int);
|
||||
extern void server_sendf (t_irc_server *, char *, ...);
|
||||
extern void server_parse_message (char *, char **, char **, char **);
|
||||
extern void server_recv (t_irc_server *);
|
||||
extern void server_child_read (t_irc_server *);
|
||||
extern int server_connect (t_irc_server *);
|
||||
|
||||
@@ -356,6 +356,46 @@ weechat_plugin_handler_remove_all (t_weechat_plugin *plugin)
|
||||
plugin_handler_remove_all (plugin);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_plugin_modifier_add: add a IRC message modifier
|
||||
*/
|
||||
|
||||
t_plugin_modifier *
|
||||
weechat_plugin_modifier_add (t_weechat_plugin *plugin,
|
||||
char *type, char *message,
|
||||
t_plugin_modifier_func *modifier_func,
|
||||
char *modifier_args, void *modifier_pointer)
|
||||
{
|
||||
if (plugin && type && modifier_func)
|
||||
return plugin_modifier_add (plugin, type, message, modifier_func,
|
||||
modifier_args, modifier_pointer);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_plugin_modifier_remove: remove a WeeChat modifier
|
||||
*/
|
||||
|
||||
void
|
||||
weechat_plugin_modifier_remove (t_weechat_plugin *plugin,
|
||||
t_plugin_modifier *modifier)
|
||||
{
|
||||
if (plugin && modifier)
|
||||
plugin_modifier_remove (plugin, modifier);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_plugin_modifier_remove_all: remove all WeeChat modifiers
|
||||
*/
|
||||
|
||||
void
|
||||
weechat_plugin_modifier_remove_all (t_weechat_plugin *plugin)
|
||||
{
|
||||
if (plugin)
|
||||
plugin_modifier_remove_all (plugin);
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_plugin_exec_command: execute a command (simulate user entry)
|
||||
*/
|
||||
|
||||
+251
-14
File diff suppressed because it is too large
Load Diff
@@ -68,12 +68,21 @@ extern int plugin_keyboard_handler_exec (char *, char *, char *);
|
||||
extern void plugin_handler_remove (t_weechat_plugin *,
|
||||
t_plugin_handler *);
|
||||
extern void plugin_handler_remove_all (t_weechat_plugin *);
|
||||
extern t_plugin_modifier *plugin_modifier_add (t_weechat_plugin *,
|
||||
char *, char *,
|
||||
t_plugin_modifier_func *,
|
||||
char *, void *);
|
||||
extern char *plugin_modifier_exec (t_plugin_modifier_type, char *, char *);
|
||||
extern void plugin_modifier_remove (t_weechat_plugin *,
|
||||
t_plugin_modifier *);
|
||||
extern void plugin_modifier_remove_all (t_weechat_plugin *);
|
||||
extern t_weechat_plugin *plugin_load (char *);
|
||||
extern void plugin_auto_load ();
|
||||
extern void plugin_remove (t_weechat_plugin *);
|
||||
extern void plugin_unload (t_weechat_plugin *);
|
||||
extern void plugin_unload_name (char *);
|
||||
extern void plugin_unload_all ();
|
||||
extern void plugin_reload_name (char *);
|
||||
extern void plugin_init (int);
|
||||
extern void plugin_end ();
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -293,9 +293,9 @@ weechat_script_remove_handler (t_weechat_plugin *plugin,
|
||||
while (ptr_handler)
|
||||
{
|
||||
ptr_arg1 = NULL;
|
||||
if (ptr_handler->type == HANDLER_MESSAGE)
|
||||
if (ptr_handler->type == PLUGIN_HANDLER_MESSAGE)
|
||||
ptr_arg1 = ptr_handler->irc_command;
|
||||
else if (ptr_handler->type == HANDLER_COMMAND)
|
||||
else if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||
ptr_arg1 = ptr_handler->command;
|
||||
|
||||
if ((ptr_arg1)
|
||||
@@ -327,7 +327,7 @@ weechat_script_remove_timer_handler (t_weechat_plugin *plugin,
|
||||
ptr_handler = plugin->handlers;
|
||||
while (ptr_handler)
|
||||
{
|
||||
if ((ptr_handler->type == HANDLER_TIMER)
|
||||
if ((ptr_handler->type == PLUGIN_HANDLER_TIMER)
|
||||
&& ((t_plugin_script *)ptr_handler->handler_pointer == script)
|
||||
&& (plugin->ascii_strcasecmp (plugin, ptr_handler->handler_args, function) == 0))
|
||||
{
|
||||
@@ -355,7 +355,7 @@ weechat_script_remove_keyboard_handler (t_weechat_plugin *plugin,
|
||||
ptr_handler = plugin->handlers;
|
||||
while (ptr_handler)
|
||||
{
|
||||
if ((ptr_handler->type == HANDLER_KEYBOARD)
|
||||
if ((ptr_handler->type == PLUGIN_HANDLER_KEYBOARD)
|
||||
&& ((t_plugin_script *)ptr_handler->handler_pointer == script)
|
||||
&& (plugin->ascii_strcasecmp (plugin, ptr_handler->handler_args, function) == 0))
|
||||
{
|
||||
@@ -368,6 +368,51 @@ weechat_script_remove_keyboard_handler (t_weechat_plugin *plugin,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_script_remove_modifier: remove a modifier
|
||||
* arg1=type, arg2=command, arg3=function
|
||||
*/
|
||||
|
||||
void
|
||||
weechat_script_remove_modifier (t_weechat_plugin *plugin,
|
||||
t_plugin_script *script,
|
||||
char *arg1, char *arg2, char *arg3)
|
||||
{
|
||||
t_plugin_modifier *ptr_modifier, *next_modifier;
|
||||
t_plugin_modifier_type type;
|
||||
char *ptr_arg2;
|
||||
|
||||
if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_IN_STR) == 0)
|
||||
type = PLUGIN_MODIFIER_IRC_IN;
|
||||
else if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_USER_STR) == 0)
|
||||
type = PLUGIN_MODIFIER_IRC_USER;
|
||||
else if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_OUT_STR) == 0)
|
||||
type = PLUGIN_MODIFIER_IRC_OUT;
|
||||
else
|
||||
return;
|
||||
|
||||
/* search and remove modifiers */
|
||||
ptr_modifier = plugin->modifiers;
|
||||
while (ptr_modifier)
|
||||
{
|
||||
ptr_arg2 = NULL;
|
||||
if (ptr_modifier->type == type)
|
||||
ptr_arg2 = ptr_modifier->command;
|
||||
|
||||
if ((ptr_arg2)
|
||||
&& ((t_plugin_script *)ptr_modifier->modifier_pointer == script)
|
||||
&& (plugin->ascii_strcasecmp (plugin, ptr_arg2, arg2) == 0)
|
||||
&& (plugin->ascii_strcasecmp (plugin, ptr_modifier->modifier_args, arg3) == 0))
|
||||
{
|
||||
next_modifier = ptr_modifier->next_modifier;
|
||||
plugin->modifier_remove (plugin, ptr_modifier);
|
||||
ptr_modifier = next_modifier;
|
||||
}
|
||||
else
|
||||
ptr_modifier = ptr_modifier->next_modifier;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_script_get_plugin_config: get a value of a script option
|
||||
* format in file is: plugin.script.option=value
|
||||
|
||||
@@ -59,6 +59,9 @@ extern void weechat_script_remove_timer_handler (t_weechat_plugin *,
|
||||
extern void weechat_script_remove_keyboard_handler (t_weechat_plugin *,
|
||||
t_plugin_script *,
|
||||
char *);
|
||||
extern void weechat_script_remove_modifier (t_weechat_plugin *,
|
||||
t_plugin_script *,
|
||||
char *, char *, char *);
|
||||
extern char *weechat_script_get_plugin_config (t_weechat_plugin *,
|
||||
t_plugin_script *,
|
||||
char *);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user