Kaynağa Gözat

* Bind table cleanups, especially renaming bind table functions and making add/rem_builtins take a char * instead of a bind_table_t *.

svn: 586
Bryan Drewery 22 yıl önce
ebeveyn
işleme
bb8c2e272a

+ 1 - 4
src/botcmd.c

@@ -1454,10 +1454,7 @@ static cmd_t my_bot[] =
   {NULL, 	NULL, 	NULL, 			NULL}
   {NULL, 	NULL, 	NULL, 			NULL}
 };
 };
 
 
-static bind_table_t *BT_bot;
-
 void init_botcmd()
 void init_botcmd()
 {
 {
-  BT_bot = find_bind_table2("bot");
-  add_builtins2(BT_bot, my_bot);
+  add_builtins("bot", my_bot);
 }
 }

+ 2 - 2
src/core_binds.c

@@ -4,8 +4,8 @@ static bind_table_t *BT_time, *BT_event;
 
 
 void core_binds_init()
 void core_binds_init()
 {
 {
-	BT_time = add_bind_table2("time", 5, "iiiii", MATCH_MASK, BIND_STACKABLE);
-	BT_event = add_bind_table2("event", 1, "s", MATCH_MASK, BIND_STACKABLE);
+	BT_time = bind_table_add("time", 5, "iiiii", MATCH_MASK, BIND_STACKABLE);
+	BT_event = bind_table_add("event", 1, "s", MATCH_MASK, BIND_STACKABLE);
 }
 }
 
 
 void check_bind_time(struct tm *tm)
 void check_bind_time(struct tm *tm)

+ 3 - 9
src/mod/channels.mod/channels.c

@@ -45,8 +45,6 @@ static int 			gfld_nick_time;
 int 				killed_bots = 0;
 int 				killed_bots = 0;
 #endif /* S_AUTOLOCK */
 #endif /* S_AUTOLOCK */
 
 
-static bind_table_t *BT_dcc, *BT_bot, *BT_chon;
-
 #include "channels.h"
 #include "channels.h"
 #include "cmdschan.c"
 #include "cmdschan.c"
 #include "tclchan.c"
 #include "tclchan.c"
@@ -1082,13 +1080,9 @@ char *channels_start(Function * global_funcs)
   add_hook(HOOK_USERFILE, (Function) channels_writeuserfile);
   add_hook(HOOK_USERFILE, (Function) channels_writeuserfile);
   add_hook(HOOK_10SECONDLY, (Function) channels_10secondly);
   add_hook(HOOK_10SECONDLY, (Function) channels_10secondly);
 
 
-  BT_dcc = find_bind_table2("dcc");
-  BT_bot = find_bind_table2("bot");
-  BT_chon = find_bind_table2("chon");
-
-  if (BT_dcc) add_builtins2(BT_dcc, C_dcc_irc);
-  if (BT_bot) add_builtins2(BT_bot, channels_bot);
-  if (BT_chon) add_builtins2(BT_chon, my_chon);
+  add_builtins("dcc", C_dcc_irc);
+  add_builtins("bot", channels_bot);
+  add_builtins("chon", my_chon);
 
 
   add_tcl_commands(channels_cmds);
   add_tcl_commands(channels_cmds);
 #ifdef S_AUTOLOCK
 #ifdef S_AUTOLOCK

+ 2 - 6
src/mod/console.mod/console.c

@@ -16,8 +16,6 @@ static int console_autosave = 1;
 static int force_channel = 0;
 static int force_channel = 0;
 static int info_party = 1;
 static int info_party = 1;
 
 
-static bind_table_t *BT_dcc, *BT_chon;
-
 struct console_info {
 struct console_info {
   char *channel;
   char *channel;
   int conflags;
   int conflags;
@@ -440,11 +438,9 @@ char *console_start(Function * global_funcs)
   global = global_funcs;
   global = global_funcs;
 
 
   module_register(MODULE_NAME, console_table, 1, 1);
   module_register(MODULE_NAME, console_table, 1, 1);
-  BT_dcc = find_bind_table2("dcc");
-  BT_chon = find_bind_table2("chon");
 
 
-  if (BT_dcc) add_builtins2(BT_dcc, mydcc);
-  if (BT_chon) add_builtins2(BT_chon, mychon);
+  add_builtins("dcc", mydcc);
+  add_builtins("chon", mychon);
 
 
   add_tcl_ints(myints);
   add_tcl_ints(myints);
   USERENTRY_CONSOLE.get = def_get;
   USERENTRY_CONSOLE.get = def_get;

+ 2 - 5
src/mod/ctcp.mod/ctcp.c

@@ -17,9 +17,6 @@
 #include <pwd.h>
 #include <pwd.h>
 #include <ctype.h>
 #include <ctype.h>
 
 
-/* Import this bind table from server.mod */
-static bind_table_t *BT_ctcp;
-
 static Function *global = NULL, *server_funcs = NULL;
 static Function *global = NULL, *server_funcs = NULL;
 #else /* !LEAF */
 #else /* !LEAF */
 static Function *global = NULL;
 static Function *global = NULL;
@@ -792,8 +789,8 @@ char *ctcp_start(Function * global_funcs)
   }
   }
   scriptchanged();
   scriptchanged();
 
 
-  BT_ctcp = find_bind_table2("ctcp");
-  if (BT_ctcp) add_builtins2(BT_ctcp, myctcp);
+  add_builtins("ctcp", myctcp);
+
   add_hook(HOOK_MINUTELY, (Function) ctcp_minutely);
   add_hook(HOOK_MINUTELY, (Function) ctcp_minutely);
 #endif /* LEAF */
 #endif /* LEAF */
   add_cfg(&CFG_CLOAK_SCRIPT);
   add_cfg(&CFG_CLOAK_SCRIPT);

+ 10 - 22
src/mod/irc.mod/irc.c

@@ -40,8 +40,8 @@ struct cfg_entry CFG_OPBOTS,
   CFG_OPREQUESTS;
   CFG_OPREQUESTS;
 
 
 
 
-/* We import some bind tables from server.mod */
-static bind_table_t *BT_dcc, *BT_bot, *BT_raw, *BT_msg, *BT_ctcp, *BT_ctcr;
+/* Import some bind tables from the server module. */
+static bind_table_t *BT_ctcp, *BT_ctcr;
 #ifdef S_AUTH
 #ifdef S_AUTH
 static bind_table_t *BT_msgc;
 static bind_table_t *BT_msgc;
 #endif /* S_AUTH */
 #endif /* S_AUTH */
@@ -1679,29 +1679,17 @@ char *irc_start(Function * global_funcs)
 	       TCL_TRACE_READS | TCL_TRACE_WRITES | TCL_TRACE_UNSETS,
 	       TCL_TRACE_READS | TCL_TRACE_WRITES | TCL_TRACE_UNSETS,
 	       traced_rfccompliant, NULL);
 	       traced_rfccompliant, NULL);
   add_tcl_ints(myints);
   add_tcl_ints(myints);
-  /* Import bind tables from other places. */
-  BT_dcc = find_bind_table2("dcc");
-  BT_bot = find_bind_table2("bot");
-  BT_raw = find_bind_table2("raw");
-  BT_msg = find_bind_table2("msg");
-#ifdef S_AUTH
-  BT_msgc = find_bind_table2("msgc");
-#endif /* S_AUTH */
-  BT_ctcp = find_bind_table2("ctcp");
-  BT_ctcr = find_bind_table2("ctcr");
+
+  BT_ctcp = bind_table_find("ctcp");
+  BT_ctcr = bind_table_find("ctcr");
 
 
   /* Add our commands to the imported tables. */
   /* Add our commands to the imported tables. */
-  if (BT_dcc) add_builtins2(BT_dcc, irc_dcc);
-  else putlog(LOG_MISC, "*", "Couldn't load dcc bind table!");
-  if (BT_bot) add_builtins2(BT_bot, irc_bot);
-  else putlog(LOG_MISC, "*", "Couldn't load bot bind table!");
-  if (BT_raw) add_builtins2(BT_raw, irc_raw);
-  else putlog(LOG_MISC, "*", "Couldn't load raw bind table!");
-  if (BT_msg) add_builtins2(BT_msg, C_msg);
-  else putlog(LOG_MISC, "*", "Couldn't load msg bind table!");
+  add_builtins("dcc", irc_dcc);
+  add_builtins("bot", irc_bot);
+  add_builtins("raw", irc_raw);
+  add_builtins("msg", C_msg);
 #ifdef S_AUTH
 #ifdef S_AUTH
-  if (BT_msgc) add_builtins2(BT_msgc, C_msgc);
-  else putlog(LOG_MISC, "*", "Couldn't load msgc bind table!");
+  add_builtins("msgc", C_msgc);
 #endif /* S_AUTH */
 #endif /* S_AUTH */
 
 
   add_tcl_commands(tclchan_cmds);
   add_tcl_commands(tclchan_cmds);

+ 5 - 6
src/mod/module.h

@@ -548,15 +548,14 @@
 #define CFG_MSGINVITE (*(struct cfg_entry *)(global[340]))
 #define CFG_MSGINVITE (*(struct cfg_entry *)(global[340]))
 /* 341 - 344 */
 /* 341 - 344 */
 #define CFG_MSGIDENT (*(struct cfg_entry *)(global[341]))
 #define CFG_MSGIDENT (*(struct cfg_entry *)(global[341]))
-#define add_bind_table2 ((bind_table_t *(*)(const char *, int, char *, int, int))global[342])
-#define del_bind_table2 ((void (*)(bind_table_t *))global[343])
-#define add_builtins2 ((void (*)(bind_table_t *, cmd_t *))global[344])
+#define bind_table_add ((bind_table_t *(*)(const char *, int, char *, int, int))global[342])
+#define bind_table_del ((void (*)(bind_table_t *))global[343])
+#define add_builtins ((void (*)(const char *, cmd_t *))global[344])
 /* 345 - 348 */
 /* 345 - 348 */
-#define rem_builtins2 ((void (*)(bind_table_t *, cmd_t *))global[345])
-#define find_bind_table2 ((bind_table_t *(*)(const char *))global[346])
+#define rem_builtins ((void (*)(const char *, cmd_t *))global[345])
+#define bind_table_find ((bind_table_t *(*)(const char *))global[346])
 #define check_bind ((int (*)(bind_table_t *, const char *, struct flag_record *, ...))global[347])
 #define check_bind ((int (*)(bind_table_t *, const char *, struct flag_record *, ...))global[347])
 
 
-
 extern int lfprintf(FILE *, char *, ...);
 extern int lfprintf(FILE *, char *, ...);
 extern int egg_numver;
 extern int egg_numver;
 extern int cfg_count;
 extern int cfg_count;

+ 6 - 17
src/mod/notes.mod/notes.c

@@ -24,8 +24,6 @@ static int allow_fwd = 1;	/* Allow note forwarding */
 static int notify_users = 1;	/* Notify users they have notes every hour? */
 static int notify_users = 1;	/* Notify users they have notes every hour? */
 static Function *global = NULL;	/* DAMN fcntl.h */
 static Function *global = NULL;	/* DAMN fcntl.h */
 
 
-static bind_table_t *BT_dcc, *BT_load, *BT_away, *BT_nkch, *BT_chon;
-
 static struct user_entry_type USERENTRY_FWD =
 static struct user_entry_type USERENTRY_FWD =
 {
 {
   NULL,				/* always 0 ;) */
   NULL,				/* always 0 ;) */
@@ -932,10 +930,7 @@ static tcl_strings notes_strings[] =
 
 
 static int notes_server_setup(char *mod)
 static int notes_server_setup(char *mod)
 {
 {
-  bind_table_t *table;
-
-  if ((table = find_bind_table2("msg")))
-    add_builtins2(table, notes_msgs);
+  add_builtins("msg", notes_msgs);
   return 0;
   return 0;
 }
 }
 
 
@@ -984,17 +979,11 @@ char *notes_start(Function * global_funcs)
   add_tcl_ints(notes_ints);
   add_tcl_ints(notes_ints);
   add_tcl_strings(notes_strings);
   add_tcl_strings(notes_strings);
 
 
-  BT_dcc = find_bind_table2("dcc");
-  BT_load = find_bind_table2("load");
-  BT_away = find_bind_table2("away");
-  BT_nkch = find_bind_table2("nkch");
-  BT_chon = find_bind_table2("chon");
-
-  if (BT_dcc) add_builtins2(BT_dcc, notes_cmds);
-  if (BT_load) add_builtins2(BT_load, notes_load);
-  if (BT_away) add_builtins2(BT_away, notes_away);
-  if (BT_chon) add_builtins2(BT_chon, notes_chon);
-  if (BT_nkch) add_builtins2(BT_nkch, notes_nkch);
+  add_builtins("dcc", notes_cmds);
+  add_builtins("load", notes_load);
+  add_builtins("away", notes_away);
+  add_builtins("chon", notes_chon);
+  add_builtins("nkch", notes_nkch);
 
 
   notes_server_setup(0);
   notes_server_setup(0);
   my_memcpy(&USERENTRY_FWD, &USERENTRY_INFO, sizeof(void *) * 12);
   my_memcpy(&USERENTRY_FWD, &USERENTRY_INFO, sizeof(void *) * 12);

+ 10 - 16
src/mod/server.mod/server.c

@@ -87,15 +87,11 @@ static void msgq_clear(struct msgq_head *qh);
 static int stack_limit;
 static int stack_limit;
 
 
 /* New bind tables. */
 /* New bind tables. */
-static bind_table_t *BT_raw, *BT_msg;
-static bind_table_t *BT_ctcr, *BT_ctcp;
+static bind_table_t *BT_raw, *BT_msg, *BT_ctcr, *BT_ctcp;
 #ifdef S_AUTH
 #ifdef S_AUTH
 static bind_table_t *BT_msgc;
 static bind_table_t *BT_msgc;
 #endif /* S_AUTH */
 #endif /* S_AUTH */
 
 
-/* Imported bind tables. */
-static bind_table_t *BT_dcc;
-
 #include "servmsg.c"
 #include "servmsg.c"
 
 
 #define MAXPENALTY 10
 #define MAXPENALTY 10
@@ -1674,20 +1670,18 @@ char *server_start(Function *global_funcs)
   server_table[4] = (Function) botname;
   server_table[4] = (Function) botname;
   module_register(MODULE_NAME, server_table, 1, 2);
   module_register(MODULE_NAME, server_table, 1, 2);
 
 
-        /* Import bind tables. */
-        BT_dcc = find_bind_table2("dcc");
 
 
-        BT_msg = add_bind_table2("msg", 4, "ssUs", 0, BIND_USE_ATTR);
 #ifdef S_AUTH
 #ifdef S_AUTH
-	BT_msgc = add_bind_table2("msgc", 5, "ssUss", 0, BIND_USE_ATTR); 
+  BT_msgc = bind_table_add("msgc", 5, "ssUss", 0, BIND_USE_ATTR); 
 #endif /* S_AUTH */
 #endif /* S_AUTH */
-        BT_raw = add_bind_table2("raw", 3, "ss", MATCH_MASK, BIND_STACKABLE);
-	BT_ctcr = add_bind_table2("ctcr", 6, "ssUsss", MATCH_MASK, BIND_USE_ATTR | BIND_STACKABLE);
-	BT_ctcp = add_bind_table2("ctcp", 6, "ssUsss", MATCH_MASK, BIND_USE_ATTR | BIND_STACKABLE);
-
-  add_builtins2(BT_raw, my_raw_binds);
-  add_builtins2(BT_dcc, C_dcc_serv);
-  add_builtins2(BT_ctcp, my_ctcps);
+  BT_msg = bind_table_add("msg", 4, "ssUs", 0, BIND_USE_ATTR);
+  BT_raw = bind_table_add("raw", 3, "ss", MATCH_MASK, BIND_STACKABLE);
+  BT_ctcr = bind_table_add("ctcr", 6, "ssUsss", MATCH_MASK, BIND_USE_ATTR | BIND_STACKABLE);
+  BT_ctcp = bind_table_add("ctcp", 6, "ssUsss", MATCH_MASK, BIND_USE_ATTR | BIND_STACKABLE);
+
+  add_builtins("raw", my_raw_binds);
+  add_builtins("dcc", C_dcc_serv);
+  add_builtins("ctcp", my_ctcps);
 
 
   my_tcl_ints[0].val = &use_console_r;
   my_tcl_ints[0].val = &use_console_r;
   add_tcl_ints(my_tcl_ints);
   add_tcl_ints(my_tcl_ints);

+ 6 - 11
src/mod/transfer.mod/transfer.c

@@ -23,7 +23,6 @@
 #include <netinet/in.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <arpa/inet.h>
 
 
-static bind_table_t *BT_load;
 static bind_table_t *BT_rcvd, *BT_sent, *BT_lost, *BT_tout;
 static bind_table_t *BT_rcvd, *BT_sent, *BT_lost, *BT_tout;
 
 
 static Function *global = NULL, *update_funcs = NULL;
 static Function *global = NULL, *update_funcs = NULL;
@@ -1835,10 +1834,7 @@ static cmd_t transfer_ctcps[] =
 /* Add our CTCP bindings if the server module is loaded. */
 /* Add our CTCP bindings if the server module is loaded. */
 static int server_transfer_setup(char *mod)
 static int server_transfer_setup(char *mod)
 {
 {
-  bind_table_t *BT_ctcp;
-
-  if ((BT_ctcp = find_bind_table2("ctcp")))
-    add_builtins2(BT_ctcp, transfer_ctcps);
+  add_builtins("ctcp", transfer_ctcps);
   return 1;
   return 1;
 }
 }
 
 
@@ -1910,14 +1906,13 @@ char *transfer_start(Function *global_funcs)
     return "This module requires update module 0.0 or later.";
     return "This module requires update module 0.0 or later.";
   }
   }
 
 
-  BT_load = find_bind_table2("load");
-  if (BT_load) add_builtins2(BT_load, transfer_load);
+  add_builtins("load", transfer_load);
 
 
   server_transfer_setup(NULL);
   server_transfer_setup(NULL);
-  BT_rcvd = add_bind_table2("rcvd", 3, "Uss", MATCH_MASK, BIND_STACKABLE);
-  BT_sent = add_bind_table2("sent", 3, "Uss", MATCH_MASK, BIND_STACKABLE);
-  BT_lost = add_bind_table2("lost", 5, "Ussii", MATCH_MASK, BIND_STACKABLE);
-  BT_tout = add_bind_table2("tout", 5, "Ussii", MATCH_MASK, BIND_STACKABLE);
+  BT_rcvd = bind_table_add("rcvd", 3, "Uss", MATCH_MASK, BIND_STACKABLE);
+  BT_sent = bind_table_add("sent", 3, "Uss", MATCH_MASK, BIND_STACKABLE);
+  BT_lost = bind_table_add("lost", 5, "Ussii", MATCH_MASK, BIND_STACKABLE);
+  BT_tout = bind_table_add("tout", 5, "Ussii", MATCH_MASK, BIND_STACKABLE);
 
 
   USERENTRY_FSTAT.get = def_get;
   USERENTRY_FSTAT.get = def_get;
   add_entry_type(&USERENTRY_FSTAT);
   add_entry_type(&USERENTRY_FSTAT);

+ 2 - 4
src/mod/update.mod/update.c

@@ -21,8 +21,6 @@
 #include "transfer.mod/transfer.h"
 #include "transfer.mod/transfer.h"
 #include "compress.mod/compress.h"
 #include "compress.mod/compress.h"
 
 
-static bind_table_t *BT_bot;
-
 static Function *global = NULL, *transfer_funcs = NULL, *compress_funcs = NULL,
 static Function *global = NULL, *transfer_funcs = NULL, *compress_funcs = NULL,
                 *uncompress_funcs = NULL;
                 *uncompress_funcs = NULL;
 
 
@@ -527,8 +525,8 @@ char *update_start(Function *global_funcs)
     module_undepend(MODULE_NAME);
     module_undepend(MODULE_NAME);
     return "This module requires the compression.";
     return "This module requires the compression.";
   }
   }
-  BT_bot = find_bind_table2("bot");
-  if (BT_bot) add_builtins2(BT_bot, update_bot);
+
+  add_builtins("bot", update_bot);
 #ifdef HUB
 #ifdef HUB
   add_hook(HOOK_30SECONDLY, (Function) check_updates);
   add_hook(HOOK_30SECONDLY, (Function) check_updates);
 #endif /* HUB */
 #endif /* HUB */

+ 6 - 6
src/modules.c

@@ -605,11 +605,11 @@ Function global_table[] =
   (Function) 0,
   (Function) 0,
   (Function) 0,
   (Function) 0,
 #endif /* S_MSGCMDS */
 #endif /* S_MSGCMDS */
-  (Function) add_bind_table2,
-  (Function) del_bind_table2,
-  (Function) add_builtins2,
-  (Function) rem_builtins2,
-  (Function) find_bind_table2,
+  (Function) bind_table_add,
+  (Function) bind_table_add,
+  (Function) add_builtins,
+  (Function) rem_builtins,
+  (Function) bind_table_find,
   (Function) check_bind
   (Function) check_bind
 
 
 };
 };
@@ -620,7 +620,7 @@ void init_modules(void)
 {
 {
   int i;
   int i;
 
 
-  BT_load = add_bind_table2("load", 1, "s", MATCH_MASK, 0);
+  BT_load = bind_table_add("load", 1, "s", MATCH_MASK, 0);
 
 
   module_list = nmalloc(sizeof(module_entry));
   module_list = nmalloc(sizeof(module_entry));
   module_list->name = nmalloc(8);
   module_list->name = nmalloc(8);

+ 0 - 2
src/tcl.c

@@ -15,7 +15,6 @@
 #if ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 1)) || (TCL_MAJOR_VERSION > 8)
 #if ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 1)) || (TCL_MAJOR_VERSION > 8)
 #define USE_BYTE_ARRAYS
 #define USE_BYTE_ARRAYS
 #endif
 #endif
-void init_old_binds();
 
 
 /* Used for read/write to internal strings */
 /* Used for read/write to internal strings */
 typedef struct {
 typedef struct {
@@ -566,7 +565,6 @@ resetPath:
   /* Initialize binds and traces */
   /* Initialize binds and traces */
   Context;
   Context;
 
 
-  init_old_binds();
   init_traces();
   init_traces();
   /* Add new commands */
   /* Add new commands */
   add_tcl_commands(tcluser_cmds);
   add_tcl_commands(tcluser_cmds);

+ 36 - 34
src/tclhash.c

@@ -83,36 +83,30 @@ extern cmd_t C_dcc[];
 void binds_init(void)
 void binds_init(void)
 {
 {
 	bind_table_list_head = NULL;
 	bind_table_list_head = NULL;
-	BT_link = add_bind_table2("link", 2, "ss", MATCH_MASK, BIND_STACKABLE);
-        BT_nkch = add_bind_table2("nkch", 2, "ss", MATCH_MASK, BIND_STACKABLE);
-	BT_disc = add_bind_table2("disc", 1, "s", MATCH_MASK, BIND_STACKABLE);
-	BT_away = add_bind_table2("away", 3, "sis", MATCH_MASK, BIND_STACKABLE);
-	BT_chon = add_bind_table2("chon", 2, "si", MATCH_MASK, BIND_USE_ATTR | BIND_STACKABLE);
-	BT_chof = add_bind_table2("chof", 2, "si", MATCH_MASK, BIND_USE_ATTR | BIND_STACKABLE);
-	BT_dcc = add_bind_table2("dcc", 3, "Uis", MATCH_MASK, BIND_USE_ATTR);
-	BT_bot = add_bind_table2("bot", 3, "sss", MATCH_EXACT, 0);
-        BT_note = add_bind_table2("note", 3 , "sss", MATCH_EXACT, 0);
-	BT_chat = add_bind_table2("chat", 3, "sis", MATCH_MASK, BIND_STACKABLE | BIND_BREAKABLE);
-	BT_act = add_bind_table2("act", 3, "sis", MATCH_MASK, BIND_STACKABLE);
-	BT_bcst = add_bind_table2("bcst", 3, "sis", MATCH_MASK, BIND_STACKABLE);
-        BT_chpt = add_bind_table2("chpt", 4, "ssii", MATCH_MASK, BIND_STACKABLE);
-        BT_chjn = add_bind_table2("chjn", 6, "ssisis", MATCH_MASK, BIND_STACKABLE);
-
-	add_builtins2(BT_dcc, C_dcc);
+	BT_link = bind_table_add("link", 2, "ss", MATCH_MASK, BIND_STACKABLE);
+        BT_nkch = bind_table_add("nkch", 2, "ss", MATCH_MASK, BIND_STACKABLE);
+	BT_disc = bind_table_add("disc", 1, "s", MATCH_MASK, BIND_STACKABLE);
+	BT_away = bind_table_add("away", 3, "sis", MATCH_MASK, BIND_STACKABLE);
+	BT_chon = bind_table_add("chon", 2, "si", MATCH_MASK, BIND_USE_ATTR | BIND_STACKABLE);
+	BT_chof = bind_table_add("chof", 2, "si", MATCH_MASK, BIND_USE_ATTR | BIND_STACKABLE);
+	BT_dcc = bind_table_add("dcc", 3, "Uis", MATCH_MASK, BIND_USE_ATTR);
+	BT_bot = bind_table_add("bot", 3, "sss", MATCH_EXACT, 0);
+        BT_note = bind_table_add("note", 3 , "sss", MATCH_EXACT, 0);
+	BT_chat = bind_table_add("chat", 3, "sis", MATCH_MASK, BIND_STACKABLE | BIND_BREAKABLE);
+	BT_act = bind_table_add("act", 3, "sis", MATCH_MASK, BIND_STACKABLE);
+	BT_bcst = bind_table_add("bcst", 3, "sis", MATCH_MASK, BIND_STACKABLE);
+        BT_chpt = bind_table_add("chpt", 4, "ssii", MATCH_MASK, BIND_STACKABLE);
+        BT_chjn = bind_table_add("chjn", 6, "ssisis", MATCH_MASK, BIND_STACKABLE);
+
+	add_builtins("dcc", C_dcc);
 }
 }
 
 
-void init_old_binds(void)
+void kill_binds(void)
 {
 {
-  bind_table_list = NULL;
-  Context;
+	while (bind_table_list_head) bind_table_del(bind_table_list_head);
 }
 }
 
 
-void kill_bind2(void)
-{
-	while (bind_table_list_head) del_bind_table2(bind_table_list_head);
-}
-
-bind_table_t *add_bind_table2(const char *name, int nargs, const char *syntax, int match_type, int flags)
+bind_table_t *bind_table_add(const char *name, int nargs, const char *syntax, int match_type, int flags)
 {
 {
 	bind_table_t *table;
 	bind_table_t *table;
 
 
@@ -132,7 +126,7 @@ bind_table_t *add_bind_table2(const char *name, int nargs, const char *syntax, i
 	return(table);
 	return(table);
 }
 }
 
 
-void del_bind_table2(bind_table_t *table)
+void bind_table_del(bind_table_t *table)
 {
 {
 	bind_table_t *cur, *prev;
 	bind_table_t *cur, *prev;
 	bind_chain_t *chain, *next_chain;
 	bind_chain_t *chain, *next_chain;
@@ -161,7 +155,7 @@ void del_bind_table2(bind_table_t *table)
 	}
 	}
 }
 }
 
 
-bind_table_t *find_bind_table2(const char *name)
+bind_table_t *bind_table_find(const char *name)
 {
 {
 	bind_table_t *table;
 	bind_table_t *table;
 
 
@@ -171,7 +165,7 @@ bind_table_t *find_bind_table2(const char *name)
 	return(table);
 	return(table);
 }
 }
 
 
-int del_bind_entry(bind_table_t *table, const char *flags, const char *mask, const char *function_name)
+int bind_entry_del(bind_table_t *table, const char *flags, const char *mask, const char *function_name, void *cdata)
 {
 {
 	bind_chain_t *chain;
 	bind_chain_t *chain;
 	bind_entry_t *entry, *prev;
 	bind_entry_t *entry, *prev;
@@ -197,7 +191,7 @@ int del_bind_entry(bind_table_t *table, const char *flags, const char *mask, con
 	return(0);
 	return(0);
 }
 }
 
 
-int add_bind_entry(bind_table_t *table, const char *flags, const char *mask, const char *function_name, int bind_flags, Function callback, void *client_data)
+int bind_entry_add(bind_table_t *table, const char *flags, const char *mask, const char *function_name, int bind_flags, Function callback, void *client_data)
 {
 {
 	bind_chain_t *chain;
 	bind_chain_t *chain;
 	bind_entry_t *entry;
 	bind_entry_t *entry;
@@ -493,9 +487,13 @@ void check_tcl_away(const char *bot, int idx, const char *msg)
   check_bind(BT_away, bot, NULL, bot, idx, msg);
   check_bind(BT_away, bot, NULL, bot, idx, msg);
 }
 }
 
 
-void add_builtins2(bind_table_t *table, cmd_t *cmds)
+void add_builtins(const char *table_name, cmd_t *cmds)
 {
 {
 	char name[50];
 	char name[50];
+	bind_table_t *table;
+
+	table = bind_table_find(table_name);
+	if (!table) return;
 
 
 	for (; cmds->name; cmds++) {
 	for (; cmds->name; cmds++) {
                 /* add BT_dcc cmds to cmdlist[] :: add to the help system.. */
                 /* add BT_dcc cmds to cmdlist[] :: add to the help system.. */
@@ -505,17 +503,21 @@ void add_builtins2(bind_table_t *table, cmd_t *cmds)
                   break_down_flags(cmds->flags, &(cmdlist[cmdi].flags), NULL);
                   break_down_flags(cmds->flags, &(cmdlist[cmdi].flags), NULL);
                   cmdi++;
                   cmdi++;
                 }
                 }
-		snprintf(name, 50, "*%s:%s", table->name, cmds->funcname ? cmds->funcname : cmds->name);
-		add_bind_entry(table, cmds->flags, cmds->name, name, 0, cmds->func, NULL);
+		egg_snprintf(name, 50, "*%s:%s", table->name, cmds->funcname ? cmds->funcname : cmds->name);
+		bind_entry_add(table, cmds->flags, cmds->name, name, 0, cmds->func, NULL);
 	}
 	}
 }
 }
 
 
-void rem_builtins2(bind_table_t *table, cmd_t *cmds)
+void rem_builtins(const char *table_name, cmd_t *cmds)
 {
 {
 	char name[50];
 	char name[50];
+	bind_table_t *table;
+
+	table = bind_table_find(table_name);
+	if (!table) return;
 
 
 	for (; cmds->name; cmds++) {
 	for (; cmds->name; cmds++) {
 		sprintf(name, "*%s:%s", table->name, cmds->funcname ? cmds->funcname : cmds->name);
 		sprintf(name, "*%s:%s", table->name, cmds->funcname ? cmds->funcname : cmds->name);
-		del_bind_entry(table, cmds->flags, cmds->name, name);
+		bind_entry_del(table, cmds->flags, cmds->name, name, NULL);
 	}
 	}
 }
 }

+ 8 - 11
src/tclhash.h

@@ -116,9 +116,7 @@ typedef struct tcl_bind_list_b {
 #ifndef MAKING_MODS
 #ifndef MAKING_MODS
 
 
 
 
-void init_bind(void);
-void init_bind2(void);
-void kill_bind2(void);
+void kill_binds(void);
 int expmem_tclhash(void);
 int expmem_tclhash(void);
 
 
 
 
@@ -147,14 +145,13 @@ void check_tcl_loadunld(const char *, tcl_bind_list_t *);
 
 
 
 
 int check_bind(bind_table_t *table, const char *match, struct flag_record *_flags, ...);
 int check_bind(bind_table_t *table, const char *match, struct flag_record *_flags, ...);
-bind_table_t *add_bind_table2(const char *name, int nargs, const char *syntax, int match_type, int flags);
-void del_bind_table2(bind_table_t *table);
-bind_table_t *find_bind_table2(const char *name);
-int add_bind_entry(bind_table_t *table, const char *flags, const char *mask, const char *function_name, int bind_flags, Function callback, void *client_data);
-int del_bind_entry(bind_table_t *table, const char *flags, const char *mask, const char *function_name);
-void add_builtins2(bind_table_t *table, cmd_t *cmds);
-void rem_builtins2(bind_table_t *table, cmd_t *cmds);
-
+bind_table_t *bind_table_add(const char *name, int nargs, const char *syntax, int match_type, int flags);
+void bind_table_del(bind_table_t *table);
+bind_table_t *bind_table_find(const char *name);
+int bind_entry_add(bind_table_t *table, const char *flags, const char *mask, const char *function_name, int bind_flags, Function callback, void *client_data);
+int bind_entry_del(bind_table_t *table, const char *flags, const char *mask, const char *function_name, void *cdata);
+void add_builtins(const char *table_name, cmd_t *cmds);
+void rem_builtins(const char *table_name, cmd_t *cmds);
 
 
 #endif
 #endif