# HG changeset patch # User jbe # Date 1363454995 -3600 # Node ID accffcefeff7c2dec91a7188fb93c215e5039359 # Parent c23bb5ebcdec2dce91438798638ed81df9e051fe Code cleanup in "lf_update_suggestion_order" (own block for preparation of the ballot data) diff -r c23bb5ebcdec -r accffcefeff7 lf_update_suggestion_order.c --- a/lf_update_suggestion_order.c Sat Mar 16 18:23:06 2013 +0100 +++ b/lf_update_suggestion_order.c Sat Mar 16 18:29:55 2013 +0100 @@ -75,105 +75,110 @@ }; static void process_initiative(PGresult *res) { - void *candidate_tree = NULL; int ballot_count = 0; - int tuple_count, i; - char *old_member_id = NULL; - struct ballot *ballots, *ballot; - int candidates_in_sections[4] = {0, }; - candidate_count = 0; - tuple_count = PQntuples(res); - for (i=0; i<=tuple_count; i++) { - char *member_id, *suggestion_id; - if (i 4) { - fprintf(stderr, "Unexpected preference value\n"); + candidate_count = 0; + twalk(candidate_tree, (void *)register_candidate); + while (candidate_tree) tdelete(*(void **)candidate_tree, &candidate_tree, (void *)strcmp); + printf("Ballot count: %i\n", ballot_count); + ballots = calloc(ballot_count, sizeof(struct ballot)); + if (!ballots) { + fprintf(stderr, "Insufficient memory\n"); abort(); } - preference--; - ballot->weight = weight; - ballot->sections[preference].count++; - if (old_member_id && strcmp(old_member_id, member_id)) ballot++; - old_member_id = member_id; - } - for (i=0; i 4) { fprintf(stderr, "Unexpected preference value\n"); abort(); } preference--; - ballot->sections[preference].candidates[candidates_in_sections[preference]++] = candidate_by_key(suggestion_id); + ballot->weight = weight; + ballot->sections[preference].count++; + if (old_member_id && strcmp(old_member_id, member_id)) ballot++; + old_member_id = member_id; + } + for (i=0; i 4) { + fprintf(stderr, "Unexpected preference value\n"); + abort(); + } + preference--; + ballot->sections[preference].candidates[candidates_in_sections[preference]++] = candidate_by_key(suggestion_id); + } + if (i==tuple_count || (old_member_id && strcmp(old_member_id, member_id))) { + ballot++; + candidates_in_sections[0] = 0; + candidates_in_sections[1] = 0; + candidates_in_sections[2] = 0; + candidates_in_sections[3] = 0; + } + old_member_id = member_id; } - old_member_id = member_id; } + free(candidates); for (i=0; i