summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorviper 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
committerviper 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
commit847291546199b3da1e8f8141fc5b0e630653b43d (patch)
tree40532a950d5036d29dbfc3be87317515052078c2 /src/core
parent8e35ae5f27200c278f2bcd0d522dfb7a46cf5d6e (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.c88
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 */