Annotation of ChivanetAimPidgin/oscarprpl/src/c/rxhandlers.c, revision 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>