aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2012-05-08 15:05:53 +0200
committerSebastien Helleu <flashcode@flashtux.org>2012-05-08 15:05:53 +0200
commit370a5ccb6198f6e9b1ee505e915b051885915b57 (patch)
tree5af0babd6666e5189e5c5f3132fab8e6bbaa9c14
parentdoc: fix typo in python example of infolist_get (plugin API reference) (diff)
downloadweechat-370a5ccb6198f6e9b1ee505e915b051885915b57.tar.xz
weechat-370a5ccb6198f6e9b1ee505e915b051885915b57.zip
irc: add option "fakerecv" for command /server to simulate a received IRC message (not documented, for debug only)
-rw-r--r--ChangeLog4
-rw-r--r--src/plugins/irc/irc-command.c28
-rw-r--r--src/plugins/irc/irc-server.h3
3 files changed, 32 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 06598de96..d33090dab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
WeeChat ChangeLog
=================
Sébastien Helleu <flashcode@flashtux.org>
-v0.3.8-dev, 2012-05-04
+v0.3.8-dev, 2012-05-08
Version 0.3.8 (under dev!)
@@ -31,6 +31,8 @@ Version 0.3.8 (under dev!)
* scripts: fix type of argument "rc" in callback of hook_process (from string to
integer)
* guile: add missing function "hook_process_hashtable" in API
+* irc: add option "fakerecv" for command /server to simulate a received IRC
+ message (not documented, for debug only)
* irc: hide everything after "identify" or "register" in messages to nickserv
when option irc.look.hide_nickserv_pwd is on (bug #36362)
* irc: add option "-pending" for command /disconnect (cancel auto-reconnection
diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c
index 1e2e2a2a1..11bec2b98 100644
--- a/src/plugins/irc/irc-command.c
+++ b/src/plugins/irc/irc-command.c
@@ -3763,9 +3763,9 @@ int
irc_command_server (void *data, struct t_gui_buffer *buffer, int argc,
char **argv, char **argv_eol)
{
- int i, detailed_list, one_server_found;
+ int i, detailed_list, one_server_found, length;
struct t_irc_server *ptr_server2, *server_found, *new_server;
- char *server_name;
+ char *server_name, *message;
IRC_BUFFER_GET_SERVER_CHANNEL(buffer);
@@ -4106,6 +4106,30 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc,
return WEECHAT_RC_OK;
}
+ if (weechat_strcasecmp (argv[1], "fakerecv") == 0)
+ {
+ if (argc < 3)
+ {
+ IRC_COMMAND_TOO_FEW_ARGUMENTS(NULL, "server fakerecv");
+ }
+ IRC_COMMAND_CHECK_SERVER("server fakerecv", 1);
+ length = strlen (argv_eol[2]);
+ if (length > 0)
+ {
+ /* allocate length + 2 (CR-LF) + 1 (final '\0') */
+ message = malloc (length + 2 + 1);
+ if (message)
+ {
+ strcpy (message, argv_eol[2]);
+ strcat (message, "\r\n");
+ irc_server_msgq_add_buffer (ptr_server, message);
+ irc_server_msgq_flush ();
+ free (message);
+ }
+ }
+ return WEECHAT_RC_OK;
+ }
+
weechat_printf (NULL,
_("%s%s: unknown option for \"%s\" command"),
weechat_prefix ("error"), IRC_PLUGIN_NAME, "server");
diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h
index 8f8c4b3a2..e8e077d53 100644
--- a/src/plugins/irc/irc-server.h
+++ b/src/plugins/irc/irc-server.h
@@ -267,6 +267,9 @@ extern struct t_hashtable *irc_server_sendf (struct t_irc_server *server,
int flags,
const char *tags,
const char *format, ...);
+extern void irc_server_msgq_add_buffer (struct t_irc_server *server,
+ const char *buffer);
+extern void irc_server_msgq_flush ();
extern void irc_server_set_buffer_title (struct t_irc_server *server);
extern struct t_gui_buffer *irc_server_create_buffer (struct t_irc_server *server);
extern int irc_server_connect (struct t_irc_server *server);