Răsfoiți Sursa

* Added .type and checking for botcmd_t

svn: 1800
Bryan Drewery 21 ani în urmă
părinte
comite
760bc8c23e
5 a modificat fișierele cu 86 adăugiri și 84 ștergeri
  1. 37 37
      src/botcmd.c
  2. 1 0
      src/cmds.h
  3. 6 5
      src/dcc.c
  4. 36 36
      src/mod/share.mod/share.c
  5. 6 6
      src/mod/update.mod/update.c

+ 37 - 37
src/botcmd.c

@@ -1160,43 +1160,43 @@ static void bot_versions(int sock, char *par)
  */
 botcmd_t C_bot[] =
 {
-  {"a",			bot_actchan},
-  {"aw",		bot_away},
-  {"bye",		bot_bye},
-  {"c",			bot_chan2},
-  {"cg",                bot_config},
-  {"cgb",		bot_configbroad},
-  {"cp", 		bot_cmdpass},
-  {"ct",		bot_chat},
-  {"e",			bot_error},
-  {"el",		bot_endlink},
-  {"i",			bot_idle},
-  {"j",			bot_join},
-  {"l",			bot_link},
-  {"n",			bot_nlinked},
-  {"nc",		bot_nickchange},
-  {"p",			bot_priv},
-  {"pi",		bot_ping},
-  {"po",		bot_pong},
-  {"pt",		bot_part},
-  {"r",			bot_reject},
-  {"rc", 		bot_remotecmd},
-  {"rr", 		bot_remotereply},
-  {"s",			bot_share},
-  {"sb",		bot_shareupdate},
-  {"si",		bot_shellinfo},
-  {"t",			bot_trace},
-  {"tb",		bot_thisbot},
-  {"td",		bot_traced},
-  {"ts", 		bot_timesync},
-  {"u",			bot_update},
-  {"ul",		bot_unlink},
-  {"un",		bot_unlinked},
-  {"v",			bot_versions},
-  {"w",			bot_who},
-  {"z",			bot_zapf},
-  {"zb",		bot_zapfbroad},
-  {NULL,		NULL}
+  {"a",			bot_actchan, 0},
+  {"aw",		bot_away, 0},
+  {"bye",		bot_bye, 0},
+  {"c",			bot_chan2, 0},
+  {"cg",                bot_config, 0},
+  {"cgb",		bot_configbroad, 0},
+  {"cp", 		bot_cmdpass, 0},
+  {"ct",		bot_chat, 0},
+  {"e",			bot_error, 0},
+  {"el",		bot_endlink, 0},
+  {"i",			bot_idle, 0},
+  {"j",			bot_join, 0},
+  {"l",			bot_link, 0},
+  {"n",			bot_nlinked, 0},
+  {"nc",		bot_nickchange, 0},
+  {"p",			bot_priv, 0},
+  {"pi",		bot_ping, 0},
+  {"po",		bot_pong, 0},
+  {"pt",		bot_part, 0},
+  {"r",			bot_reject, 0},
+  {"rc", 		bot_remotecmd, 0},
+  {"rr", 		bot_remotereply, 0},
+  {"s",			bot_share, 0},
+  {"sb",		bot_shareupdate, 0},
+  {"si",		bot_shellinfo, 0},
+  {"t",			bot_trace, 0},
+  {"tb",		bot_thisbot, 0},
+  {"td",		bot_traced, 0},
+  {"ts", 		bot_timesync, 0},
+  {"u",			bot_update, 0},
+  {"ul",		bot_unlink, 0},
+  {"un",		bot_unlinked, 0},
+  {"v",			bot_versions, 0},
+  {"w",			bot_who, 0},
+  {"z",			bot_zapf, 0},
+  {"zb",		bot_zapfbroad, 0},
+  {NULL,		NULL, 0}
 };
 
 void send_remote_simul(int idx, char *bot, char *cmd, char *par)

+ 1 - 0
src/cmds.h

@@ -21,6 +21,7 @@ typedef struct {
   const char *name;
 //  Function func;
   void (*func) (int, char *);
+  int type;
 } botcmd_t;
 
 typedef struct cmd_pass {

+ 6 - 5
src/dcc.c

@@ -408,7 +408,6 @@ static void
 dcc_bot(int idx, char *code, int i)
 {
   char *msg = NULL;
-  int f;
 
   strip_telnet(dcc[idx].sock, code, &i);
   if (debug_output) {
@@ -426,15 +425,17 @@ dcc_bot(int idx, char *code, int i)
   } else
     msg = "";
 
-  for (f = i = 0; C_bot[i].name && !f; i++) {
+  for (i = 0; C_bot[i].name; i++) {
     int y = egg_strcasecmp(code, C_bot[i].name);
 
     if (!y) {
       /* Found a match */
-      (C_bot[i].func) (idx, msg);
-      f = 1;
+	/* FIXME: replace with HUB/leaf after being removed */
+      if (!C_bot[i].type || (C_bot[i].type == 1 && conf.bot->hub) || (C_bot[i].type == 2 && !conf.bot->hub))
+        (C_bot[i].func) (idx, msg);
+      break;
     } else if (y < 0)
-      return;
+      break;
   }
 }
 

+ 36 - 36
src/mod/share.mod/share.c

@@ -1206,46 +1206,46 @@ share_end(int idx, char *par)
 
 /* Note: these MUST be sorted. */
 static botcmd_t C_share[] = {
-  {"!", share_endstartup},
-  {"+b", share_pls_ban},
-  {"+bc", share_pls_banchan},
-  {"+bh", share_pls_bothost},
-  {"+cr", share_pls_chrec},
-  {"+e", share_pls_exempt},
-  {"+ec", share_pls_exemptchan},
-  {"+h", share_pls_host},
-  {"+i", share_pls_ignore},
-  {"+inv", share_pls_invite},
-  {"+invc", share_pls_invitechan},
-  {"-b", share_mns_ban},
-  {"-bc", share_mns_banchan},
-  {"-cr", share_mns_chrec},
-  {"-e", share_mns_exempt},
-  {"-ec", share_mns_exemptchan},
-  {"-h", share_mns_host},
-  {"-i", share_mns_ignore},
-  {"-inv", share_mns_invite},
-  {"-invc", share_mns_invitechan},
-  {"a", share_chattr},
-  {"c", share_change},
-  {"chchinfo", share_chchinfo},
-  {"e", share_end},
-  {"h", share_chhand},
-  {"k", share_killuser},
-  {"n", share_newuser},
-  {"s", share_stick_ban},
-  {"se", share_stick_exempt},
-  {"sInv", share_stick_invite},
-  {"u?", share_userfileq},
+  {"!", share_endstartup, 0},
+  {"+b", share_pls_ban, 0},
+  {"+bc", share_pls_banchan, 0},
+  {"+bh", share_pls_bothost, 0},
+  {"+cr", share_pls_chrec, 0},
+  {"+e", share_pls_exempt, 0},
+  {"+ec", share_pls_exemptchan, 0},
+  {"+h", share_pls_host, 0},
+  {"+i", share_pls_ignore, 0},
+  {"+inv", share_pls_invite, 0},
+  {"+invc", share_pls_invitechan, 0},
+  {"-b", share_mns_ban, 0},
+  {"-bc", share_mns_banchan, 0},
+  {"-cr", share_mns_chrec, 0},
+  {"-e", share_mns_exempt, 0},
+  {"-ec", share_mns_exemptchan, 0},
+  {"-h", share_mns_host, 0},
+  {"-i", share_mns_ignore, 0},
+  {"-inv", share_mns_invite, 0},
+  {"-invc", share_mns_invitechan, 0},
+  {"a", share_chattr, 0},
+  {"c", share_change, 0},
+  {"chchinfo", share_chchinfo, 0},
+  {"e", share_end, 0},
+  {"h", share_chhand, 0},
+  {"k", share_killuser, 0},
+  {"n", share_newuser, 0},
+  {"s", share_stick_ban, 0},
+  {"se", share_stick_exempt, 0},
+  {"sInv", share_stick_invite, 0},
+  {"u?", share_userfileq, 0},
 #ifdef HUB
-  {"un", share_ufno},
+  {"un", share_ufno, HUB},
 #endif /* HUB */
-  {"us", share_ufsend},
+  {"us", share_ufsend, 0},
 #ifdef HUB
-  {"uy", share_ufyes},
+  {"uy", share_ufyes, HUB},
 #endif /* HUB */
-  {"v", share_version},
-  {NULL, NULL}
+  {"v", share_version, 0},
+  {NULL, NULL, 0}
 };
 
 

+ 6 - 6
src/mod/update.mod/update.c

@@ -155,12 +155,12 @@ static void update_version(int idx, char *par)
 /* Note: these MUST be sorted. */
 static botcmd_t C_update[] =
 {
-  {"u?",	update_fileq},
-  {"un",	update_ufno},
-  {"us",	update_ufsend},
-  {"uy",	update_ufyes},
-  {"v",         update_version},
-  {NULL,	NULL}
+  {"u?",	update_fileq, 0},
+  {"un",	update_ufno, 0},
+  {"us",	update_ufsend, 0},
+  {"uy",	update_ufyes, 0},
+  {"v",         update_version, 0},
+  {NULL,	NULL, 0}
 };
 
 static void got_nu(char *botnick, char *code, char *par)