Răsfoiți Sursa

* Clearing chanset var now correctly uses defaults.

svn: 2160
Bryan Drewery 21 ani în urmă
părinte
comite
e7be8edd4e
5 a modificat fișierele cu 18 adăugiri și 32 ștergeri
  1. 1 0
      doc/UPDATES
  2. 2 23
      src/mod/channels.mod/channels.c
  3. 1 1
      src/mod/channels.mod/tclchan.c
  4. 12 7
      src/set.c
  5. 2 1
      src/set.h

+ 1 - 0
doc/UPDATES

@@ -145,6 +145,7 @@ Lines prefixed with '-' were disabled before release and are not finished, or ar
 * Fixed cmd_quit working over botcmd. (#108)
 * Fixed 'bots' not showing up in help, and a typo in 'botpart'.
 * In config/-C, the ip field for bots can now be either ipv4 or ipv6. (ipv6 field still present)
+* Clearing chanset var now correctly uses defaults.
 
 1.2.2
 * Don't sanity check flags for users on DCC CHAT if they are on the bot via .botcmd.

+ 2 - 23
src/mod/channels.mod/channels.c

@@ -32,7 +32,7 @@
 #include <sys/stat.h>
 
 static bool 			use_info = 1;
-static char 			glob_chanmode[64];		/* Default chanmode (drummer,990731) */
+static char 			glob_chanmode[64] = "nt";		/* Default chanmode (drummer,990731) */
 static int 			global_stopnethack_mode;
 static int 			global_revenge_mode = 3;
 static int 			global_idle_kick;		/* Default idle-kick setting. */
@@ -42,7 +42,7 @@ static time_t 			global_invite_time;
 
 
 /* Global channel settings (drummer/dw) */
-char glob_chanset[512] = "";
+char glob_chanset[512];
 static char *lastdeletedmask = NULL;
 
 /* Global flood settings */
@@ -881,27 +881,6 @@ cmd_t channels_bot[] = {
 
 void channels_init()
 {
-  strcpy(glob_chanmode, "nt");
-  strcpy(glob_chanset,
-         "+enforcebans "
-	 "+dynamicbans "
-	 "+userbans "
-	 "-bitch "
-	 "-protectops "
-	 "-revenge "
-	 "+cycle "
-	 "-inactive "
-	 "+userexempts "
-	 "-dynamicexempts "
-	 "+userinvites "
-	 "-dynamicinvites "
-	 "-revengebot "
-	 "-nodesynch "
-	 "-closed "
-	 "-take "
-	 "-voice "
-         "-private "
-	 "-fastop ");
   timer_create_secs(60, "check_expired_masks", (Function) check_expired_masks);
   if (conf.bot->hub) {
     timer_create_secs(30, "rebalance_roles", (Function) rebalance_roles);

+ 1 - 1
src/mod/channels.mod/tclchan.c

@@ -764,8 +764,8 @@ int channel_add(char *result, char *newname, char *options)
   char buf[3001] = "";
 
   simple_sprintf(buf, "chanmode { %s } ", glob_chanmode);
+  strcat(buf, def_chanset);
   strcat(buf, glob_chanset);
-  strcat(buf, cfg_glob_chanset);
   strcat(buf, " ");
   strcat(buf, options);
   buf[strlen(buf)] = 0;

+ 12 - 7
src/set.c

@@ -11,6 +11,7 @@
 #include "chanprog.h"
 #include "misc.h"
 #include "src/mod/server.mod/server.h"
+#include "src/mod/channels.mod/channels.h"
 #include "src/mod/ctcp.mod/ctcp.h"
 #include "users.h"
 #include "userrec.h"
@@ -23,7 +24,7 @@ char auth_key[51] = "";
 char auth_prefix[2] = "";
 int badprocess = DET_IGNORE;
 bool dccauth = 0;
-char cfg_glob_chanset[512] = "+enforcebans +dynamicbans +userbans -bitch -protectops -revenge +cycle -inactive +userexempts -dynamicexempts +userinvites -dynamicinvites -revengebot -nodesynch -closed -take +manop -voice -private -fastop";
+char *def_chanset = "+enforcebans +dynamicbans +userbans -bitch -protectops -revenge +cycle -inactive +userexempts -dynamicexempts +userinvites -dynamicinvites -revengebot -nodesynch -closed -take +manop -voice -private -fastop";
 int cloak_script = 0;
 rate_t close_threshold = { 0, 0 };
 int fight_threshold;
@@ -49,7 +50,7 @@ static variable_t vars[] = {
  {"auth-prefix",	auth_prefix,		sizeof(auth_prefix),		VAR_STRING|VAR_NOLHUB|VAR_PERM, NULL, NULL},
  {"bad-process",	&badprocess,		0,				VAR_INT|VAR_DETECTED, NULL, NULL},
  {"dccauth",		&dccauth,		0,				VAR_INT|VAR_BOOL, NULL, NULL},
- {"chanset",		cfg_glob_chanset,	sizeof(cfg_glob_chanset),	VAR_STRING|VAR_NOLHUB, NULL, NULL},
+ {"chanset",		glob_chanset,		sizeof(glob_chanset),		VAR_STRING|VAR_CHANSET|VAR_NOLHUB, NULL, NULL},
  {"cloak-script",	&cloak_script,		0,				VAR_INT|VAR_CLOAK|VAR_NOLHUB, NULL, NULL},
  {"close-threshold",	&close_threshold,	0,				VAR_RATE|VAR_NOLOC, NULL, NULL},
  {"fight-threshold",	&fight_threshold,	0,				VAR_INT|VAR_NOLOC, NULL, NULL},
@@ -148,10 +149,9 @@ sdprintf("var (mem): %s -> %s", var->name, datain);
     } else
       return 0;
   } else if (var->flags & VAR_STRING) {
-
-    if (data) {
+    if (data)
       strlcpy((char *) var->mem, data, var->size);
-    } else
+    else
       ((char *) var->mem)[0] = 0;
 
     if (var->flags & VAR_NICK) {
@@ -364,8 +364,12 @@ sdprintf("var: %s (local): %s", var->name, data);
 sdprintf("var: %s (global): %s", var->name, data);
     if (data && !clear)
       var->gdata = strdup(data);
-    else
-      var->gdata = NULL;
+    else {
+      if (var->flags & VAR_CHANSET)
+        var->gdata = strdup(def_chanset);
+      else 
+        var->gdata = NULL;
+    }
 
     if (domem && var->mem)
       var_set_mem(var, var->gdata);
@@ -442,6 +446,7 @@ void init_vars()
     if (!vars[i].gdata && !vars[i].ldata) 
       var_string(&vars[i]);
   }
+  var_set_by_name(NULL, "chanset", def_chanset);
 }
 
 /* This is used to parse (GLOBAL) userfile var lines and changes via .set from a remote hub */

+ 2 - 1
src/set.h

@@ -28,6 +28,7 @@
 #define VAR_PERM	BIT13
 /* Don't set the var data from the mem as default (NICK) */
 #define VAR_NODEF	BIT14
+#define VAR_CHANSET	BIT15
 
 #define VAR_LDATA 	1
 #define VAR_GDATA	2
@@ -50,7 +51,7 @@ typedef struct rate_b {
  time_t time;
 } rate_t;
 
-extern char		auth_key[], auth_prefix[2], motd[], cfg_glob_chanset[],
+extern char		auth_key[], auth_prefix[2], motd[], *def_chanset,
 			msgident[], msginvite[], msgop[], msgpass[], process_list[];
 extern bool		dccauth;
 extern int		cloak_script, fight_threshold, fork_interval, in_bots, set_noshare,