static void sig_complete_word(GList **list, WINDOW_REC *window, const char *word, const char *linestart, int *want_space) { XMPP_SERVER_REC *server; g_return_if_fail(list != NULL); g_return_if_fail(window != NULL); g_return_if_fail(word != NULL); if ((server = XMPP_SERVER(window->active_server)) == NULL) return; if (g_ascii_strncasecmp(linestart, settings_get_str("cmdchars"), 1) == 0) { *list = g_list_concat(*list, get_nicks(server, *word == '"' ? word+1 : word , TRUE, TRUE)); } else if (!IS_CHANNEL(window->active)) *list = g_list_concat(*list, get_nicks(server, word, FALSE, TRUE)); }
/* SYNTAX: DEVOICE <nicks> */ static void cmd_devoice(const char *data, IRC_SERVER_REC *server, IRC_CHANNEL_REC *channel) { char *nicks; if (!IS_IRC_CHANNEL(channel)) return; nicks = get_nicks(channel, data, 0, 1); if (nicks != NULL && *nicks != '\0') channel_set_singlemode(server, channel->name, nicks, "-v"); g_free_not_null(nicks); }
/* SYNTAX: DEVOICE <nicks> */ static void cmd_devoice(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item) { IRC_CHANNEL_REC *channel; char *nicks; CMD_IRC_SERVER(server); nicks = get_nicks(server, item, data, -1, 1, &channel); if (nicks != NULL && *nicks != '\0') channel_set_singlemode(channel, nicks, "-v"); g_free_not_null(nicks); }
static void sig_complete_command_roster_others(GList **list, WINDOW_REC *window, const char *word, const char *args, int *want_space) { XMPP_SERVER_REC *server; char **tmp; g_return_if_fail(list != NULL); g_return_if_fail(window != NULL); g_return_if_fail(word != NULL); g_return_if_fail(args != NULL); if ((server = XMPP_SERVER(window->active_server)) == NULL) return; tmp = g_strsplit(args, " ", 2); /* complete nicks */ if (tmp[0] == NULL) *list = g_list_concat(*list, get_nicks(server, *word == '"' ? word+1 : word , TRUE, FALSE)); g_strfreev(tmp); if (*list != NULL) signal_stop(); }
static void sig_complete_command_roster_group(GList **list, WINDOW_REC *window, const char *word, const char *args, int *want_space) { GSList *gl; XMPP_SERVER_REC *server; XMPP_ROSTER_GROUP_REC *group; int len; char **tmp; g_return_if_fail(list != NULL); g_return_if_fail(window != NULL); g_return_if_fail(word != NULL); g_return_if_fail(args != NULL); server = XMPP_SERVER(window->active_server); if (server == NULL) return; len = strlen(word); tmp = g_strsplit(args, " ", 2); /* complete nicks */ if (tmp[0] == NULL) *list = g_list_concat(*list, get_nicks(server, *word == '"' ? word+1 : word , TRUE, FALSE)); /* complete groups */ else if (tmp[0] != NULL && tmp[1] == NULL) { for (gl = server->roster; gl != NULL; gl = gl->next) { group = (XMPP_ROSTER_GROUP_REC *)gl->data; if (group->name != NULL && g_ascii_strncasecmp(word, group->name, len) == 0) *list = g_list_append(*list, g_strdup(group->name)); } } g_strfreev(tmp); if (*list != NULL) signal_stop(); }