File: | fe-common/core/fe-queries.c |
Location: | line 54, column 17 |
Description: | Dereference of null pointer. |
1 | /* |
2 | fe-queries.c : irssi |
3 | |
4 | Copyright (C) 1999-2000 Timo Sirainen |
5 | |
6 | This program is free software; you can redistribute it and/or modify |
7 | it under the terms of the GNU General Public License as published by |
8 | the Free Software Foundation; either version 2 of the License, or |
9 | (at your option) any later version. |
10 | |
11 | This program is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | GNU General Public License for more details. |
15 | |
16 | You should have received a copy of the GNU General Public License along |
17 | with this program; if not, write to the Free Software Foundation, Inc., |
18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
19 | */ |
20 | |
21 | #include "module.h" |
22 | #include "module-formats.h" |
23 | #include "modules.h" |
24 | #include "signals.h" |
25 | #include "commands.h" |
26 | #include "levels.h" |
27 | #include "settings.h" |
28 | |
29 | #include "chat-protocols.h" |
30 | #include "servers.h" |
31 | #include "queries.h" |
32 | |
33 | #include "fe-core-commands.h" |
34 | #include "fe-windows.h" |
35 | #include "window-items.h" |
36 | #include "printtext.h" |
37 | |
38 | static int queryclose_tag, query_auto_close, querycreate_level; |
39 | |
40 | /* Return query where to put the private message. */ |
41 | QUERY_REC *privmsg_get_query(SERVER_REC *server, const char *nick, |
42 | int own, int level) |
43 | { |
44 | QUERY_REC *query; |
45 | |
46 | g_return_val_if_fail(IS_SERVER(server), NULL)do{ if ((((SERVER_REC *) module_check_cast(server, __builtin_offsetof (SERVER_REC, type), "SERVER")) ? (!(0)) : (0))) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__, "IS_SERVER(server)"); return (((void *)0)); }; }while (0); |
[1] '?' condition evaluates to true | |
[2] Taking true branch | |
[3] Loop condition is false. Exiting loop | |
47 | g_return_val_if_fail(nick != NULL, NULL)do{ if (nick != ((void *)0)) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__, "nick != NULL"); return ( ((void *)0)); }; }while (0); |
[4] Taking true branch | |
[5] Loop condition is false. Exiting loop | |
48 | |
49 | query = query_find(server, nick); |
50 | if (query == NULL((void *)0) && !command_hide_output && |
[6] Taking true branch | |
51 | (querycreate_level & level) != 0 && |
52 | (!own || settings_get_bool("autocreate_own_query"))) { |
53 | query = CHAT_PROTOCOL(server)((server) == ((void *)0) ? chat_protocol_get_default() : chat_protocol_find_id ((server)->chat_type))-> |
[7] '?' condition evaluates to true | |
54 | query_create(server->tag, nick, TRUE(!(0))); |
[8] Dereference of null pointer | |
55 | } |
56 | |
57 | return query; |
58 | } |
59 | |
60 | static void signal_query_created(QUERY_REC *query, gpointer automatic) |
61 | { |
62 | TEXT_DEST_REC dest; |
63 | |
64 | g_return_if_fail(IS_QUERY(query))do{ if ((((QUERY_REC *) module_check_cast_module(query, __builtin_offsetof (QUERY_REC, type), "WINDOW ITEM TYPE", "QUERY")) ? (!(0)) : ( 0))) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__ , "IS_QUERY(query)"); return; }; }while (0); |
65 | |
66 | if (window_item_window(query)((WINDOW_REC *) ((WI_ITEM_REC *) (query))->window) == NULL((void *)0)) { |
67 | window_item_create((WI_ITEM_REC *) query, |
68 | GPOINTER_TO_INT(automatic)((gint) (automatic))); |
69 | } |
70 | |
71 | format_create_dest_tag(&dest, query->server, query->server_tag, |
72 | query->name, MSGLEVEL_CLIENTNOTICE, NULL((void *)0)); |
73 | printformat_dest(&dest, TXT_QUERY_START,printformat_module_dest("fe-common/core", &dest, TXT_QUERY_START , query->name, query->server_tag) |
74 | query->name, query->server_tag)printformat_module_dest("fe-common/core", &dest, TXT_QUERY_START , query->name, query->server_tag); |
75 | } |
76 | |
77 | static void signal_query_created_curwin(QUERY_REC *query) |
78 | { |
79 | g_return_if_fail(IS_QUERY(query))do{ if ((((QUERY_REC *) module_check_cast_module(query, __builtin_offsetof (QUERY_REC, type), "WINDOW ITEM TYPE", "QUERY")) ? (!(0)) : ( 0))) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__ , "IS_QUERY(query)"); return; }; }while (0); |
80 | |
81 | window_item_add(active_win, (WI_ITEM_REC *) query, FALSE(0)); |
82 | } |
83 | |
84 | static void signal_query_destroyed(QUERY_REC *query) |
85 | { |
86 | WINDOW_REC *window; |
87 | TEXT_DEST_REC dest; |
88 | |
89 | g_return_if_fail(IS_QUERY(query))do{ if ((((QUERY_REC *) module_check_cast_module(query, __builtin_offsetof (QUERY_REC, type), "WINDOW ITEM TYPE", "QUERY")) ? (!(0)) : ( 0))) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__ , "IS_QUERY(query)"); return; }; }while (0); |
90 | |
91 | window = window_item_window((WI_ITEM_REC *) query)((WINDOW_REC *) ((WI_ITEM_REC *) ((WI_ITEM_REC *) query))-> window); |
92 | if (window == NULL((void *)0)) |
93 | return; |
94 | |
95 | format_create_dest_tag(&dest, query->server, query->server_tag, |
96 | query->name, MSGLEVEL_CLIENTNOTICE, NULL((void *)0)); |
97 | printformat_dest(&dest, TXT_QUERY_STOP, query->name)printformat_module_dest("fe-common/core", &dest, TXT_QUERY_STOP , query->name); |
98 | |
99 | window_item_destroy((WI_ITEM_REC *) query); |
100 | |
101 | if (!query->unwanted) |
102 | window_auto_destroy(window); |
103 | else { |
104 | /* eg. connection lost to dcc chat */ |
105 | window_bind_add(window, query->server_tag, query->name); |
106 | } |
107 | } |
108 | |
109 | static void signal_query_server_changed(QUERY_REC *query) |
110 | { |
111 | WINDOW_REC *window; |
112 | |
113 | g_return_if_fail(query != NULL)do{ if (query != ((void *)0)) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__, "query != NULL"); return ; }; }while (0); |
114 | |
115 | window = window_item_window((WI_ITEM_REC *) query)((WINDOW_REC *) ((WI_ITEM_REC *) ((WI_ITEM_REC *) query))-> window); |
116 | if (window->active == (WI_ITEM_REC *) query) |
117 | window_change_server(window, query->server); |
118 | } |
119 | |
120 | static void signal_query_nick_changed(QUERY_REC *query, const char *oldnick) |
121 | { |
122 | TEXT_DEST_REC dest; |
123 | |
124 | g_return_if_fail(query != NULL)do{ if (query != ((void *)0)) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__, "query != NULL"); return ; }; }while (0); |
125 | |
126 | format_create_dest_tag(&dest, query->server, query->server_tag, |
127 | query->name, MSGLEVEL_NICKS, NULL((void *)0)); |
128 | |
129 | /* don't print the nick change message if only the case was changed */ |
130 | if (g_strcasecmp(query->name, oldnick) != 0) { |
131 | printformat_dest(&dest, TXT_NICK_CHANGED, oldnick,printformat_module_dest("fe-common/core", &dest, TXT_NICK_CHANGED , oldnick, query->name, query->name, query->address == ((void *)0) ? "" : query->address) |
132 | query->name, query->name,printformat_module_dest("fe-common/core", &dest, TXT_NICK_CHANGED , oldnick, query->name, query->name, query->address == ((void *)0) ? "" : query->address) |
133 | query->address == NULL ? "" : query->address)printformat_module_dest("fe-common/core", &dest, TXT_NICK_CHANGED , oldnick, query->name, query->name, query->address == ((void *)0) ? "" : query->address); |
134 | } |
135 | |
136 | signal_emit("window item changed", 2, |
137 | window_item_window((WI_ITEM_REC *) query)((WINDOW_REC *) ((WI_ITEM_REC *) ((WI_ITEM_REC *) query))-> window), query); |
138 | } |
139 | |
140 | static void signal_window_item_server_changed(WINDOW_REC *window, |
141 | QUERY_REC *query) |
142 | { |
143 | if (IS_QUERY(query)(((QUERY_REC *) module_check_cast_module(query, __builtin_offsetof (QUERY_REC, type), "WINDOW ITEM TYPE", "QUERY")) ? (!(0)) : ( 0))) { |
144 | g_free_and_null(query->server_tag)do { if (query->server_tag) { g_free(query->server_tag) ; (query->server_tag) = ((void *)0); } } while (0); |
145 | if (query->server != NULL((void *)0)) |
146 | query->server_tag = g_strdup(query->server->tag); |
147 | } |
148 | } |
149 | |
150 | static void sig_server_connected(SERVER_REC *server) |
151 | { |
152 | GSList *tmp; |
153 | |
154 | if (!IS_SERVER(server)(((SERVER_REC *) module_check_cast(server, __builtin_offsetof (SERVER_REC, type), "SERVER")) ? (!(0)) : (0))) |
155 | return; |
156 | |
157 | /* check if there's any queries without server */ |
158 | for (tmp = queries; tmp != NULL((void *)0); tmp = tmp->next) { |
159 | QUERY_REC *rec = tmp->data; |
160 | |
161 | if (rec->server == NULL((void *)0) && |
162 | (rec->server_tag == NULL((void *)0) || |
163 | g_strcasecmp(rec->server_tag, server->tag) == 0)) { |
164 | window_item_change_server((WI_ITEM_REC *) rec, server); |
165 | server->queries = g_slist_append(server->queries, rec); |
166 | } |
167 | } |
168 | } |
169 | |
170 | static void cmd_window_server(const char *data) |
171 | { |
172 | SERVER_REC *server; |
173 | QUERY_REC *query; |
174 | TEXT_DEST_REC dest; |
175 | |
176 | g_return_if_fail(data != NULL)do{ if (data != ((void *)0)) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__, "data != NULL"); return; }; }while (0); |
177 | |
178 | server = server_find_tag(data); |
179 | query = QUERY(active_win->active)((QUERY_REC *) module_check_cast_module(active_win->active , __builtin_offsetof(QUERY_REC, type), "WINDOW ITEM TYPE", "QUERY" )); |
180 | if (server == NULL((void *)0) || query == NULL((void *)0)) |
181 | return; |
182 | |
183 | /* /WINDOW SERVER used in a query window */ |
184 | format_create_dest_tag(&dest, query->server, query->server_tag, |
185 | query->name, MSGLEVEL_CLIENTNOTICE, NULL((void *)0)); |
186 | printformat_dest(&dest, TXT_QUERY_SERVER_CHANGED,printformat_module_dest("fe-common/core", &dest, TXT_QUERY_SERVER_CHANGED , query->name, server->tag) |
187 | query->name, server->tag)printformat_module_dest("fe-common/core", &dest, TXT_QUERY_SERVER_CHANGED , query->name, server->tag); |
188 | |
189 | query_change_server(query, server); |
190 | signal_stop(); |
191 | } |
192 | |
193 | /* SYNTAX: UNQUERY [<nick>] */ |
194 | static void cmd_unquery(const char *data, SERVER_REC *server, WI_ITEM_REC *item) |
195 | { |
196 | QUERY_REC *query; |
197 | char *nick; |
198 | void *free_arg; |
199 | |
200 | g_return_if_fail(data != NULL)do{ if (data != ((void *)0)) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__, "data != NULL"); return; }; }while (0); |
201 | |
202 | if (!cmd_get_params(data, &free_arg, 1, &nick)) |
203 | return; |
204 | |
205 | if (*nick == '\0') { |
206 | /* remove current query */ |
207 | query = QUERY(item)((QUERY_REC *) module_check_cast_module(item, __builtin_offsetof (QUERY_REC, type), "WINDOW ITEM TYPE", "QUERY")); |
208 | } else { |
209 | query = query_find(server, nick); |
210 | if (query == NULL((void *)0)) { |
211 | printformat(server, NULL, MSGLEVEL_CLIENTERROR,printformat_module("fe-common/core", server, ((void *)0), MSGLEVEL_CLIENTERROR , TXT_NO_QUERY, nick) |
212 | TXT_NO_QUERY, nick)printformat_module("fe-common/core", server, ((void *)0), MSGLEVEL_CLIENTERROR , TXT_NO_QUERY, nick); |
213 | } |
214 | } |
215 | |
216 | if (query != NULL((void *)0)) |
217 | query_destroy(query); |
218 | |
219 | cmd_params_free(free_arg); |
220 | } |
221 | |
222 | /* SYNTAX: QUERY [-window] [-<server tag>] <nick> [<message>] */ |
223 | static void cmd_query(const char *data, SERVER_REC *server, WI_ITEM_REC *item) |
224 | { |
225 | GHashTable *optlist; |
226 | QUERY_REC *query; |
227 | char *nick, *msg; |
228 | void *free_arg; |
229 | |
230 | g_return_if_fail(data != NULL)do{ if (data != ((void *)0)) { } else { g_return_if_fail_warning (((gchar*) 0), __PRETTY_FUNCTION__, "data != NULL"); return; }; }while (0); |
231 | |
232 | if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST0x00002000 | |
233 | PARAM_FLAG_OPTIONS0x00004000 | PARAM_FLAG_UNKNOWN_OPTIONS0x00008000, |
234 | "query", &optlist, &nick, &msg)) |
235 | return; |
236 | |
237 | if (*nick == '\0') { |
238 | /* remove current query */ |
239 | cmd_unquery("", server, item); |
240 | cmd_params_free(free_arg); |
241 | return; |
242 | } |
243 | |
244 | server = cmd_options_get_server("query", optlist, server); |
245 | if (server == NULL((void *)0)) { |
246 | cmd_params_free(free_arg); |
247 | return; |
248 | } |
249 | |
250 | if (*nick != '=' && (server == NULL((void *)0) || !server->connected)) |
251 | cmd_param_error(CMDERR_NOT_CONNECTED)do { cmd_params_free(free_arg); do { signal_emit("error command" , 1, ((gpointer) (CMDERR_NOT_CONNECTED))); signal_stop(); return ; } while (0); } while (0); |
252 | |
253 | if (g_hash_table_lookup(optlist, "window") != NULL((void *)0)) { |
254 | signal_add("query created",signal_add_full("fe-common/core", 0, ("query created"), (SIGNAL_FUNC ) ((SIGNAL_FUNC) signal_query_created_curwin), ((void *)0)) |
255 | (SIGNAL_FUNC) signal_query_created_curwin)signal_add_full("fe-common/core", 0, ("query created"), (SIGNAL_FUNC ) ((SIGNAL_FUNC) signal_query_created_curwin), ((void *)0)); |
256 | } |
257 | |
258 | query = query_find(server, nick); |
259 | if (query == NULL((void *)0)) |
260 | query = CHAT_PROTOCOL(server)((server) == ((void *)0) ? chat_protocol_get_default() : chat_protocol_find_id ((server)->chat_type))-> |
261 | query_create(server->tag, nick, FALSE(0)); |
262 | else { |
263 | /* query already exists, set it active */ |
264 | WINDOW_REC *window = window_item_window(query)((WINDOW_REC *) ((WI_ITEM_REC *) (query))->window); |
265 | |
266 | if (window != active_win) |
267 | window_set_active(window); |
268 | window_item_set_active(active_win, (WI_ITEM_REC *) query); |
269 | } |
270 | |
271 | if (g_hash_table_lookup(optlist, "window") != NULL((void *)0)) { |
272 | signal_remove("query created",signal_remove_full(("query created"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) signal_query_created_curwin), ((void *)0)) |
273 | (SIGNAL_FUNC) signal_query_created_curwin)signal_remove_full(("query created"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) signal_query_created_curwin), ((void *)0)); |
274 | } |
275 | |
276 | if (*msg != '\0') { |
277 | msg = g_strdup_printf("-nick %s %s", nick, msg); |
278 | signal_emit("command msg", 3, msg, server, query); |
279 | g_free(msg); |
280 | } |
281 | |
282 | cmd_params_free(free_arg); |
283 | } |
284 | |
285 | static void window_reset_query_timestamps(WINDOW_REC *window) |
286 | { |
287 | GSList *tmp; |
288 | |
289 | if (window == NULL((void *)0)) |
290 | return; |
291 | |
292 | for (tmp = window->items; tmp != NULL((void *)0); tmp = tmp->next) { |
293 | QUERY_REC *query = QUERY(tmp->data)((QUERY_REC *) module_check_cast_module(tmp->data, __builtin_offsetof (QUERY_REC, type), "WINDOW ITEM TYPE", "QUERY")); |
294 | |
295 | if (query != NULL((void *)0)) |
296 | query->last_unread_msg = time(NULL((void *)0)); |
297 | } |
298 | } |
299 | |
300 | static void sig_window_changed(WINDOW_REC *window, WINDOW_REC *old_window) |
301 | { |
302 | /* reset the queries last_unread_msg so query doesn't get closed |
303 | immediately after switched to the window, or after changed to |
304 | some other window from it */ |
305 | window_reset_query_timestamps(window); |
306 | window_reset_query_timestamps(old_window); |
307 | } |
308 | |
309 | static int sig_query_autoclose(void) |
310 | { |
311 | WINDOW_REC *window; |
312 | GSList *tmp, *next; |
313 | time_t now; |
314 | |
315 | now = time(NULL((void *)0)); |
316 | for (tmp = queries; tmp != NULL((void *)0); tmp = next) { |
317 | QUERY_REC *rec = tmp->data; |
318 | |
319 | next = tmp->next; |
320 | window = window_item_window((WI_ITEM_REC *) rec)((WINDOW_REC *) ((WI_ITEM_REC *) ((WI_ITEM_REC *) rec))->window ); |
321 | if (window != active_win && rec->data_level < DATA_LEVEL_MSG && |
322 | now-rec->last_unread_msg > query_auto_close) |
323 | query_destroy(rec); |
324 | } |
325 | return 1; |
326 | } |
327 | |
328 | static void sig_message_private(SERVER_REC *server, const char *msg, |
329 | const char *nick, const char *address) |
330 | { |
331 | QUERY_REC *query; |
332 | |
333 | /* create query window if needed */ |
334 | query = privmsg_get_query(server, nick, FALSE(0), MSGLEVEL_MSGS); |
335 | |
336 | /* reset the query's last_unread_msg timestamp */ |
337 | if (query != NULL((void *)0)) |
338 | query->last_unread_msg = time(NULL((void *)0)); |
339 | } |
340 | |
341 | static void read_settings(void) |
342 | { |
343 | querycreate_level = settings_get_level("autocreate_query_level"); |
344 | query_auto_close = settings_get_time("autoclose_query")/1000; |
345 | if (query_auto_close > 0 && queryclose_tag == -1) |
346 | queryclose_tag = g_timeout_add(5000, (GSourceFunc) sig_query_autoclose, NULL((void *)0)); |
347 | else if (query_auto_close <= 0 && queryclose_tag != -1) { |
348 | g_source_remove(queryclose_tag); |
349 | queryclose_tag = -1; |
350 | } |
351 | } |
352 | |
353 | void fe_queries_init(void) |
354 | { |
355 | settings_add_level("lookandfeel", "autocreate_query_level", "MSGS DCCMSGS")settings_add_level_module("fe-common/core", "lookandfeel", "autocreate_query_level" , "MSGS DCCMSGS"); |
356 | settings_add_bool("lookandfeel", "autocreate_own_query", TRUE)settings_add_bool_module("fe-common/core", "lookandfeel", "autocreate_own_query" , (!(0))); |
357 | settings_add_time("lookandfeel", "autoclose_query", "0")settings_add_time_module("fe-common/core", "lookandfeel", "autoclose_query" , "0"); |
358 | |
359 | queryclose_tag = -1; |
360 | read_settings(); |
361 | |
362 | signal_add("query created", (SIGNAL_FUNC) signal_query_created)signal_add_full("fe-common/core", 0, ("query created"), (SIGNAL_FUNC ) ((SIGNAL_FUNC) signal_query_created), ((void *)0)); |
363 | signal_add("query destroyed", (SIGNAL_FUNC) signal_query_destroyed)signal_add_full("fe-common/core", 0, ("query destroyed"), (SIGNAL_FUNC ) ((SIGNAL_FUNC) signal_query_destroyed), ((void *)0)); |
364 | signal_add("query server changed", (SIGNAL_FUNC) signal_query_server_changed)signal_add_full("fe-common/core", 0, ("query server changed") , (SIGNAL_FUNC) ((SIGNAL_FUNC) signal_query_server_changed), ( (void *)0)); |
365 | signal_add("query nick changed", (SIGNAL_FUNC) signal_query_nick_changed)signal_add_full("fe-common/core", 0, ("query nick changed"), ( SIGNAL_FUNC) ((SIGNAL_FUNC) signal_query_nick_changed), ((void *)0)); |
366 | signal_add("window item server changed", (SIGNAL_FUNC) signal_window_item_server_changed)signal_add_full("fe-common/core", 0, ("window item server changed" ), (SIGNAL_FUNC) ((SIGNAL_FUNC) signal_window_item_server_changed ), ((void *)0)); |
367 | signal_add("server connected", (SIGNAL_FUNC) sig_server_connected)signal_add_full("fe-common/core", 0, ("server connected"), (SIGNAL_FUNC ) ((SIGNAL_FUNC) sig_server_connected), ((void *)0)); |
368 | signal_add("window changed", (SIGNAL_FUNC) sig_window_changed)signal_add_full("fe-common/core", 0, ("window changed"), (SIGNAL_FUNC ) ((SIGNAL_FUNC) sig_window_changed), ((void *)0)); |
369 | signal_add_first("message private", (SIGNAL_FUNC) sig_message_private)signal_add_full("fe-common/core", -100, ("message private"), ( SIGNAL_FUNC) ((SIGNAL_FUNC) sig_message_private), ((void *)0) ); |
370 | signal_add("setup changed", (SIGNAL_FUNC) read_settings)signal_add_full("fe-common/core", 0, ("setup changed"), (SIGNAL_FUNC ) ((SIGNAL_FUNC) read_settings), ((void *)0)); |
371 | |
372 | command_bind("query", NULL, (SIGNAL_FUNC) cmd_query)command_bind_full("fe-common/core", 0, "query", -1, ((void *) 0), (SIGNAL_FUNC) cmd_query, ((void *)0)); |
373 | command_bind("unquery", NULL, (SIGNAL_FUNC) cmd_unquery)command_bind_full("fe-common/core", 0, "unquery", -1, ((void * )0), (SIGNAL_FUNC) cmd_unquery, ((void *)0)); |
374 | command_bind("window server", NULL, (SIGNAL_FUNC) cmd_window_server)command_bind_full("fe-common/core", 0, "window server", -1, ( (void *)0), (SIGNAL_FUNC) cmd_window_server, ((void *)0)); |
375 | |
376 | command_set_options("query", "window")command_set_options_module("fe-common/core", "query", "window" ); |
377 | } |
378 | |
379 | void fe_queries_deinit(void) |
380 | { |
381 | if (queryclose_tag != -1) g_source_remove(queryclose_tag); |
382 | |
383 | signal_remove("query created", (SIGNAL_FUNC) signal_query_created)signal_remove_full(("query created"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) signal_query_created), ((void *)0)); |
384 | signal_remove("query destroyed", (SIGNAL_FUNC) signal_query_destroyed)signal_remove_full(("query destroyed"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) signal_query_destroyed), ((void *)0)); |
385 | signal_remove("query server changed", (SIGNAL_FUNC) signal_query_server_changed)signal_remove_full(("query server changed"), (SIGNAL_FUNC) (( SIGNAL_FUNC) signal_query_server_changed), ((void *)0)); |
386 | signal_remove("query nick changed", (SIGNAL_FUNC) signal_query_nick_changed)signal_remove_full(("query nick changed"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) signal_query_nick_changed), ((void *)0)); |
387 | signal_remove("window item server changed", (SIGNAL_FUNC) signal_window_item_server_changed)signal_remove_full(("window item server changed"), (SIGNAL_FUNC ) ((SIGNAL_FUNC) signal_window_item_server_changed), ((void * )0)); |
388 | signal_remove("server connected", (SIGNAL_FUNC) sig_server_connected)signal_remove_full(("server connected"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) sig_server_connected), ((void *)0)); |
389 | signal_remove("window changed", (SIGNAL_FUNC) sig_window_changed)signal_remove_full(("window changed"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) sig_window_changed), ((void *)0)); |
390 | signal_remove("message private", (SIGNAL_FUNC) sig_message_private)signal_remove_full(("message private"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) sig_message_private), ((void *)0)); |
391 | signal_remove("setup changed", (SIGNAL_FUNC) read_settings)signal_remove_full(("setup changed"), (SIGNAL_FUNC) ((SIGNAL_FUNC ) read_settings), ((void *)0)); |
392 | |
393 | command_unbind("query", (SIGNAL_FUNC) cmd_query)command_unbind_full("query", (SIGNAL_FUNC) cmd_query, ((void * )0)); |
394 | command_unbind("unquery", (SIGNAL_FUNC) cmd_unquery)command_unbind_full("unquery", (SIGNAL_FUNC) cmd_unquery, ((void *)0)); |
395 | command_unbind("window server", (SIGNAL_FUNC) cmd_window_server)command_unbind_full("window server", (SIGNAL_FUNC) cmd_window_server , ((void *)0)); |
396 | } |