]> jfr.im git - irc/quakenet/snircd-patchqueue.git/blob - serviceoplevels.patch
rename patch files
[irc/quakenet/snircd-patchqueue.git] / serviceoplevels.patch
1 # HG changeset patch
2 # Parent 98171823d5d6a18c0dad624998d353d9f2a4f45f
3
4 diff -r 98171823d5d6 include/channel.h
5 --- a/include/channel.h Fri Jul 19 22:12:44 2013 +0100
6 +++ b/include/channel.h Fri Jul 19 22:13:32 2013 +0100
7 @@ -208,6 +208,7 @@
8
9 #define MAXOPLEVELDIGITS 3
10 #define MAXOPLEVEL 999
11 +#define MINOPLEVEL 100 /* minimum oplevel that ordinary users can set */
12
13 #define IsZombie(x) ((x)->status & CHFL_ZOMBIE) /**< see \ref zombie */
14 #define IsDeopped(x) ((x)->status & CHFL_DEOPPED)
15 diff -r 98171823d5d6 ircd/channel.c
16 --- a/ircd/channel.c Fri Jul 19 22:12:44 2013 +0100
17 +++ b/ircd/channel.c Fri Jul 19 22:13:32 2013 +0100
18 @@ -3226,14 +3226,19 @@
19 * MAXOPLEVEL, get oplevel MAXOPLEVEL.
20 * Otherwise, get state->member's oplevel+1.
21 */
22 - if (state->cli_change[i].oplevel <= MAXOPLEVEL)
23 - SetOpLevel(member, state->cli_change[i].oplevel);
24 + if (state->cli_change[i].oplevel <= MAXOPLEVEL) {
25 + if ((IsChannelService(state->sptr) && IsService(cli_user(state->sptr)->server)) || (IsService(state->sptr))) {
26 + SetOpLevel(member, state->cli_change[i].oplevel);
27 + } else {
28 + SetOpLevel(member, state->cli_change[i].oplevel > MINOPLEVEL ? state->cli_change[i].oplevel : MINOPLEVEL);
29 + }
30 + }
31 else if (!state->member)
32 SetOpLevel(member, MAXOPLEVEL);
33 else if (OpLevel(state->member) >= MAXOPLEVEL)
34 SetOpLevel(member, OpLevel(state->member));
35 else
36 - SetOpLevel(member, OpLevel(state->member) + 1);
37 + SetOpLevel(member, OpLevel(state->member) >= MINOPLEVEL ? OpLevel(state->member) + 1 : MINOPLEVEL);
38 }
39
40 /* actually effect the change */