diff options
author | rburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-11-15 17:55:55 +0000 |
---|---|---|
committer | rburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-11-15 17:55:55 +0000 |
commit | b2b0e1d235686ff8389d2930a53366abefd1bb9d (patch) | |
tree | 262a47642e64f91d8a240dad7d281cd205e13b50 /src | |
parent | 5384c97c141c9b3acfecb154b8bd41e57f706e00 (diff) |
Create and use constructors for NickInfo, NickAlias, ChannelInfo. Inherit all three from Extensible. Convert to use that instead of moduleData stuff.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1705 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/chanserv.c | 7 | ||||
-rw-r--r-- | src/core/ns_forbid.c | 2 | ||||
-rw-r--r-- | src/core/ns_register.c | 2 | ||||
-rw-r--r-- | src/modules.c | 6 | ||||
-rw-r--r-- | src/modules/os_info.c | 158 | ||||
-rw-r--r-- | src/nickserv.c | 19 |
6 files changed, 101 insertions, 93 deletions
diff --git a/src/chanserv.c b/src/chanserv.c index e95a2a238..44b2a690a 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -324,7 +324,7 @@ void load_cs_dbase(void) while ((c = getc_db(f)) != 0) { if (c != 1) fatal("Invalid format in %s", ChanDBName); - ci = (ChannelInfo *)scalloc(sizeof(ChannelInfo), 1); + ci = new ChannelInfo(); *last = ci; last = &ci->next; ci->prev = prev; @@ -1640,7 +1640,7 @@ ChannelInfo *makechan(const char *chan) int i; ChannelInfo *ci; - ci = (ChannelInfo *)scalloc(sizeof(ChannelInfo), 1); + ci = new ChannelInfo(); strscpy(ci->name, chan, CHANMAX); ci->time_registered = time(NULL); reset_levels(ci); @@ -1806,9 +1806,8 @@ int delchan(ChannelInfo * ci) if (debug >= 2) { alog("debug: delchan() calling on moduleCleanStruct()"); } - moduleCleanStruct(&ci->moduleData); - free(ci); + delete ci; if (nc) nc->channelcount--; diff --git a/src/core/ns_forbid.c b/src/core/ns_forbid.c index cc3ed5b90..7783024fb 100644 --- a/src/core/ns_forbid.c +++ b/src/core/ns_forbid.c @@ -125,7 +125,7 @@ NickAlias *makenick(const char *nick) NickCore *nc; /* First make the core */ - nc = (NickCore *)scalloc(1, sizeof(NickCore)); + nc = new NickCore(); nc->display = sstrdup(nick); slist_init(&nc->aliases); insert_core(nc); diff --git a/src/core/ns_register.c b/src/core/ns_register.c index 0a0e073ac..780101b98 100644 --- a/src/core/ns_register.c +++ b/src/core/ns_register.c @@ -405,7 +405,7 @@ NickAlias *makenick(const char *nick) NickCore *nc; /* First make the core */ - nc = (NickCore *)scalloc(1, sizeof(NickCore)); + nc = new NickCore(); nc->display = sstrdup(nick); slist_init(&nc->aliases); insert_core(nc); diff --git a/src/modules.c b/src/modules.c index ceebe1660..3d9355944 100644 --- a/src/modules.c +++ b/src/modules.c @@ -1312,22 +1312,16 @@ void moduleDelAllDataMod(Module * m) } /* Remove the nick Cores */ for (nc = nclists[i]; nc; nc = nc->next) { - moduleDelAllData(&nc->moduleData); /* Remove any memo data for this nick core */ for (j = 0; j < nc->memos.memocount; j++) { moduleCleanStruct(&nc->memos.memos[j].moduleData); } } - /* Remove the nick Aliases */ - for (na = nalists[i]; na; na = na->next) { - moduleDelAllData(&na->moduleData); - } } for (i = 0; i < 256; i++) { /* Remove any chan info data */ for (ci = chanlists[i]; ci; ci = ci->next) { - moduleDelAllData(&ci->moduleData); /* Remove any memo data for this nick core */ for (j = 0; j < ci->memos.memocount; j++) { moduleCleanStruct(&ci->memos.memos[j].moduleData); diff --git a/src/modules/os_info.c b/src/modules/os_info.c index 6a123ae2d..932cbcfbe 100644 --- a/src/modules/os_info.c +++ b/src/modules/os_info.c @@ -199,53 +199,53 @@ class OSInfo : public Module /* OINFO_SYNTAX */ "Syntax: OINFO [ADD|DEL] Nickname <Information>", /* OINFO_ADD_SUCCESS */ - "Eine OperInfo Linie wurde zu den Nicknamen %s hinzugefьgt", + "Eine OperInfo Linie wurde zu den Nicknamen %s hinzugefgt", /* OINFO_DEL_SUCCESS */ "Die OperInfo Linie wurde von den Nicknamen %s enfernt", /* OCINFO_SYNTAX */ "Syntax: OINFO [ADD|DEL] Channel <Information>", /* OCINFO_ADD_SUCCESS */ - "Eine OperInfo Linie wurde zu den Channel %s hinzugefьgt", + "Eine OperInfo Linie wurde zu den Channel %s hinzugefgt", /* OCINFO_DEL_SUCCESS */ "Die OperInfo Linie wurde von den Channel %s enfernt", /* OINFO_HELP */ "Syntax: OINFO [ADD|DEL] Nickname <Information>\n" - "Addiert oder lцscht eine OperInfo Linie zu den angegebenen\n" + "Addiert oder lscht eine OperInfo Linie zu den angegebenen\n" "Nicknamen.Sie wird angezeigt wenn ein Oper mit /ns info sich\n" - "ьber den Nicknamen informiert.", + "ber den Nicknamen informiert.", /* OCINFO_HELP */ "Syntax: OINFO [ADD|DEL] chan <info>\n" - "Addiert oder lцscht eine OperInfo Linie zu den angegebenen\n" + "Addiert oder lscht eine OperInfo Linie zu den angegebenen\n" "Channel.Sie wird angezeigt wenn ein Oper mit /cs info sich\n" - "ьber den Channel informiert.", + "ber den Channel informiert.", /* OINFO_HELP_CMD */ - " OINFO Addiert / Lцscht eine OperInfo Linie zu / von einen Nicknamen", + " OINFO Addiert / Lscht eine OperInfo Linie zu / von einen Nicknamen", /* OCINFO_HELP_CMD */ - " OINFO Addiert / Lцscht eine OperInfo Linie zu / von einen Channel" + " OINFO Addiert / Lscht eine OperInfo Linie zu / von einen Channel" }; const char* langtable_pt[] = { /* OINFO_SYNTAX */ - "Sintaxe: OINFO [ADD|DEL] nick <informaзгo>", + "Sintaxe: OINFO [ADD|DEL] nick <informao>", /* OINFO_ADD_SUCCESS */ "A linha OperInfo foi adicionada ao nick %s", /* OINFO_DEL_SUCCESS */ "A linha OperInfo foi removida do nick %s", /* OCINFO_SYNTAX */ - "Sintaxe: OINFO [ADD|DEL] canal <informaзгo>", + "Sintaxe: OINFO [ADD|DEL] canal <informao>", /* OCINFO_ADD_SUCCESS */ "A linha OperInfo foi adicionada ao canal %s", /* OCINFO_DEL_SUCCESS */ "A linha OperInfo foi removida do canal %s", /* OINFO_HELP */ - "Sintaxe: OINFO [ADD|DEL] nick <informaзгo>\n" - "Adiciona ou apaga informaзгo para Operadores ao nick fornecido\n" - "Isto serб mostrado quando qualquer Operador usar /ns info nick\n" - "e pode ser usado para 'etiquetar' usuбrios etc...", + "Sintaxe: OINFO [ADD|DEL] nick <informao>\n" + "Adiciona ou apaga informao para Operadores ao nick fornecido\n" + "Isto ser mostrado quando qualquer Operador usar /ns info nick\n" + "e pode ser usado para 'etiquetar' usurios etc...", /* OCINFO_HELP */ - "Sintaxe: OINFO [ADD|DEL] canal <informaзгo>\n" - "Adiciona ou apaga informaзгo para Operadores ao canal fornecido\n" - "Isto serб mostrado quando qualquer Operador usar /cs info canal\n" + "Sintaxe: OINFO [ADD|DEL] canal <informao>\n" + "Adiciona ou apaga informao para Operadores ao canal fornecido\n" + "Isto ser mostrado quando qualquer Operador usar /cs info canal\n" "e pode ser usado para 'etiquetar' canais etc...", /* OINFO_HELP_CMD */ " OINFO Adiciona ou Apaga a linha OperInfo para um nick", @@ -255,31 +255,31 @@ class OSInfo : public Module const char* langtable_ru[] = { /* OINFO_SYNTAX */ - "Синтаксис: OINFO ADD|DEL ник тест", + ": OINFO ADD|DEL ", /* OINFO_ADD_SUCCESS */ - "Опер-Информация для ника %s добавлена", + "- %s ", /* OINFO_DEL_SUCCESS */ - "Опер-Информация для ника %s была удалена", + "- %s ", /* OCINFO_SYNTAX */ - "Синтаксис: OINFO ADD|DEL #канал текст", + ": OINFO ADD|DEL # ", /* OCINFO_ADD_SUCCESS */ - "Опер-Информация для канала %s успешно установлена", + "- %s ", /* OCINFO_DEL_SUCCESS */ - "Опер-Информация для канала %s была удалена", + "- %s ", /* OINFO_HELP */ - "Синтаксис: OINFO ADD|DEL ник текст\n" - "Устанавливает или удаляет Опер-Информацию для указанного ника,\n" - "которая будет показана любому оператору, запрашивающему INFO ника.\n" - "Может быть использована для 'пометки' пользователей и т. д...", + ": OINFO ADD|DEL \n" + " - ,\n" + " , INFO .\n" + " '' . ...", /* OCINFO_HELP */ - "Синтаксис: OINFO ADD|DEL #канал текст\n" - "Устанавливает или удаляет Опер-Информацию для указанного канала,\n" - "которая будет показана любому оператору, запрашивающему INFO канала.\n" - "Может быть использована для 'пометки' каналов и т. д...", + ": OINFO ADD|DEL # \n" + " - ,\n" + " , INFO .\n" + " '' . ...", /* OINFO_HELP_CMD */ - " OINFO Добавляет/Удаляет опер-инфо для ника", + " OINFO / - ", /* OCINFO_HELP_CMD */ - " OINFO Добавляет/Удаляет опер-инфо для канала" + " OINFO / - " }; const char* langtable_it[] = { @@ -323,7 +323,20 @@ class OSInfo : public Module ~OSInfo() { char *av[1]; - + + for (int i = 0; i < 1024; i++) + { + /* Remove the nick Cores */ + for (NickCore *nc = nclists[i]; nc; nc = nc->next) + { + char *c; + if (nc->GetExt("os_modinfo", c)); + { + free(c); + nc->Shrink("os_modinfo"); + } + } + } av[0] = sstrdup(EVENT_START); mSaveData(1, av); free(av[0]); @@ -369,9 +382,8 @@ int myAddNickInfo(User * u) /* ok we've found the user */ if ((na = findnick(nick))) { /* Add the module data to the user */ - moduleAddData(&na->nc->moduleData, "info", info); - moduleNoticeLang(s_NickServ, u, - OINFO_ADD_SUCCESS, nick); + na->nc->Extend("os_info", strdup(info)); + moduleNoticeLang(s_NickServ, u, OINFO_ADD_SUCCESS, nick); /* NickCore not found! */ } else { notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, @@ -381,10 +393,16 @@ int myAddNickInfo(User * u) } } else if (strcasecmp(cmd, "DEL") == 0) { /* ok we've found the user */ - if ((na = findnick(nick))) { - moduleDelData(&na->nc->moduleData, "info"); - moduleNoticeLang(s_NickServ, u, - OINFO_DEL_SUCCESS, nick); + if ((na = findnick(nick))) + { + char *c; + if (na->nc->GetExt("os_info", c)) + { + free(c); + na->nc->Shrink("os_info"); + } + + moduleNoticeLang(s_NickServ, u, OINFO_DEL_SUCCESS, nick); /* NickCore not found! */ } else { notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, @@ -437,9 +455,8 @@ int myAddChanInfo(User * u) if (info) { if ((ci = cs_findchan(chan))) { /* Add the module data to the channel */ - moduleAddData(&ci->moduleData, "info", info); - moduleNoticeLang(s_ChanServ, u, - OCINFO_ADD_SUCCESS, chan); + ci->Extend("os_info", strdup(info)); + moduleNoticeLang(s_ChanServ, u, OCINFO_ADD_SUCCESS, chan); /* ChanInfo */ } else { notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, @@ -450,9 +467,13 @@ int myAddChanInfo(User * u) } else if (strcasecmp(cmd, "DEL") == 0) { if ((ci = cs_findchan(chan))) { /* Del the module data from the channel */ - moduleDelData(&ci->moduleData, "info"); - moduleNoticeLang(s_ChanServ, u, - OCINFO_DEL_SUCCESS, chan); + char *c; + if (ci->GetExt("os_info", c)) + { + free(c); + ci->Shrink("os_info"); + } + moduleNoticeLang(s_ChanServ, u, OCINFO_DEL_SUCCESS, chan); /* ChanInfo */ } else { notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, @@ -487,7 +508,6 @@ int myNickInfo(User * u) { char *text = NULL; char *nick = NULL; - char *info = NULL; NickAlias *na = NULL; /* Only show our goodies to opers */ @@ -500,9 +520,10 @@ int myNickInfo(User * u) /* ok we've found the user */ if ((na = findnick(nick))) { /* If we have any info on this user */ - if ((info = moduleGetData(&na->nc->moduleData, "info"))) { - notice_user(s_NickServ, u, " OperInfo: %s", info); - free(info); + char *c; + if (na->nc->GetExt("os_info", c)) + { + notice_user(s_NickServ, u, " OperInfo: %s", c); } /* NickCore not found! */ } else { @@ -524,7 +545,6 @@ int myChanInfo(User * u) { char *text = NULL; char *chan = NULL; - char *info = NULL; ChannelInfo *ci = NULL; /* Only show our goodies to opers */ @@ -536,9 +556,10 @@ int myChanInfo(User * u) if (chan) { if ((ci = cs_findchan(chan))) { /* If we have any info on this channel */ - if ((info = moduleGetData(&ci->moduleData, "info"))) { - notice_user(s_ChanServ, u, " OperInfo: %s", info); - free(info); + char *c; + if (ci->GetExt("os_info", c)) + { + notice_user(s_ChanServ, u, " OperInfo: %s", c); } } free(chan); @@ -584,14 +605,14 @@ int mLoadData(void) /* Take the \n from the end of the line */ info[len - 1] = '\0'; if (stricmp(type, "C") == 0) { - if ((ci = cs_findchan(name))) { - moduleAddData(&ci->moduleData, "info", - info); + if ((ci = cs_findchan(name))) + { + ci->Extend("os_info", strdup("info")); } } else if (stricmp(type, "N") == 0) { - if ((na = findnick(name))) { - moduleAddData(&na->nc->moduleData, "info", - info); + if ((na = findnick(name))) + { + na->nc->Extend("os_info", strdup(info)); } } free(info); @@ -619,7 +640,6 @@ int mSaveData(int argc, char **argv) int i = 0; int ret = 0; FILE *out; - char *info = NULL; if (argc >= 1) { if (!stricmp(argv[0], EVENT_START)) { @@ -632,9 +652,10 @@ int mSaveData(int argc, char **argv) for (i = 0; i < 1024; i++) { for (nc = nclists[i]; nc; nc = nc->next) { /* If we have any info on this user */ - if ((info = moduleGetData(&nc->moduleData, "info"))) { - fprintf(out, "N %s %s\n", nc->display, info); - free(info); + char *c; + if (nc->GetExt("os_info", c)) + { + fprintf(out, "N %s %s\n", nc->display, c); } } } @@ -643,9 +664,10 @@ int mSaveData(int argc, char **argv) for (i = 0; i < 256; i++) { for (ci = chanlists[i]; ci; ci = ci->next) { /* If we have any info on this channel */ - if ((info = moduleGetData(&ci->moduleData, "info"))) { - fprintf(out, "C %s %s\n", ci->name, info); - free(info); + char *c; + if (ci->GetExt("os_info", c)) + { + fprintf(out, "C %s %s\n", ci->name, c); } } } diff --git a/src/nickserv.c b/src/nickserv.c index 42a417cae..2e1a68934 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -197,7 +197,7 @@ void load_old_ns_dbase(void) if (c != 1) fatal("Invalid format in %s", NickDBName); - na = (NickAlias *)scalloc(sizeof(NickAlias), 1); + na = new NickAlias(); SAFE(read_buffer(bufn, f)); na->nick = sstrdup(bufn); @@ -268,7 +268,7 @@ void load_old_ns_dbase(void) /* This nick was a master nick, so it also has all the * core info! =) */ - nc = (NickCore *)scalloc(1, sizeof(NickCore)); + nc = new NickCore(); slist_init(&nc->aliases); /* The initial display is what used to be the master nick */ @@ -479,7 +479,7 @@ void load_ns_dbase(void) if (c != 1) fatal("Invalid format in %s", NickDBName); - nc = (NickCore *)scalloc(1, sizeof(NickCore)); + nc = new NickCore(); *nclast = nc; nclast = &nc->next; nc->prev = ncprev; @@ -565,7 +565,7 @@ void load_ns_dbase(void) if (c != 1) fatal("Invalid format in %s", NickDBName); - na = (NickAlias *)scalloc(1, sizeof(NickAlias)); + na = new NickAlias(); SAFE(read_string(&na->nick, f)); @@ -1262,10 +1262,7 @@ static int delcore(NickCore * nc) free(nc->memos.memos); } - moduleCleanStruct(&nc->moduleData); - - free(nc); - + delete nc; return 1; } @@ -1346,11 +1343,7 @@ int delnick(NickAlias * na) if (na->last_quit) free(na->last_quit); - moduleCleanStruct(&na->moduleData); - - free(na); - - + delete na; return 1; } |