comparison mcabber/src/commands.c @ 820:80bd7f49075f

Allow '*' in /event command
author Mikael Berthe <mikael@lilotux.net>
date Sat, 22 Apr 2006 22:41:06 +0200
parents f6cda389db48
children dd865cc57aa2
comparison
equal deleted inserted replaced
819:c2d7d9dd4193 820:80bd7f49075f
2084 static void do_event(char *arg) 2084 static void do_event(char *arg)
2085 { 2085 {
2086 char **paramlst; 2086 char **paramlst;
2087 char *evid, *subcmd; 2087 char *evid, *subcmd;
2088 int action = -1; 2088 int action = -1;
2089 GSList *evidlst;
2089 2090
2090 paramlst = split_arg(arg, 2, 0); // id, subcmd 2091 paramlst = split_arg(arg, 2, 0); // id, subcmd
2091 evid = *paramlst; 2092 evid = *paramlst;
2092 subcmd = *(paramlst+1); 2093 subcmd = *(paramlst+1);
2093 2094
2110 action = 2; 2111 action = 2;
2111 2112
2112 if (action == -1) { 2113 if (action == -1) {
2113 scr_LogPrint(LPRINT_NORMAL, "Wrong action parameter."); 2114 scr_LogPrint(LPRINT_NORMAL, "Wrong action parameter.");
2114 } else if (action >= 0 && action <= 2) { 2115 } else if (action >= 0 && action <= 2) {
2116 GSList *p;
2117
2115 if (action == 2) { 2118 if (action == 2) {
2116 action = EVS_CONTEXT_CANCEL; 2119 action = EVS_CONTEXT_CANCEL;
2117 } else { 2120 } else {
2118 action += EVS_CONTEXT_USER; 2121 action += EVS_CONTEXT_USER;
2119 } 2122 }
2120 if (evs_callback(evid, action) == -1) { 2123
2121 scr_LogPrint(LPRINT_NORMAL, "Event %s not found.", evid); 2124 if (!strcmp(evid, "*")) {
2122 } 2125 // Use completion list
2126 evidlst = evs_geteventslist(FALSE);
2127 } else {
2128 // Let's create a slist with the provided event id
2129 evidlst = g_slist_append(NULL, g_strdup(evid));
2130 }
2131 for (p = evidlst; p; p = g_slist_next(p)) {
2132 if (evs_callback(p->data, action) == -1) {
2133 scr_LogPrint(LPRINT_NORMAL, "Event %s not found.", p->data);
2134 }
2135 g_free(p->data);
2136 }
2137 g_slist_free(evidlst);
2123 } 2138 }
2124 2139
2125 free_arg_lst(paramlst); 2140 free_arg_lst(paramlst);
2126 } 2141 }
2127 2142