PennMUSH 1.8.3p11
authorRick L Bird <nveid@yahoo.com>
Fri, 6 May 2011 21:28:05 +0000 (17:28 -0400)
committerRick L Bird <nveid@yahoo.com>
Fri, 6 May 2011 21:28:05 +0000 (17:28 -0400)
Author: talvo@talvo.com <talvo@talvo.com@ba372814-4f39-11de-9ad6-1127a62b9fcd>
Date:   Mon Nov 30 02:51:16 2009 +0000

    Issue 29, multiple class/restrictions for @search. Hopefully.

Author: talvo@talvo.com <talvo@talvo.com@ba372814-4f39-11de-9ad6-1127a62b9fcd>
Date:   Mon Nov 30 01:34:58 2009 +0000

        Minor bugfix in @search.

Fixes #131
Fixes #166

src/command.c
src/wiz.c

index ddc8437984fb67c5b72bd260d4b88cbe0ac3ff60..abef43a66eb4557b75dd823d72ea902b93ca0246 100644 (file)
@@ -2155,9 +2155,9 @@ do_hook_list(dbref player, char *command)
     bp = buff;
        safe_str(T("The following commands have hooks: "), buff, &bp);
     for (i = 0; i < count; i++) {
-      if (gencomp((dbref) 0, ptrs[i], ptrs[i - 1], ALPHANUM_LIST) <= 0)
+      if (i > 0 && gencomp((dbref) 0, ptrs[i], ptrs[i - 1], ALPHANUM_LIST) <= 0)
        continue;
-                       if (i == (count - 1) && i)
+                       if (i && i == (count - 1))
                          safe_str(" and ", buff, &bp);
                        else if (i)
                safe_str(", ", buff, &bp);
index c06970b055bc0958656c222b1a9aa6d2d59b6438..96add3300a08b92835331fcdfc0b8ec1d31bf29f 100644 (file)
--- a/src/wiz.c
+++ b/src/wiz.c
@@ -1131,6 +1131,7 @@ do_search(dbref player, const char *arg1, char **arg3)
 {
   char tbuf[BUFFER_LEN], *arg2 = tbuf, *tbp;
   dbref *results = NULL;
+  char *s;
   int nresults;
 
   /* parse first argument into two */
@@ -1171,12 +1172,21 @@ do_search(dbref player, const char *arg1, char **arg3)
     }
   }
   {
-    const char *myargs[4];
+    const char *myargs[MAX_ARG];
+    int i;
+    int j = 2;
     myargs[0] = arg2;
     myargs[1] = arg3[1];
-    myargs[2] = arg3[2];
-    myargs[3] = arg3[3];
-    nresults = raw_search(player, tbuf, 4, myargs, &results, NULL);
+    for (i = 2; i < INT_MAX && (arg3[i] != NULL); i++) {
+                       if ((s = strchr(arg3[i], '='))) {
+                               *s++ = '\0';
+                               myargs[j++] = arg3[i];
+                               myargs[j++] = s;
+                       } else {
+                               myargs[j++] = arg3[i];
+                       }
+               }
+    nresults = raw_search(player, tbuf, j, myargs, &results, NULL);
   }
 
   if (nresults == 0) {