summaryrefslogtreecommitdiff
path: root/src/operserv.c
diff options
context:
space:
mode:
authortrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-11-24 03:54:03 +0000
committertrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-11-24 03:54:03 +0000
commit9233f879d14728673ca82b1a7d16341e79d609df (patch)
tree5f352da2ffe6ba00acea5afcbf435420ccca7f69 /src/operserv.c
parenta82bbfb6a129e55b9e8bacf72189e053c261c0d4 (diff)
BUILD : 1.7.6 (461) BUGS : 230 NOTES : 1. Moving Services Operators to Services Admins and vice-versa (230), 2. PTlink anope_cmd_server() had a minor issue thats now fixed
git-svn-id: svn://svn.anope.org/anope/trunk@461 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@315 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/operserv.c')
-rw-r--r--src/operserv.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/operserv.c b/src/operserv.c
index 739ea2685..025005d44 100644
--- a/src/operserv.c
+++ b/src/operserv.c
@@ -4040,8 +4040,15 @@ static int do_admin(User * u)
notice_lang(s_OperServ, u, OPER_ADMIN_REACHED_LIMIT, nick);
return MOD_CONT;
} else {
- na->nc->flags |= NI_SERVICES_ADMIN;
- notice_lang(s_OperServ, u, OPER_ADMIN_ADDED, nick);
+ if (na->nc->flags & NI_SERVICES_OPER
+ && (res = slist_indexof(&servopers, na->nc)) != -1) {
+ slist_delete(&servopers, res);
+ na->nc->flags |= NI_SERVICES_ADMIN;
+ notice_lang(s_OperServ, u, OPER_ADMIN_MOVED, nick);
+ } else {
+ na->nc->flags |= NI_SERVICES_ADMIN;
+ notice_lang(s_OperServ, u, OPER_ADMIN_ADDED, nick);
+ }
}
if (readonly)
@@ -4329,8 +4336,15 @@ static int do_oper(User * u)
notice_lang(s_OperServ, u, OPER_OPER_REACHED_LIMIT, nick);
return MOD_CONT;
} else {
- na->nc->flags |= NI_SERVICES_OPER;
- notice_lang(s_OperServ, u, OPER_OPER_ADDED, nick);
+ if (na->nc->flags & NI_SERVICES_ADMIN
+ && (res = slist_indexof(&servadmins, na->nc)) != -1) {
+ slist_delete(&servadmins, res);
+ na->nc->flags |= NI_SERVICES_OPER;
+ notice_lang(s_OperServ, u, OPER_OPER_MOVED, nick);
+ } else {
+ na->nc->flags |= NI_SERVICES_OPER;
+ notice_lang(s_OperServ, u, OPER_OPER_ADDED, nick);
+ }
}
if (readonly)