Annotation of ChivanetAimPidgin/oscarprpl/src/c/rxhandlers.c, revision 1.1.1.1
1.1 snw 1: /*
2: * Purple's oscar protocol plugin
3: * This file is the legal property of its developers.
4: * Please see the AUTHORS file distributed alongside this file.
5: *
6: * This library is free software; you can redistribute it and/or
7: * modify it under the terms of the GNU Lesser General Public
8: * License as published by the Free Software Foundation; either
9: * version 2 of the License, or (at your option) any later version.
10: *
11: * This library 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 GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19: */
20:
21: #include "oscar.h"
22: #include "peer.h"
23:
24: aim_module_t *aim__findmodulebygroup(OscarData *od, guint16 group)
25: {
26: aim_module_t *cur;
27:
28: for (cur = (aim_module_t *)od->modlistv; cur; cur = cur->next) {
29: if (cur->family == group)
30: return cur;
31: }
32:
33: return NULL;
34: }
35:
36: aim_module_t *aim__findmodule(OscarData *od, const char *name)
37: {
38: aim_module_t *cur;
39:
40: for (cur = (aim_module_t *)od->modlistv; cur; cur = cur->next) {
41: if (purple_strequal(name, cur->name))
42: return cur;
43: }
44:
45: return NULL;
46: }
47:
48: int aim__registermodule(OscarData *od, int (*modfirst)(OscarData *, aim_module_t *))
49: {
50: aim_module_t *mod;
51:
52: if (!od || !modfirst)
53: return -1;
54:
55: mod = g_new0(aim_module_t, 1);
56:
57: if (modfirst(od, mod) == -1) {
58: g_free(mod);
59: return -1;
60: }
61:
62: if (aim__findmodule(od, mod->name)) {
63: if (mod->shutdown)
64: mod->shutdown(od, mod);
65: g_free(mod);
66: return -1;
67: }
68:
69: mod->next = (aim_module_t *)od->modlistv;
70: od->modlistv = mod;
71:
72: return 0;
73: }
74:
75: void aim__shutdownmodules(OscarData *od)
76: {
77: aim_module_t *cur;
78:
79: for (cur = (aim_module_t *)od->modlistv; cur; ) {
80: aim_module_t *tmp;
81:
82: tmp = cur->next;
83:
84: if (cur->shutdown)
85: cur->shutdown(od, cur);
86:
87: g_free(cur);
88:
89: cur = tmp;
90: }
91:
92: od->modlistv = NULL;
93:
94: return;
95: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>