faim_internal int aim__registermodule(aim_session_t *sess, int (*modfirst)(aim_session_t *, aim_module_t *)) { aim_module_t *mod; if (!sess || !modfirst) return -1; if (!(mod = malloc(sizeof(aim_module_t)))) return -1; memset(mod, 0, sizeof(aim_module_t)); if (modfirst(sess, mod) == -1) { free(mod); return -1; } if (aim__findmodule(sess, mod->name)) { if (mod->shutdown) mod->shutdown(sess, mod); free(mod); return -1; } mod->next = (aim_module_t *)sess->modlistv; sess->modlistv = mod; faimdprintf(sess, 1, "registered module %s (family 0x%04x, version = 0x%04x, tool 0x%04x, tool version 0x%04x)\n", mod->name, mod->family, mod->version, mod->toolid, mod->toolversion); return 0; }
int aim__registermodule(OscarData *od, int (*modfirst)(OscarData *, aim_module_t *)) { aim_module_t *mod; if (!od || !modfirst) return -1; mod = g_new0(aim_module_t, 1); if (modfirst(od, mod) == -1) { free(mod); return -1; } if (aim__findmodule(od, mod->name)) { if (mod->shutdown) mod->shutdown(od, mod); free(mod); return -1; } mod->next = (aim_module_t *)od->modlistv; od->modlistv = mod; gaim_debug_misc("oscar", "registered module %s (family 0x%04x, version = 0x%04x, tool 0x%04x, tool version 0x%04x)\n", mod->name, mod->family, mod->version, mod->toolid, mod->toolversion); return 0; }