소스 검색

* Only stats_add() if do_op() returns 1

svn: 411
Bryan Drewery 22 년 전
부모
커밋
d902a810a6
4개의 변경된 파일16개의 추가작업 그리고 21개의 파일을 삭제
  1. 1 2
      src/mod/irc.mod/cmdsirc.c
  2. 1 1
      src/mod/irc.mod/irc.h
  3. 5 5
      src/mod/irc.mod/mode.c
  4. 9 13
      src/mod/irc.mod/msgcmds.c

+ 1 - 2
src/mod/irc.mod/cmdsirc.c

@@ -470,10 +470,9 @@ static void cmd_op(struct userrec *u, int idx, char *par)
   }
 
 //  add_mode(chan, '+', 'o', nick);
-  if (!chan_hasop(m)) {
+  if (do_op(nick, chan, 1)) {
     dprintf(idx, "Gave op to %s on %s.\n", nick, chan->dname);
     stats_add(u, 0, 1);
-    do_op(nick, chan, 1);
   }
   next:;
     if (!all)

+ 1 - 1
src/mod/irc.mod/irc.h

@@ -33,7 +33,7 @@ static void flush_mode(struct chanset_t *, int);
 
 static void detect_autokick(char *, char *, struct chanset_t *, char *);
 /* static int target_priority(struct chanset_t *, memberlist *, int); */
-static void do_op(char *, struct chanset_t *, int);
+static int do_op(char *, struct chanset_t *, int);
 static void request_op(struct chanset_t *);
 static void request_in(struct chanset_t *);
 static void reset_chan_info(struct chanset_t *);

+ 5 - 5
src/mod/irc.mod/mode.c

@@ -22,14 +22,12 @@ static int reversing = 0;
 static struct flag_record user   = {FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0};
 static struct flag_record victim = {FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0};
 
-static void do_op(char *nick, struct chanset_t *chan, int force)
+static int do_op(char *nick, struct chanset_t *chan, int force)
 {
   memberlist *m = ismember(chan, nick);
 
-  if (!m) return;
-
-  if (!force && chan_hasop(m))
-    return;
+  if ((!m) || (m && !force && chan_hasop(m)))
+    return 0;
 
   if (channel_fastop(chan) || channel_take(chan)) {
     add_mode(chan, '+', 'o', nick);
@@ -39,7 +37,9 @@ static void do_op(char *nick, struct chanset_t *chan, int force)
     dprintf(DP_MODE, tmp);
     nfree(tmp);
   }
+  return 1;
 }
+
 #define NEW_ADDMODE 1
 #ifdef NEW_ADDMODE
 void dequeue_op_deop(struct chanset_t * chan);

+ 9 - 13
src/mod/irc.mod/msgcmds.c

@@ -68,19 +68,18 @@ static int msg_op(char *nick, char *host, struct userrec *u, char *par)
         if (chan && channel_active(chan)) {
           get_user_flagrec(u, &fr, par);
           if (chk_op(fr, chan)) {
-            stats_add(u, 0, 1);
-            do_op(nick, chan, 1);
+            if (do_op(nick, chan, 1))
+              stats_add(u, 0, 1);
           }
-          putlog(LOG_CMDS, "*", "(%s!%s) !%s! OP %s",
-			  nick, host, u->handle, par);
+          putlog(LOG_CMDS, "*", "(%s!%s) !%s! OP %s", nick, host, u->handle, par);
           return 1;
         }
       } else {
         for (chan = chanset; chan; chan = chan->next) {
           get_user_flagrec(u, &fr, chan->dname);
           if (chk_op(fr, chan)) {
-            stats_add(u, 0, 1);
-            do_op(nick, chan, 1);
+            if (do_op(nick, chan, 1))
+              stats_add(u, 0, 1);
           }
         }
         putlog(LOG_CMDS, "*", "(%s!%s) !%s! OP", nick, host, u->handle);
@@ -422,20 +421,17 @@ static int msgc_op(char *nick, char *host, struct userrec *u, char *par, char *c
     if (chan && channel_active(chan)) {
       get_user_flagrec(u, &fr, chan->dname);
       if (chk_op(fr, chan)) {
-        stats_add(u, 0, 1);
-        do_op(nick, chan, force);
+        if (do_op(nick, chan, force))
+          stats_add(u, 0, 1);
       }
       return 1;
     }
   } else {
     for (chan = chanset; chan; chan = chan->next) {
-      int op = 0;
       get_user_flagrec(u, &fr, chan->dname);
       if (chk_op(fr, chan)) {
-        if (!op) 
-          stats_add(u, 0, 1);
-        op = 1;
-        do_op(nick, chan, force);
+       if (do_op(nick, chan, force))
+         stats_add(u, 0, 1);
       }
     }
   }