summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorailin-nemui <ailin-nemui@users.noreply.github.com>2017-02-27 13:43:58 +0100
committerailin-nemui <ailin-nemui@users.noreply.github.com>2017-02-27 13:43:58 +0100
commit9aaa6449a0a554c83d40b56ce0a87bd0cba8bdbf (patch)
tree88e52e7e9db6cedb5fa6dbf2c34d2c11fb464470 /src/core
parent540639e0faee2dac9ff60fcf5e2ab0334a1ad5d9 (diff)
downloadirssi-9aaa6449a0a554c83d40b56ce0a87bd0cba8bdbf.zip
make foreach send commands
Diffstat (limited to 'src/core')
-rw-r--r--src/core/chat-commands.c43
1 files changed, 34 insertions, 9 deletions
diff --git a/src/core/chat-commands.c b/src/core/chat-commands.c
index 69c2fc91..e86fdf9d 100644
--- a/src/core/chat-commands.c
+++ b/src/core/chat-commands.c
@@ -438,41 +438,66 @@ static void cmd_foreach(const char *data, SERVER_REC *server,
/* SYNTAX: FOREACH SERVER <command> */
static void cmd_foreach_server(const char *data, SERVER_REC *server)
{
- GSList *list;
+ GSList *list;
+ const char *cmdchars;
+ char *str;
+
+ cmdchars = settings_get_str("cmdchars");
+ str = strchr(cmdchars, *data) != NULL ? g_strdup(data) :
+ g_strdup_printf("%c%s", *cmdchars, data);
list = g_slist_copy(servers);
while (list != NULL) {
- signal_emit("send command", 3, data, list->data, NULL);
- list = g_slist_remove(list, list->data);
+ signal_emit("send command", 3, str, list->data, NULL);
+ list = g_slist_remove(list, list->data);
}
+
+ g_free(str);
}
/* SYNTAX: FOREACH CHANNEL <command> */
static void cmd_foreach_channel(const char *data)
{
- GSList *list;
+ GSList *list;
+ const char *cmdchars;
+ char *str;
+
+ cmdchars = settings_get_str("cmdchars");
+ str = strchr(cmdchars, *data) != NULL ? g_strdup(data) :
+ g_strdup_printf("%c%s", *cmdchars, data);
list = g_slist_copy(channels);
while (list != NULL) {
CHANNEL_REC *rec = list->data;
- signal_emit("send command", 3, data, rec->server, rec);
- list = g_slist_remove(list, list->data);
+ signal_emit("send command", 3, str, rec->server, rec);
+ list = g_slist_remove(list, list->data);
}
+
+ g_free(str);
}
/* SYNTAX: FOREACH QUERY <command> */
static void cmd_foreach_query(const char *data)
{
- GSList *list;
+ GSList *list;
+ const char *cmdchars;
+ char *str;
+
+ cmdchars = settings_get_str("cmdchars");
+ str = strchr(cmdchars, *data) != NULL ? g_strdup(data) :
+ g_strdup_printf("%c%s", *cmdchars, data);
+
list = g_slist_copy(queries);
while (list != NULL) {
QUERY_REC *rec = list->data;
- signal_emit("send command", 3, data, rec->server, rec);
- list = g_slist_remove(list, list->data);
+ signal_emit("send command", 3, str, rec->server, rec);
+ list = g_slist_remove(list, list->data);
}
+
+ g_free(str);
}
void chat_commands_init(void)