Przeglądaj źródła

* Consolidate duplicate +ebI checking code

Bryan Drewery 16 lat temu
rodzic
commit
62a207b89c
3 zmienionych plików z 22 dodań i 31 usunięć
  1. 1 15
      src/mod/irc.mod/chan.c
  2. 20 16
      src/mod/irc.mod/irc.c
  3. 1 0
      src/mod/irc.mod/irc.h

+ 1 - 15
src/mod/irc.mod/chan.c

@@ -1397,21 +1397,7 @@ void recheck_channel(struct chanset_t *chan, int dobans)
 
     /* This is a bad hack for +e/+I */
     if (dobans == 2 && chan->channel.members > 1) {
-      if (!(chan->status & (CHAN_ASKEDBANS|CHAN_HAVEBANS))) {
-        chan->status |= CHAN_ASKEDBANS;
-        dprintf(DP_MODE, "MODE %s +b\n", chan->name);
-      }
-      if (do_eI) {
-        chan->channel.last_eI = now;
-        if (!(chan->ircnet_status & CHAN_ASKED_EXEMPTS) && use_exempts == 1) {
-          chan->ircnet_status |= CHAN_ASKED_EXEMPTS;
-          dprintf(DP_MODE, "MODE %s +e\n", chan->name);
-        }
-        if (!(chan->ircnet_status & CHAN_ASKED_INVITES) && use_invites == 1) {
-          chan->ircnet_status |= CHAN_ASKED_INVITES;
-          dprintf(DP_MODE, "MODE %s +I\n", chan->name);
-        }
-      }
+      get_channel_masks(chan);
     }
 
   //Check +d/+O/+k

+ 20 - 16
src/mod/irc.mod/irc.c

@@ -1286,6 +1286,25 @@ any_ops(struct chanset_t *chan)
   return 1;
 }
 
+static void get_channel_masks(struct chanset_t* chan) {
+  if (!(chan->status & CHAN_ASKEDBANS)) {
+    chan->status |= CHAN_ASKEDBANS;
+    dprintf(DP_MODE, "MODE %s +b\n", chan->name);
+  }
+
+  if (do_eI) {
+    chan->channel.last_eI = now;
+    if (!(chan->ircnet_status & CHAN_ASKED_EXEMPTS) && use_exempts == 1) {
+      chan->ircnet_status |= CHAN_ASKED_EXEMPTS;
+      dprintf(DP_MODE, "MODE %s +e\n", chan->name);
+    }
+    if (!(chan->ircnet_status & CHAN_ASKED_INVITES) && use_invites == 1) {
+      chan->ircnet_status |= CHAN_ASKED_INVITES;
+      dprintf(DP_MODE, "MODE %s +I\n", chan->name);
+    }
+  }
+}
+
 /* Reset the channel information.
  */
 void
@@ -1313,22 +1332,7 @@ reset_chan_info(struct chanset_t *chan)
     /* don't bother checking bans if it's +take */
     if (!channel_take(chan)) {
       if (opped) {
-        if (!(chan->status & CHAN_ASKEDBANS)) {
-          chan->status |= CHAN_ASKEDBANS;
-          dprintf(DP_MODE, "MODE %s +b\n", chan->name);
-        }
-
-        if (do_eI) {
-          chan->channel.last_eI = now;
-          if (!(chan->ircnet_status & CHAN_ASKED_EXEMPTS) && use_exempts == 1) {
-            chan->ircnet_status |= CHAN_ASKED_EXEMPTS;
-            dprintf(DP_MODE, "MODE %s +e\n", chan->name);
-          }
-          if (!(chan->ircnet_status & CHAN_ASKED_INVITES) && use_invites == 1) {
-            chan->ircnet_status |= CHAN_ASKED_INVITES;
-            dprintf(DP_MODE, "MODE %s +I\n", chan->name);
-          }
-        }
+        get_channel_masks(chan);
       }
     }
     /* These 2 need to get out asap, so into the mode queue */

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

@@ -104,6 +104,7 @@ void resolve_to_member(struct chanset_t *chan, char *nick, char *host);
 typedef struct resolvstruct resolv_member;
 void resolve_to_rbl(struct chanset_t *chan, const char *host, struct resolvstruct *r = NULL);
 static void do_mask(struct chanset_t *chan, masklist *m, char *mask, char Mode);
+static void get_channel_masks(struct chanset_t* chan);
 
 #endif /* MAKING_IRC */