Changed the way we convert flag tables when coming from pennmush.
authornveid <nveid@cobramush.org>
Mon, 9 Apr 2007 03:51:14 +0000 (03:51 +0000)
committerAri Johnson <ari@theari.com>
Thu, 24 Mar 2011 15:58:45 +0000 (15:58 +0000)
(cherry picked from commit 716fcf28d1e2db23752f71d19bfaa04058b76be5)

game/txt/changes/0.72p4
hdrs/flags.h
hdrs/mushdb.h
src/bsd.c
src/flags.c

index 75911b927c88f3401af42c554475af3263312f7b..a0646a639ae7d0cbf36057558bcd3d7df319bde1 100644 (file)
@@ -13,5 +13,7 @@ CobraMUSH Version 0.72p4
     * Parts of the RPMODE_SYS were not appropriately enclosed in ifdef
       statements, causing all non-privileged players to be rpgagged on
       channels. [RLB]
+    * Improved PennMUSH to CobraMUSH flag conversion code for flags that are
+      set to be of 'ANY' type. [RLB]
     * Fixed a bug related to uninitialized lastmod entries [AEJ]
 
index 96f75885404cefdc8cf6e2aae0a34d5f753c1c56..d087bd1332bfbe16c01891afca2c3ee76484f666 100644 (file)
@@ -122,6 +122,7 @@ extern void decompile_flags(dbref player, dbref thing, const char *name);
 #define NOTYPE          0xFFFF
 
 #define ALLTYPES (0 | TYPE_ROOM | TYPE_THING | TYPE_EXIT | TYPE_PLAYER | TYPE_DIVISION)
+#define ALL_PENNMUSH_TYPES (0 | TYPE_ROOM | TYPE_THING | TYPE_EXIT | TYPE_PLAYER)
 
 
 
index 6a8cc26ba1cc438655dc9685503dd01bdd71225d..499d878213f850126ea4aeec58f658598cb0a79e 100644 (file)
@@ -223,6 +223,8 @@ int unfindable(dbref);
 
 #define HAS_COBRADBFLAG(x,y)   (!(x & DBF_TYPE_GARBAGE) && (x & y)) /* Macro exists so cobra & penn dbflags can exist as same DBFs */
 
+#define IS_COBRA_DB(x) (!(x & DBF_TYPE_GARBAGE))
+
 /* Reboot DB flag macros - these should be defined whether or not the
  * corresponding system option is defined 
  * They are successive binary numbers
index e263674d8694122811d88bb0bd5824a7f11ec532..39a3f0176d13efa7fb4543b86158212194aa25a4 100644 (file)
--- a/src/bsd.c
+++ b/src/bsd.c
@@ -510,10 +510,10 @@ main(int argc, char **argv)
   }
 #endif
 #ifdef HAS_TEXTDOMAIN
-  textdomain("pennmush");
+  textdomain("cobramush");
 #endif
 #ifdef HAS_BINDTEXTDOMAIN
-  bindtextdomain("pennmush", "../po");
+  bindtextdomain("cobramush", "../po");
 #endif
 
   /* Build the locale-dependant tables used by PCRE */
index 3958cbb2aa7f38b12c0019865434e05b5aef3d56..f9a0e1fb0f9fe09e824c2ffb2640d0db3802a5cc 100644 (file)
@@ -498,8 +498,12 @@ flag_read(FILE * in)
   db_read_this_labeled_string(in, "type", &tmp);
   if(!strcmp(tmp, "ANY"))
     f->type = ALLTYPES;
-  else
+  else {
     f->type = string_to_privs(type_privs, tmp, 0);
+    /* Check to See if we're converting from Penn.. if so, change their Any to include our Any */
+    if(!IS_COBRA_DB(flagdb_flags) && f->type == ALL_PENNMUSH_TYPES)
+      f->type = ALLTYPES;
+  }
   db_read_this_labeled_string(in, "perms", &tmp);
   f->perms = string_to_privs(flag_privs, tmp, 0);
   db_read_this_labeled_string(in, "negate_perms", &tmp);
@@ -711,6 +715,8 @@ init_flag_table(const char *ns)
     return;
   }
 
+  do_rawlog(LT_ERR, T("Initializing flag table."));
+
   ptab_init(n->tab);
   /* do regular flags first */
   for (f = n->flag_table; f->name; f++) {
@@ -727,6 +733,8 @@ init_flag_table(const char *ns)
                T("FLAG INIT: flag alias %s matches no known flag."), a->alias);
   }
   flag_add_additional();
+
+  do_rawlog(LT_ERR, T("Flag table initialization complete."));
 }
 
 /* This is where the developers will put flag_add statements to create