+## repeat retrieve (member_type = imembers.#member_type,
+## member_id = imembers.#member_id)
+## where imembers.#list_id = @list_id and imembers.direct = 1 {
+ if (members++ > 49)
+## endretrieve
+ sq_save_data(sq, (member_type[0] << 24) | (member_id & 0xffffff));
+## }
+ if (members <= 49) {
+ targv[1] = malloc(0);
+ while (sq_remove_data(sq, &member_id)) {
+ switch (member_id >> 24) {
+ case 'U':
+ targv[0] = "USER";
+ id_to_name(member_id & 0xffffff, "USER", &targv[1]);
+ (*action)(2, targv, actarg);
+ break;
+ case 'L':
+ targv[0] = "LIST";
+ id_to_name(member_id & 0xffffff, "LIST", &targv[1]);
+ (*action)(2, targv, actarg);
+ break;
+ case 'S':
+ targv[0] = "STRING";
+ id_to_name(member_id & 0xffffff, "STRING", &targv[1]);
+ (*action)(2, targv, actarg);
+ break;
+ case 'K':
+ targv[0] = "KERBEROS";
+ id_to_name(member_id & 0xffffff, "STRING", &targv[1]);
+ (*action)(2, targv, actarg);
+ break;
+ default:
+ sq_destroy(sq);
+ return(MR_INTERNAL);
+ }
+ }
+ free(targv[1]);
+ sq_destroy(sq);
+ return(MR_SUCCESS);
+ }
+ sq_destroy(sq);
+
+ targv[1] = member_name;
+ targv[0] = "USER";