Ver Fonte

* Now, cmds without a help[] entry will be hidden in cmd_help

svn: 1079
Bryan Drewery há 22 anos atrás
pai
commit
f4e39673e5
3 ficheiros alterados com 20 adições e 10 exclusões
  1. 17 8
      src/cmds.c
  2. 1 0
      src/cmds.h
  3. 2 2
      src/tclhash.c

+ 17 - 8
src/cmds.c

@@ -763,6 +763,17 @@ static void cmd_nohelp(struct userrec *u, int idx, char *par)
 
 }
 
+int
+findhelp(const char *cmd)
+{
+  int hi;
+
+  for (hi = 0; (help[hi].cmd) && (help[hi].desc); hi++)
+    if (!egg_strcasecmp(cmd, help[hi].cmd))
+      return 1;
+  return 0;
+}
+
 static void cmd_help(struct userrec *u, int idx, char *par)
 {
   char flg[100] = "", *fcats = NULL, temp[100] = "", buf[2046] = "", match[20] = "";
@@ -789,7 +800,7 @@ static void cmd_help(struct userrec *u, int idx, char *par)
 
   /* even if we have nowild, we loop to conserve code/space */
   while (!done) {
-    int i = 0, end = 0, first = 1, n, hi;
+    int i = 0, end = 0, first = 1, n, hi = 0;
     char *flag = NULL;
 
     flag = newsplit(&fcats);
@@ -804,15 +815,13 @@ static void cmd_help(struct userrec *u, int idx, char *par)
         flg[0] = 0;
         build_flags(flg, &(cmdlist[n].flags), NULL);
         dprintf(idx, "Showing you help for '%s' (%s):\n", match, flg);
-        for (hi = 0; (help[hi].cmd) && (help[hi].desc); hi++) {
-          if (!egg_strcasecmp(match, help[hi].cmd)) {
+        if ((hi = findhelp(match))) {
 #ifdef S_GARBLESTRINGS
-            if (help[hi].garble)
-              showhelp(idx, &fr, degarble(help[hi].garble, help[hi].desc));
-            else
+          if (help[hi].garble)
+            showhelp(idx, &fr, degarble(help[hi].garble, help[hi].desc));
+          else
 #endif /* S_GARBLESTRINGS */
-              showhelp(idx, &fr, help[hi].desc);
-          }
+            showhelp(idx, &fr, help[hi].desc);
         }
         done = 1;
         break;

+ 1 - 0
src/cmds.h

@@ -32,6 +32,7 @@ typedef struct cmd_pass {
 extern mycmds 		cmdlist[]; 
 extern int		cmdi;
 
+int findhelp(const char *);
 int check_dcc_attrs(struct userrec *, flag_t);
 int check_dcc_chanattrs(struct userrec *, char *, flag_t, flag_t);
 int stripmodes(char *);

+ 2 - 2
src/tclhash.c

@@ -457,8 +457,8 @@ void add_builtins(const char *table_name, cmd_t *cmds)
 
 	for (; cmds->name; cmds++) {
                 /* add BT_dcc cmds to cmdlist[] :: add to the help system.. */
-                if (!strcmp(table->name, "dcc")) {
-		  cmdlist[cmdi].name = cmds->name;
+                if (!strcmp(table->name, "dcc") && findhelp(cmds->name)) {
+    cmdlist[cmdi].name = cmds->name;
                   cmdlist[cmdi].flags.match = FR_GLOBAL | FR_CHAN;
                   break_down_flags(cmds->flags, &(cmdlist[cmdi].flags), NULL);
                   cmdi++;