فهرست منبع

* Set DEAF mode when appropriate.

When the value changes via .[bot]set. And on connect in 005.
Bryan Drewery 16 سال پیش
والد
کامیت
06a3ee45ac
3فایلهای تغییر یافته به همراه19 افزوده شده و 4 حذف شده
  1. 1 1
      src/mod/server.mod/server.h
  2. 5 3
      src/mod/server.mod/servmsg.c
  3. 13 0
      src/set.c

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

@@ -55,7 +55,7 @@ extern port_t		default_port, newserverport, curservport;
 extern time_t		server_online;
 extern interval_t	cycle_time;
 extern char		cursrvname[], botrealname[121], botuserhost[], ctcp_reply[1024],
-			newserver[], newserverpass[], curnetwork[], botuserip[], altnick_char;
+			newserver[], newserverpass[], curnetwork[], botuserip[], altnick_char, deaf_char;
 extern struct server_list *serverlist;
 extern struct dcc_table SERVER_SOCKET;
 extern rate_t		flood_msg, flood_ctcp, flood_g;

+ 5 - 3
src/mod/server.mod/servmsg.c

@@ -294,9 +294,11 @@ got005(char *from, char *msg)
       use_penalties = 1;
     else if (!strcasecmp(tmp, "WHOX"))
       use_354 = 1;
-    else if (!strcasecmp(tmp, "DEAF"))
-      deaf_char = p[0]
-    else if (!strcasecmp(tmp, "EXCEPTS"))
+    else if (!strcasecmp(tmp, "DEAF")) {
+      deaf_char = p[0];
+      if (use_deaf)
+        dprintf(DP_SERVER, "MODE %s +%c\n", botname, deaf_char);
+    } else if (!strcasecmp(tmp, "EXCEPTS"))
       use_exempts = 1;
     else if (!strcasecmp(tmp, "INVEX"))
       use_invites = 1;

+ 13 - 0
src/set.c

@@ -263,6 +263,7 @@ sdprintf("var (mem): %s -> %s", var->name, datain ? datain : "(NULL)");
 #endif
     *(int *) (var->mem) = number;
   } else if (var->flags & VAR_BOOL) {
+    bool olddata = *(bool*)(var->mem);
     bool num = 0;
     if (data[0] == '0')
       num = 0;
@@ -273,6 +274,18 @@ sdprintf("var (mem): %s -> %s", var->name, datain ? datain : "(NULL)");
 
     if (!strcmp(var->name, "ident-botnick"))
       strlcpy(botuser, conf.username && !num ? conf.username : origbotname, 21);
+    else if (!strcmp(var->name, "deaf")) {
+      if (server_online && deaf_char) {
+        char which = 0;
+        if (num == 1 && olddata == 0)
+          which = '+';
+        else if (num == 0 && olddata == 1)
+          which = '-';
+        if (which)
+          dprintf(DP_SERVER, "MODE %s %c%c\n", botname, which, deaf_char);
+
+      }
+    }
   } else if (var->flags & (VAR_STRING|VAR_WORD)) {
     char *olddata = ((char*) var->mem) ? strdup((char*) var->mem) : NULL;