Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/commands.c @ 1988:dd65a18dc480
Add cmd_set_safe() / cmd_is_safe() (Myhailo Danylenko)
Patch merged from isbear's mcabber-experimental repository.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 27 Mar 2011 18:57:42 +0200 |
parents | ad77110343d6 |
children | 5dc408aacb14 |
comparison
equal
deleted
inserted
replaced
1987:212c9589b25c | 1988:dd65a18dc480 |
---|---|
97 | 97 |
98 static void room_bookmark(gpointer bud, char *arg); | 98 static void room_bookmark(gpointer bud, char *arg); |
99 | 99 |
100 // Global variable for the commands list | 100 // Global variable for the commands list |
101 static GSList *Commands; | 101 static GSList *Commands; |
102 static GSList *safe_commands; | |
102 | 103 |
103 #ifdef MODULES_ENABLE | 104 #ifdef MODULES_ENABLE |
104 #include "modules.h" | 105 #include "modules.h" |
105 | 106 |
106 gpointer cmd_del(gpointer id) | 107 gpointer cmd_del(gpointer id) |
133 n_cmd->userdata = userdata; | 134 n_cmd->userdata = userdata; |
134 Commands = g_slist_prepend(Commands, n_cmd); | 135 Commands = g_slist_prepend(Commands, n_cmd); |
135 // Add to completion CMD category | 136 // Add to completion CMD category |
136 compl_add_category_word(COMPL_CMD, name); | 137 compl_add_category_word(COMPL_CMD, name); |
137 return n_cmd; | 138 return n_cmd; |
139 } | |
140 | |
141 // cmd_set_safe(name, safe) | |
142 // Sets if command can be used in startup configuration file. | |
143 gboolean cmd_set_safe(const gchar *name, gboolean safe) | |
144 { | |
145 GSList *sel; | |
146 if (!name) | |
147 return FALSE; | |
148 for (sel = safe_commands; sel; sel = sel->next) | |
149 if (!strcmp((const char *)sel->data, name)) { | |
150 if (safe) | |
151 return FALSE; | |
152 else { | |
153 g_free(sel->data); | |
154 safe_commands = g_slist_delete_link(safe_commands, sel); | |
155 } | |
156 } | |
157 if (safe) | |
158 safe_commands = g_slist_append(safe_commands, g_strdup(name)); | |
159 else | |
160 return FALSE; | |
161 return TRUE; | |
162 } | |
163 | |
164 // cmd_is_safe(name) | |
165 // Returns if command is safe or not | |
166 gboolean cmd_is_safe(const gchar *name) | |
167 { | |
168 GSList *sel; | |
169 if (!name) | |
170 return FALSE; | |
171 for (sel = safe_commands; sel; sel = sel->next) | |
172 if (!strcmp((const char *)sel->data, name)) | |
173 return TRUE; | |
174 return FALSE; | |
138 } | 175 } |
139 | 176 |
140 // cmd_init() | 177 // cmd_init() |
141 // Commands table initialization | 178 // Commands table initialization |
142 // !!! | 179 // !!! |
194 cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status, | 231 cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status, |
195 NULL); | 232 NULL); |
196 cmd_add("status_to", "Show or set your status for one recipient", | 233 cmd_add("status_to", "Show or set your status for one recipient", |
197 COMPL_JID, COMPL_STATUS, &do_status_to, NULL); | 234 COMPL_JID, COMPL_STATUS, &do_status_to, NULL); |
198 cmd_add("version", "Show mcabber version", 0, 0, &do_version, NULL); | 235 cmd_add("version", "Show mcabber version", 0, 0, &do_version, NULL); |
236 | |
237 cmd_set_safe("set", TRUE); | |
238 cmd_set_safe("bind", TRUE); | |
239 cmd_set_safe("alias", TRUE); | |
240 cmd_set_safe("pgp", TRUE); | |
241 cmd_set_safe("source", TRUE); | |
242 cmd_set_safe("status", TRUE); | |
243 cmd_set_safe("color", TRUE); | |
244 cmd_set_safe("otrpolicy", TRUE); | |
245 cmd_set_safe("module", TRUE); | |
199 | 246 |
200 // Status category | 247 // Status category |
201 compl_add_category_word(COMPL_STATUS, "online"); | 248 compl_add_category_word(COMPL_STATUS, "online"); |
202 compl_add_category_word(COMPL_STATUS, "avail"); | 249 compl_add_category_word(COMPL_STATUS, "avail"); |
203 #ifdef WITH_DEPRECATED_STATUS_INVISIBLE | 250 #ifdef WITH_DEPRECATED_STATUS_INVISIBLE |