1
0
mirror of https://github.com/anope/anope.git synced 2026-07-08 14:03:13 +02:00

Applied adams patch for re-ordering lists

git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/stable@2145 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
robbeh
2009-03-07 17:45:11 +00:00
parent ef83568646
commit f98a3a85d6
3 changed files with 67 additions and 1 deletions
+2 -1
View File
@@ -12,7 +12,8 @@ Provided by mooncup <mooncup@anonnet.org> - 2009
02/04 F Automatically reapply vhost on hs off for unreal32. [ #00]
Provided by Adam <Adam@SubZeroIRC.net> - 2009
01/28 F Added internal support for +j channelmodes. [#1001]
07/03 F Channel list re-ordering. [#1024]
01/28 F Added internal support for +j channelmodes. [#1001]
Anope Version 1.8.0
-------------------
+40
View File
@@ -279,6 +279,25 @@ int do_access(User * u)
return MOD_CONT;
}
for (b = 0; b < ci->accesscount; b++) {
if (ci->access[b].in_use) {
for (a = 0; a < ci->accesscount; a++) {
if (a > b)
break;
if (!ci->access[a].in_use) {
ci->access[a].in_use = 1;
ci->access[a].level = ci->access[b].level;
ci->access[a].nc = ci->access[b].nc;
ci->access[a].last_seen =
ci->access[b].last_seen;
ci->access[b].nc = NULL;
ci->access[b].in_use = 0;
break;
}
}
}
}
/* Special case: is it a number/list? Only do search if it isn't. */
if (isdigit(*nick) && strspn(nick, "1234567890,-") == strlen(nick)) {
int count, last = -1, perm = 0;
@@ -372,11 +391,32 @@ int do_access(User * u)
}
} else if (stricmp(cmd, "LIST") == 0) {
int sent_header = 0;
int a, b;
if (ci->accesscount == 0) {
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, chan);
return MOD_CONT;
}
for (b = 0; b < ci->accesscount; b++) {
if (ci->access[b].in_use) {
for (a = 0; a < ci->accesscount; a++) {
if (a > b)
break;
if (!ci->access[a].in_use) {
ci->access[a].in_use = 1;
ci->access[a].level = ci->access[b].level;
ci->access[a].nc = ci->access[b].nc;
ci->access[a].last_seen =
ci->access[b].last_seen;
ci->access[b].nc = NULL;
ci->access[b].in_use = 0;
break;
}
}
}
}
if (nick && strspn(nick, "1234567890,-") == strlen(nick)) {
process_numlist(nick, NULL, access_list_callback, u, ci,
&sent_header);
+25
View File
@@ -477,6 +477,9 @@ int do_xop(User * u, char *xname, int xlev, int *xmsgs)
if (!sent_header)
notice_lang(s_ChanServ, u, xmsgs[7], chan);
} else if (stricmp(cmd, "CLEAR") == 0) {
uint16 j = 0;
int a, b;
if (readonly) {
notice_lang(s_ChanServ, u, CHAN_ACCESS_DISABLED);
return MOD_CONT;
@@ -496,9 +499,31 @@ int do_xop(User * u, char *xname, int xlev, int *xmsgs)
if (ci->access[i].in_use && ci->access[i].level == xlev) {
ci->access[i].nc = NULL;
ci->access[i].in_use = 0;
j++;
}
}
for (b = 0; b < ci->accesscount; b++) {
if (ci->access[b].in_use) {
for (a = 0; a < ci->accesscount; a++) {
if (a > b)
break;
if (!ci->access[a].in_use) {
ci->access[a].in_use = 1;
ci->access[a].level = ci->access[b].level;
ci->access[a].nc = ci->access[b].nc;
ci->access[a].last_seen =
ci->access[b].last_seen;
ci->access[b].nc = NULL;
ci->access[b].in_use = 0;
break;
}
}
}
}
ci->accesscount = ci->accesscount - j;
send_event(EVENT_ACCESS_CLEAR, 2, ci->name, u->nick);
notice_lang(s_ChanServ, u, xmsgs[13], ci->name);