diff --git a/include/misc.h b/include/misc.h index aa2b4fd9..5086be35 100644 --- a/include/misc.h +++ b/include/misc.h @@ -132,8 +132,6 @@ extern int debug; */ #define CANT_HAPPEN(expr) ((expr) ? oops(#expr, __FILE__, __LINE__) : 0) -typedef int (*qsort_func_t) (const void *, const void *); - /* return codes from command routines */ #define RET_OK 0 /* command completed sucessfully */ #define RET_FAIL 1 /* command completed unsucessfully [?] */ diff --git a/src/lib/as/as.h b/src/lib/as/as.h index 50b1ed65..071e9dd9 100644 --- a/src/lib/as/as.h +++ b/src/lib/as/as.h @@ -172,7 +172,7 @@ extern void as_disable_cachepath(void); extern void as_makepath(struct as_data *adp); extern void as_free_path(struct as_path *pp); -extern int as_costcomp(struct as_node **n1, struct as_node **n2); +extern int as_costcomp(const void *, const void *); extern struct as_queue *as_extend(struct as_data *adp); extern struct as_queue *as_merge(struct as_data *adp, struct as_queue *head, diff --git a/src/lib/as/as_costcomp.c b/src/lib/as/as_costcomp.c index d0a43d70..c4149017 100644 --- a/src/lib/as/as_costcomp.c +++ b/src/lib/as/as_costcomp.c @@ -25,8 +25,10 @@ * Used as comparision function for qsort. */ int -as_costcomp(struct as_node **n1, struct as_node **n2) +as_costcomp(const void *p1, const void *p2) { + struct as_node *const *n1 = p1; + struct as_node *const *n2 = p2; double diff; diff = (*n1)->lbcost - (*n2)->lbcost; diff --git a/src/lib/as/as_extend.c b/src/lib/as/as_extend.c index 86ed6fe4..0f257e11 100644 --- a/src/lib/as/as_extend.c +++ b/src/lib/as/as_extend.c @@ -50,7 +50,7 @@ as_extend(struct as_data *adp) return (NULL); if (i > 1) qsort(adp->neighbor_nodes, i, - sizeof(*adp->neighbor_nodes), (qsort_func_t)as_costcomp); + sizeof(*adp->neighbor_nodes), as_costcomp); /* remove old coord from head of queue and add to list of tried */ qp = head; diff --git a/src/lib/commands/powe.c b/src/lib/commands/powe.c index 44d92153..d2c0e2ad 100644 --- a/src/lib/commands/powe.c +++ b/src/lib/commands/powe.c @@ -60,7 +60,7 @@ struct powsort { static void addtopow(short *vec, struct powstr *pow); static void gen_power(void); static void out5(double value, int round_val, int round_flag); -static int powcmp(struct powsort *p1, struct powsort *p2); +static int powcmp(const void *, const void *); static int set_target(s_char *, int *); int @@ -325,19 +325,16 @@ gen_power(void) for (i = 1; i < MAXNOC; i++) { struct natstr *np; int maxpop; - float f = 1.0; if (opt_RES_POP) { np = getnatp(i); maxpop = max_population(np->nat_level[NAT_RLEV], SCT_MINE, 0); - f = 1.0 + (((float)maxpop) / 10000.0); + powbuf[i].p_power *= 1.0 + maxpop / 10000.0; } - powbuf[i].p_power *= f; order[i].powval = powbuf[i].p_power; order[i].cnum = i; } - qsort((s_char *)&order[1], MAXNOC - 1, sizeof(*order), - (qsort_func_t)powcmp); + qsort(&order[1], MAXNOC - 1, sizeof(*order), powcmp); putpower(0, &powbuf[0]); for (i = 1; i < MAXNOC; i++) { putpower(i, &powbuf[order[i].cnum]); @@ -353,8 +350,11 @@ gen_power(void) } static int -powcmp(struct powsort *p1, struct powsort *p2) +powcmp(const void *a, const void *b) { + const struct powsort *p1 = a; + const struct powsort *p2 = b; + if (p1->powval > p2->powval) return -1; if (p1->powval < p2->powval)