]> andersk Git - moira.git/commitdiff
Fix bugs that crept into list_queries when it was updated to deal with
authordanw <danw>
Tue, 11 Jan 2000 05:57:31 +0000 (05:57 +0000)
committerdanw <danw>
Tue, 11 Jan 2000 05:57:31 +0000 (05:57 +0000)
versioning.

server/qsubs.c

index 51ce56b17ef1a361b3fd62e94997f847d6c60dcd..af6c80aef08ce7815bb3e462e707e7a7ed90797e 100644 (file)
@@ -46,37 +46,35 @@ struct query *get_query_by_name(char *name, int version)
   return NULL;
 }
 
-void list_queries(int (*action)(int, char *[], void *), void *actarg)
+void list_queries(client *cl, int (*action)(int, char *[], void *),
+                 void *actarg)
 {
-  struct query *q;
-  int i;
-  static struct query **squeries2 = NULL;
-  struct query **sq;
+  static struct query **squeries = NULL;
+  static int qcount;
+  struct query *q, **sq;
   char qnames[80];
   char *qnp;
-  int count;
+  int i;
 
-  if (!squeries2)
+  if (!squeries)
     {
-      sq = xmalloc(count * sizeof(struct query *));
-      squeries2 = sq;
+      squeries = sq = xmalloc(QueryCount * sizeof(struct query *));
       q = Queries;
       for (i = 0; i < QueryCount; i++)
        {
+         if (q->version > cl->version)
+           continue;
          if (i > 0 && strcmp((*sq)->name, q->name))
-           {
-             sq++;
-             count++;
-           }
+           sq++;
          *sq = q++;
        }
-      count++;
-      qsort(squeries2, count, sizeof(struct query *), qcmp);
+      qcount = (sq - squeries) + 1;
+      qsort(squeries, qcount, sizeof(struct query *), qcmp);
     }
-  sq = squeries2;
+  sq = squeries;
 
   qnp = qnames;
-  for (i = count; --i >= 0; sq++)
+  for (i = qcount; --i >= 0; sq++)
     {
       sprintf(qnames, "%s (%s)", (*sq)->name, (*sq)->shortname);
       (*action)(1, &qnp, actarg);
This page took 0.048897 seconds and 5 git commands to generate.