+ int status, count, savecount;
+ struct save_queue *lists, *members;
+ struct member *m, *m1, *data;
+
+ lists = sq_create();
+ members = sq_create();
+ m = (struct member *) malloc(sizeof(struct member));
+ m->type = M_LIST;
+ m->name = listname;
+ sq_save_data(lists, m);
+
+ while (sq_get_data(lists, &m)) {
+ sq_destroy(memberlist);
+ memberlist = sq_create();
+ if (debugflg)
+ fprintf(stderr, "Fetching members of %s\n", m->name);
+ status = mr_query("get_members_of_list", 1, &(m->name),
+ get_list_members, (char *)memberlist);
+ if (status)
+ com_err(whoami, status, "while getting members of list %s", m->name);
+ while (sq_get_data(memberlist, &m1)) {
+ if (m1->type == M_LIST)
+ unique_add_member(lists, m1);
+ else
+ unique_add_member(members, m1);
+ }
+ }
+ savecount = count = sq_count_elts(members);
+ data = (struct member *) malloc(count * sizeof(struct member));
+ count = 0;
+ while (sq_get_data(members, &m))
+ memcpy(&data[count++], m, sizeof(struct member));
+ qsort(data, count, sizeof(struct member), membercmp);
+ for (count = 0; count < savecount; count++) {
+ show_list_member(&data[count]);
+ }
+}
+
+
+/* add a struct member to a queue if that member isn't already there. */