From 7268e337168e8f4319308695906acba1ad432ff6 Mon Sep 17 00:00:00 2001 From: danw Date: Thu, 3 Jul 1997 22:51:46 +0000 Subject: [PATCH] Always sort the result in get_members_of_list. (Previously this was only done for lists of more than 50 members, and implemented such that the server had to do twice as much work in that case.) --- server/qsupport.pc | 56 ---------------------------------------------- 1 file changed, 56 deletions(-) diff --git a/server/qsupport.pc b/server/qsupport.pc index e90299b7..04643baa 100644 --- a/server/qsupport.pc +++ b/server/qsupport.pc @@ -922,7 +922,6 @@ int gmol_internal(q, argv, cl, action, actarg, flag) EXEC SQL END DECLARE SECTION; char *targv[2]; int members; - struct save_queue *sq; /* true/false flag indicates whether to display only direct members. */ if (flag) @@ -931,61 +930,6 @@ int gmol_internal(q, argv, cl, action, actarg, flag) direct = -1; list_id = *(int *)argv[0]; - members = 0; - sq = sq_create(); - - EXEC SQL DECLARE csr118 CURSOR FOR - SELECT member_type, member_id FROM imembers - WHERE list_id = :list_id AND direct > :direct; - if (dbms_errno) - return(mr_errcode); - EXEC SQL OPEN csr118; - if (dbms_errno) - return(mr_errcode); - while(1) { - EXEC SQL FETCH csr118 INTO :member_type, :member_id; - if (sqlca.sqlcode != 0) break; - if (members++ > 49) - break; - sq_save_data(sq, (char *)(((int)member_type[0] << 24) | - (member_id & 0xffffff))); - } - EXEC SQL CLOSE csr118; - - 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, USERS_TABLE, &targv[1]); - (*action)(2, targv, actarg); - break; - case 'L': - targv[0] = "LIST"; - id_to_name(member_id & 0xffffff, LIST_TABLE, &targv[1]); - (*action)(2, targv, actarg); - break; - case 'S': - targv[0] = "STRING"; - id_to_name(member_id & 0xffffff, STRINGS_TABLE, &targv[1]); - (*action)(2, targv, actarg); - break; - case 'K': - targv[0] = "KERBEROS"; - id_to_name(member_id & 0xffffff, STRINGS_TABLE, &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"; -- 2.45.1