New alias_flag() HC function
authorAri Johnson <ari@theari.com>
Fri, 17 Dec 2010 19:42:04 +0000 (19:42 +0000)
committerAri Johnson <ari@theari.com>
Fri, 17 Dec 2010 19:42:04 +0000 (19:42 +0000)
hdrs/flags.h
src/flags.c

index 7a45bf7088f80e9afe124148ff6e9124de2fce61..9d3ebbf2e0bd01d97fae41126475e4dbafeb4145 100644 (file)
@@ -83,7 +83,7 @@ extern int type_from_old_flags(long old_flags);
 extern object_flag_type flags_from_old_flags(long old_flags, long old_toggles,
                                              int type);
 extern FLAG *add_flag(const char *name, const char letter, int type,
-                      int perms, int negate_perms);
+                     int perms, int negate_perms);
 extern void do_list_flags(dbref player, const char *arg, int lc);
 extern char *list_all_flags(const char *ns, const char *name, dbref privs, int which);
 extern void do_flag_info(const char *ns, dbref player, const char *name);
index cfaaef521d031e53775ad2c9edad72581faf40ae..9a231587b0ab3890ec11443e4e0fbcc2691c7660 100644 (file)
@@ -2292,16 +2292,44 @@ do_flag_alias(dbref player, const char *name, const char *alias)
       do_flag_info("FLAG", player, f->name);
   } else {
     /* Insert the flag in the ptab by the given alias */
-    ptab_start_inserts(n->tab);
-    ptab_insert(n->tab, alias, f);
-    ptab_end_inserts(n->tab);
-    if ((f = match_flag_ns(n, alias)))
+    if (alias_flag(name, alias))
       do_flag_info("FLAG", player, alias);
     else
       notify(player, T("Unknown failure adding alias."));
   }
 }
 
+ /** Add a new alias for a flag.
+  * \param ns name of the flagspace to use.
+  * \param name name of the flag
+  * \param alias new alias for the flag
+  * \retval 1 alias added successfully
+  * \retval 0 failed to add alias
+  */
+int
+alias_flag_generic(const char *ns, const char *name, const char *alias)
+{
+  FLAG *f;
+  FLAGSPACE *n;
+
+  Flagspace_Lookup(n, ns);
+
+  f = match_flag_ns(n, name);
+  if (!f) {
+    return 0;                  /* no such flag 'name' */
+  }
+
+  if (ptab_find_exact(n->tab, strupper(alias))) {
+    return 0;                  /* a flag called 'alias' already exists */
+  }
+
+  ptab_start_inserts(n->tab);
+  ptab_insert(n->tab, strupper(alias), f);
+  ptab_end_inserts(n->tab);
+  return ((f = match_flag_ns(n, alias)) ? 1 : 0);
+}
+
+
 /** Change a flag's alias. 
  * \param player the enactor.
  * \param name name of the flag.