diff options
| author | viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b <viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-09-03 23:58:28 +0000 |
|---|---|---|
| committer | viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b <viper viper@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-09-03 23:58:28 +0000 |
| commit | 847291546199b3da1e8f8141fc5b0e630653b43d (patch) | |
| tree | 40532a950d5036d29dbfc3be87317515052078c2 /src/core | |
| parent | 8e35ae5f27200c278f2bcd0d522dfb7a46cf5d6e (diff) | |
BUILD : 1.7.21 (1428) BUGS : 930 NOTES : Rewrote the ignore system to handle both nicks and masks properly.
git-svn-id: svn://svn.anope.org/anope/trunk@1428 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1143 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/os_ignore.c | 88 |
1 files changed, 16 insertions, 72 deletions
diff --git a/src/core/os_ignore.c b/src/core/os_ignore.c index 7b65a938d..6ae5ad16f 100644 --- a/src/core/os_ignore.c +++ b/src/core/os_ignore.c @@ -18,8 +18,6 @@ int do_ignorelist(User * u); void myOperServHelp(User * u); int do_ignoreuser(User * u); -int do_clearignore(User * u); -void delete_ignore(const char *nick); /** * Create the command, and tell anope about it. @@ -79,7 +77,6 @@ int do_ignoreuser(User * u) } if (!stricmp(cmd, "ADD")) { - char *time = strtok(NULL, " "); char *nick = strtok(NULL, " "); char *rest = strtok(NULL, ""); @@ -103,101 +100,48 @@ int do_ignoreuser(User * u) notice_lang(s_OperServ, u, OPER_IGNORE_PERM_DONE, nick); } else { add_ignore(nick, t); - notice_lang(s_OperServ, u, OPER_IGNORE_TIME_DONE, nick, - time); + notice_lang(s_OperServ, u, OPER_IGNORE_TIME_DONE, nick, time); } } } else if (!stricmp(cmd, "LIST")) { do_ignorelist(u); - } - else if (!stricmp(cmd, "DEL")) { + } else if (!stricmp(cmd, "DEL")) { char *nick = strtok(NULL, " "); if (!nick) { notice_lang(s_OperServ, u, OPER_IGNORE_SYNTAX); } else { - if (get_ignore(nick) == 0) { - notice_lang(s_OperServ, u, OPER_IGNORE_LIST_NOMATCH, nick); - return MOD_CONT; - } else { - delete_ignore(nick); + if (delete_ignore(nick)) { notice_lang(s_OperServ, u, OPER_IGNORE_DEL_DONE, nick); + return MOD_CONT; } + notice_lang(s_OperServ, u, OPER_IGNORE_LIST_NOMATCH, nick); } } else if (!stricmp(cmd, "CLEAR")) { - do_clearignore(u); - + clear_ignores(); + notice_lang(s_OperServ, u, OPER_IGNORE_LIST_CLEARED); + return MOD_CONT; } else notice_lang(s_OperServ, u, OPER_IGNORE_SYNTAX); + return MOD_CONT; } /* shows the Services ignore list */ - int do_ignorelist(User * u) { - int sent_header = 0; IgnoreData *id; - int i; - for (i = 0; i < 256; i++) { - for (id = ignore[i]; id; id = id->next) { - if (!sent_header) { - notice_lang(s_OperServ, u, OPER_IGNORE_LIST); - sent_header = 1; - } - notice_user(s_OperServ, u, "%s", id->who); - } - } - if (!sent_header) + if (!ignore) { notice_lang(s_OperServ, u, OPER_IGNORE_LIST_EMPTY); - return MOD_CONT; -} - -/* deletes a nick from the ignore list */ - -void delete_ignore(const char *nick) -{ - IgnoreData *ign, *prev; - IgnoreData **whichlist; - - if (!nick || !*nick) { - return; - } - - whichlist = &ignore[tolower(nick[0])]; - - for (ign = *whichlist, prev = NULL; ign; prev = ign, ign = ign->next) { - if (stricmp(ign->who, nick) == 0) - break; + return MOD_CONT; } - /* If the ignore was not found, bail out -GD */ - if (!ign) - return; - if (prev) - prev->next = ign->next; - else - *whichlist = ign->next; - free(ign); - ign = NULL; -} -/**************************************************************************/ -/* Cleares the Services ignore list */ + notice_lang(s_OperServ, u, OPER_IGNORE_LIST); + for (id = ignore; id; id = id->next) + notice_user(s_OperServ, u, "%s", id->mask); -int do_clearignore(User * u) -{ - IgnoreData *id = NULL, *next = NULL; - int i; - for (i = 0; i < 256; i++) { - for (id = ignore[i]; id; id = next) { - next = id->next; - free(id); - if (!next) { - ignore[i] = NULL; - } - } - } - notice_lang(s_OperServ, u, OPER_IGNORE_LIST_CLEARED); return MOD_CONT; } + +/* EOF */ |
