Преглед изворни кода

Consolidate some chk_autoop() logic.

Bryan Drewery пре 10 година
родитељ
комит
f6892d18a0
3 измењених фајлова са 6 додато и 8 уклоњено
  1. 2 2
      src/flags.cc
  2. 1 1
      src/flags.h
  3. 3 5
      src/mod/irc.mod/chan.cc

+ 2 - 2
src/flags.cc

@@ -459,9 +459,9 @@ real_chk_op(const struct flag_record fr, const struct chanset_t *chan, bool botb
 }
 
 int
-chk_autoop(const struct flag_record fr, const struct chanset_t *chan)
+chk_autoop(memberlist *m, const struct flag_record fr, const struct chanset_t *chan)
 {
-  if (glob_bot(fr) || !chan)
+  if (glob_bot(fr) || !chan || !m->user || u_pass_match(m->user, "-"))
     return 0;
   if (!channel_take(chan) && !privchan(fr, chan, PRIV_OP) && chk_op(fr, chan) && !chk_deop(fr, chan)) {
     if (channel_autoop(chan) || chan_autoop(fr) || glob_autoop(fr))

+ 1 - 1
src/flags.h

@@ -153,7 +153,7 @@ char geticon(int);
 int privchan(const struct flag_record, const struct chanset_t *, int);
 #define chk_op(fr, chan) real_chk_op(fr, chan, 1)
 int real_chk_op(const struct flag_record, const struct chanset_t *, bool);
-int chk_autoop(const struct flag_record, const struct chanset_t *);
+int chk_autoop(memberlist *, const struct flag_record, const struct chanset_t *);
 #define chk_deop(fr, chan) real_chk_deop(fr, chan, 1)
 int real_chk_deop(const struct flag_record, const struct chanset_t *, bool);
 #define chk_voice(fr, chan) (\

+ 3 - 5
src/mod/irc.mod/chan.cc

@@ -1222,7 +1222,7 @@ static void check_this_member(struct chanset_t *chan, char *nick, struct flag_re
        (!loading && userlist && chan_bitch(chan) && !chk_op(*fr, chan)) ) ) {
     /* if (target_priority(chan, m, 1)) */
       add_mode(chan, '-', 'o', m);
-  } else if (!chan_hasop(m) && dovoice(chan) && m->user && !u_pass_match(m->user, "-") && chk_autoop(*fr, chan)) {
+  } else if (!chan_hasop(m) && dovoice(chan) && chk_autoop(m, *fr, chan)) {
     do_op(m, chan, 1, 0);
   }
   if (dovoice(chan)) {
@@ -2857,17 +2857,15 @@ static int gotjoin(char *from, char *chname)
         }
 #endif /* CACHE */
         if (!splitjoin) {
-          bool common_checks = dovoice(chan) && !glob_bot(fr);
-
           /* Autoop */
           if (!chan_hasop(m) && 
                (op || 
-               (common_checks && !u_pass_match(m->user, "-") && chk_autoop(fr, chan)))) {
+               (dovoice(chan) && chk_autoop(m, fr, chan)))) {
             do_op(m, chan, 1, 0);
           }
 
           /* +v or +voice */
-          if (!chan_hasvoice(m) && common_checks) {
+          if (!chan_hasvoice(m) && dovoice(chan)) {
             if (m->user) {
               if (!(m->flags & EVOICE) &&
                   (