Sfoglia il codice sorgente

Use enums for deflags

Bryan Drewery 14 anni fa
parent
commit
132249a3e9
6 ha cambiato i file con 51 aggiunte e 50 eliminazioni
  1. 11 9
      src/chan.h
  2. 18 18
      src/flags.c
  3. 11 12
      src/flags.h
  4. 6 6
      src/mod/channels.mod/cmdschan.c
  5. 1 1
      src/mod/irc.mod/chan.c
  6. 4 4
      src/mod/irc.mod/mode.c

+ 11 - 9
src/chan.h

@@ -61,10 +61,12 @@ typedef struct memstruct {
 #define chan_wasop(x) (x->flags & WASOP)
 #define chan_stopcheck(x) (x->flags & STOPCHECK)
 
-#define P_IGNORE	0
-#define P_DEOP		1
-#define P_KICK		2
-#define P_DELETE	3
+enum deflag_t {
+  DEFLAG_IGNORE = 0,
+  DEFLAG_DEOP = 1,
+  DEFLAG_KICK = 2,
+  DEFLAG_DELETE = 3,
+};
 
 /* Why duplicate this struct for exempts and invites only under another
  * name? <cybah>
@@ -176,11 +178,11 @@ struct chanset_t {
   int closed_ban;
   int closed_private;
   int closed_invite;
-  int bad_cookie;
-  int manop;
-  int mdop;
-  int mop;
-  int revenge;
+  deflag_t bad_cookie;
+  deflag_t manop;
+  deflag_t mdop;
+  deflag_t mop;
+  deflag_t revenge;
   int voice_non_ident;
   int ban_type;
   interval_t auto_delay;

+ 18 - 18
src/flags.c

@@ -564,64 +564,64 @@ whois_access(struct userrec *user, struct userrec *whois_user)
   return 1;
 }
 
-int deflag_translate(const char *buf)
+deflag_t deflag_translate(const char *buf)
 {
   if (str_isdigit(buf))
-    return (atoi(buf));
+    return (static_cast<deflag_t>(atoi(buf)));
 
   if (!strcasecmp(buf, "ignore"))
-    return P_IGNORE;
+    return DEFLAG_IGNORE;
   else if (!strcasecmp(buf, "deop"))
-    return P_DEOP;
+    return DEFLAG_DEOP;
   else if (!strcasecmp(buf, "kick"))
-    return P_KICK;
+    return DEFLAG_KICK;
   else if (!strcasecmp(buf, "delete") || !strcasecmp(buf, "remove"))
-    return P_DELETE;
-  return P_IGNORE;
+    return DEFLAG_DELETE;
+  return DEFLAG_IGNORE;
 }
 
 
-void deflag_user(struct userrec *u, int why, char *msg, struct chanset_t *chan)
+void deflag_user(struct userrec *u, deflag_event_t why, const char *msg, const struct chanset_t *chan)
 {
   char tmp[30] = "", tmp2[1024] = "";
   struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0 };
   int which = 0;
 
   switch (why) {
-  case DEFLAG_BADCOOKIE:
+  case DEFLAG_EVENT_BADCOOKIE:
     strlcpy(tmp, "Bad op cookie", sizeof(tmp));
     which = chan->bad_cookie;
     break;
-  case DEFLAG_MANUALOP:
+  case DEFLAG_EVENT_MANUALOP:
     strlcpy(tmp, STR("Manual op in -manop channel"), sizeof(tmp));
     which = chan->manop;
     break;
 #ifdef G_MEAN
-  case DEFLAG_MEAN_DEOP:
+  case DEFLAG_EVENT_MEAN_DEOP:
     strlcpy(tmp, STR("Deopped bot in +mean channel"), sizeof(tmp));
     ent = &CFG_MEANDEOP;
     break;
-  case DEFLAG_MEAN_KICK:
+  case DEFLAG_EVENT_MEAN_KICK:
     strlcpy(tmp, STR("Kicked bot in +mean channel"), sizeof(tmp));
     ent = &CFG_MEANDEOP;
     break;
-  case DEFLAG_MEAN_BAN:
+  case DEFLAG_EVENT_MEAN_BAN:
     strlcpy(tmp, STR("Banned bot in +mean channel"), sizeof(tmp));
     ent = &CFG_MEANDEOP;
     break;
 #endif /* G_MEAN */
-  case DEFLAG_MDOP:
+  case DEFLAG_EVENT_MDOP:
     strlcpy(tmp, "Mass deop", sizeof(tmp));
     which = chan->mdop;
     break;
-  case DEFLAG_MOP:
+  case DEFLAG_EVENT_MOP:
     strlcpy(tmp, "Mass op", sizeof(tmp));
     which = chan->mop;
     break;
   default:
     simple_snprintf(tmp, sizeof(tmp), "Reason #%i", why);
   }
-  if (which == P_DEOP) {
+  if (which == DEFLAG_DEOP) {
     putlog(LOG_WARN, "*",  "Setting %s +d (%s): %s", u->handle, tmp, msg);
     simple_snprintf(tmp2, sizeof(tmp2), "+d: %s (%s)", tmp, msg);
     set_user(&USERENTRY_COMMENT, u, tmp2);
@@ -640,7 +640,7 @@ void deflag_user(struct userrec *u, int why, char *msg, struct chanset_t *chan)
     /* did anything change? */
     if (fr.match)
       set_user_flagrec(u, &fr, chan->dname);
-  } else if (which == P_KICK) {
+  } else if (which == DEFLAG_KICK) {
     putlog(LOG_WARN, "*",  "Setting %s +dk (%s): %s", u->handle, tmp, msg);
     simple_snprintf(tmp2, sizeof(tmp2), "+dk: %s (%s)", tmp, msg);
     set_user(&USERENTRY_COMMENT, u, tmp2);
@@ -659,7 +659,7 @@ void deflag_user(struct userrec *u, int why, char *msg, struct chanset_t *chan)
     /* did anything change */
     if (fr.match)
       set_user_flagrec(u, &fr, chan->dname);
-  } else if (which == P_DELETE) {
+  } else if (which == DEFLAG_DELETE) {
     putlog(LOG_WARN, "*",  "Deleting %s (%s): %s", u->handle, tmp, msg);
     deluser(u->handle);
   } else {

+ 11 - 12
src/flags.h

@@ -48,16 +48,15 @@ struct flag_record {
  *   unused letters: bchijpstw
  */
 
-#define DEFLAG_BADCOOKIE   1
-#define DEFLAG_MANUALOP    2
-#ifdef G_MEAN
-#  define DEFLAG_MEAN_DEOP   3
-#  define DEFLAG_MEAN_KICK   4
-#  define DEFLAG_MEAN_BAN    5
-#endif /* G_MEAN */
-#define DEFLAG_MDOP        6
-#define DEFLAG_MOP	   7
-
+enum deflag_event_t {
+  DEFLAG_EVENT_BADCOOKIE = 1,
+  DEFLAG_EVENT_MANUALOP,
+  DEFLAG_EVENT_MEAN_DEOP,
+  DEFLAG_EVENT_MEAN_KICK,
+  DEFLAG_EVENT_MEAN_BAN,
+  DEFLAG_EVENT_MDOP,
+  DEFLAG_EVENT_MOP,
+};
 
 #define USER_DEFAULT	0
 
@@ -171,8 +170,8 @@ int dovoice(const struct chanset_t *);
 int doflood(const struct chanset_t *);
 int dolimit(const struct chanset_t *);
 int whois_access(struct userrec *, struct userrec *);
-void deflag_user(struct userrec *, int, char *, struct chanset_t *);
-int deflag_translate(const char *);
+void deflag_user(struct userrec *, deflag_event_t, const char *, const struct chanset_t *);
+deflag_t deflag_translate(const char *);
 
 
 #endif				/* _EGG_FLAGS_H */

+ 6 - 6
src/mod/channels.mod/cmdschan.c

@@ -1135,7 +1135,7 @@ static void show_int(int idx, char *work, int *cnt, const char *desc, int state,
 
 #define SHOW_FLAG(name, state) show_flag(idx, work, &cnt, name, state, sizeof(work))
 #define SHOW_INT(desc, state, yes, no) show_int(idx, work, &cnt, desc, state, yes, no, sizeof(work))
-#define P_STR deflag == P_KICK ? "Kick" : (deflag == P_DEOP ? "Deop" : (deflag == P_DELETE ? "Remove" : NULL))
+#define DEFLAG_STR deflag == DEFLAG_KICK ? "Kick" : (deflag == DEFLAG_DEOP ? "Deop" : (deflag == DEFLAG_DELETE ? "Remove" : NULL))
 #define F_STR(x) x == CHAN_FLAG_OP ? "Op" : (x == CHAN_FLAG_VOICE ? "Voice" : (x == CHAN_FLAG_USER ? "User" : NULL))
 static void cmd_chaninfo(int idx, char *par)
 {
@@ -1234,7 +1234,7 @@ static void cmd_chaninfo(int idx, char *par)
     dprintf(idx, "Channel settings:\n");
     deflag = chan->bad_cookie;
     SHOW_INT("Auto-delay: ", chan->auto_delay, NULL, "None");
-    SHOW_INT("Bad-cookie:" , chan->bad_cookie, P_STR, "Ignore");
+    SHOW_INT("Bad-cookie:" , chan->bad_cookie, DEFLAG_STR, "Ignore");
     SHOW_INT("Ban-time: ", chan->ban_time, NULL, "Forever");
     SHOW_INT("Ban-type: ", chan->ban_type, NULL, "3");
     SHOW_INT("Closed-ban: ", chan->closed_ban, NULL, "Don't!");
@@ -1247,13 +1247,13 @@ static void cmd_chaninfo(int idx, char *par)
     SHOW_INT("Knock: ", chan->knock_flags, F_STR(chan->knock_flags), "None");
     SHOW_INT("Limit raise (limit): ", chan->limitraise, NULL, "Disabled");
     deflag = chan->manop;
-    SHOW_INT("Manop: ", chan->manop, P_STR, "Ignore");
+    SHOW_INT("Manop: ", chan->manop, DEFLAG_STR, "Ignore");
     deflag = chan->mdop;
-    SHOW_INT("Mdop: ", chan->mdop, P_STR, "Ignore");
+    SHOW_INT("Mdop: ", chan->mdop, DEFLAG_STR, "Ignore");
     deflag = chan->mop;
-    SHOW_INT("Mop: ", chan->mop, P_STR, "Ignore");
+    SHOW_INT("Mop: ", chan->mop, DEFLAG_STR, "Ignore");
     deflag = chan->revenge;
-    SHOW_INT("Revenge: ", chan->revenge, P_STR, "Ignore");
+    SHOW_INT("Revenge: ", chan->revenge, DEFLAG_STR, "Ignore");
     SHOW_INT("Protect-backup: ", chan->protect_backup, "Do!", "Don't!");
     SHOW_INT("Voice-non-ident: ", chan->voice_non_ident, "Do!", "Don't!");
 

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

@@ -737,7 +737,7 @@ static bool detect_chan_flood(char *floodnick, char *floodhost, char *from,
         char s[256] = "";
 
         simple_snprintf(s, sizeof(s), "Mass deop on %s by %s", chan->dname, from);
-        deflag_user(u, DEFLAG_MDOP, s, chan);
+        deflag_user(u, DEFLAG_EVENT_MDOP, s, chan);
       }
       if (channel_protect(chan))
         do_protect(chan, "Mass Deop");

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

@@ -1122,7 +1122,7 @@ gotmode(char *from, char *msg)
               } else {
                 if (u) {
                   simple_snprintf(tmp, sizeof(tmp), "Mass deop on %s by %s", chan->dname, m->nick);
-                  deflag_user(u, DEFLAG_MDOP, tmp, chan);
+                  deflag_user(u, DEFLAG_EVENT_MDOP, tmp, chan);
                 }
               }
               reversing = mdop_reversing = 1;
@@ -1142,7 +1142,7 @@ gotmode(char *from, char *msg)
                 } else { 
                   if (u) {
                     simple_snprintf(tmp, sizeof(tmp), "Mass op on %s by %s", chan->dname, m->nick);
-                    deflag_user(u, DEFLAG_MOP, tmp, chan);
+                    deflag_user(u, DEFLAG_EVENT_MOP, tmp, chan);
                   }
                 }
               }
@@ -1210,7 +1210,7 @@ gotmode(char *from, char *msg)
                   dprintf_real(DP_MODE_NEXT, tmp, len, sizeof(tmp));
                 }
                 simple_snprintf(tmp, sizeof(tmp), "%s!%s MODE %s %s", m->nick, m->userhost, chan->dname, modes[modecnt - 1]);
-                deflag_user(u, DEFLAG_BADCOOKIE, tmp, chan);
+                deflag_user(u, DEFLAG_EVENT_BADCOOKIE, tmp, chan);
               }
               /* Do the logging last as it can slow down the KICK pushing */
               putlog(LOG_WARNING, "*", "%s opped in %s with bad cookie(%d): %s", m->nick, chan->dname, isbadop, msg);
@@ -1249,7 +1249,7 @@ gotmode(char *from, char *msg)
                     m->flags |= SENTKICK;
                   }
                   simple_snprintf(tmp, sizeof(tmp), "%s!%s MODE %s %s", m->nick, m->userhost, chan->dname, modes[modecnt - 1]);
-                  deflag_user(u, DEFLAG_MANUALOP, tmp, chan);
+                  deflag_user(u, DEFLAG_EVENT_MANUALOP, tmp, chan);
                 }
                 break;
               default: