Просмотр исходного кода

* Don't me_opped now checks if -o mynick was matched

svn: 1357
Bryan Drewery 21 лет назад
Родитель
Сommit
cfce3d1ae5
2 измененных файлов с 15 добавлено и 10 удалено
  1. 3 5
      src/mod/irc.mod/chan.c
  2. 12 5
      src/mod/irc.mod/mode.c

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

@@ -998,11 +998,10 @@ void enforce_closed(struct chanset_t *chan) {
 static char *
 take_massopline(char *op, char **to_op)
 {
-  char *nicks = (char *) calloc(1, 51), *modes = (char *) calloc(1, 10), *ret = (char *) calloc(1, 61), *nick;
-  bool useop = 0;
+  char *nicks = (char *) calloc(1, 51), *modes = (char *) calloc(1, 10), *ret = (char *) calloc(1, 61), *nick = NULL;
+  register bool useop = 0;
 
   for (int i = 0; i < 4; i++) {
-    nick = NULL;
     if (*to_op[0] || op) {
       /* if 'op' then use it, then move on to to_op */
       if (!useop && op) {
@@ -1053,7 +1052,6 @@ take_makeline(char *op, char *deops, unsigned int deopn)
     strcat(ret, " ");
   }
 
-  /* putlog(LOG_MISC, "*", "modeline: %s", ret); */
   return ret;  
 }
 
@@ -1064,7 +1062,7 @@ do_take(struct chanset_t *chan)
   unsigned int lines = 0, deopn, i;
   char *to_op = (char *) calloc(1, 2048), *to_op_ptr = to_op;
   char *to_deop = (char *) calloc(1, 2048), *to_deop_ptr = to_deop;
-  bool hasop, isbot;
+  register bool hasop, isbot;
 
   for (memberlist *m = chan->channel.member; m && m->nick[0]; m = m->next) {
     hasop = (m->flags & CHANOP);

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

@@ -900,8 +900,8 @@ gotmode(char *from, char *msg)
 
       if (!isserver) {
         char **modes = (char **) calloc(modesperline + 1, sizeof(char *));
-        char tmp[1024] = "", *p = NULL, work[1024] = "", *wptr = work, sign = '+', *mp;
-        int modecnt = 0, i = 0, n = 0, ops = 0, deops = 0, bans = 0, unbans = 0;
+        char *p = NULL, work[1024] = "", *wptr = work, sign = '+', *mp;
+        int modecnt = 0, ops = 0, deops = 0, bans = 0, unbans = 0;
         bool me_opped = 0;
 
         /* Split up the mode: #chan modes param param param param */
@@ -925,9 +925,12 @@ gotmode(char *from, char *msg)
                 if (sign == '+') {
                   ops++;
                   if (match_my_nick(mp))
-                    me_opped++;
-                } else
+                    me_opped = 1;
+                } else {
                   deops++;
+                  if (match_my_nick(mp))
+                    me_opped = 0;
+                }
               }
               if (p[0] == 'b') {
                 if (sign == '+')
@@ -952,6 +955,8 @@ gotmode(char *from, char *msg)
 
         /* check for mdop */
         if (me_op(chan)) {
+          char tmp[1024] = "";
+
           if (role && (!u || (u && !u->bot)) && m && !chan_sentkick(m)) {
             if (deops >= 3) {
               m->flags |= SENTKICK;
@@ -978,6 +983,8 @@ gotmode(char *from, char *msg)
             }
           }
           if (ops && u) {
+            int i = 0, n = 0;
+
             if (u->bot && !channel_fastop(chan) && !channel_take(chan)) {
               int isbadop = 0;
 
@@ -1095,7 +1102,7 @@ gotmode(char *from, char *msg)
             }
           }
         }
-        for (i = 0; i < modecnt; i++)
+        for (int i = 0; i < modecnt; i++)
           if (modes[i])
             free(modes[i]);
         free(modes);