qsort compare functions
David Relson
relson at osagesoftware.com
Fri Nov 22 06:17:11 CET 2002
Greetings,
After today's fix, the compare routines called by qsort both look like the
following code:
const discrim_t *d1 = id1;
const discrim_t *d2 = id2;
double d = d2->prob - d1->prob;
if (fabs(d) < EPS) return strcmp(d1->key, d2->key);
if (d1->prob > d2->prob) return 1;
if (d1->prob < d2->prob) return -1;
return 0;
Qsort simply wants to know how to order two items. Bogofilter wants them
in probability order (primarily) and alphabetic order
(secondarily). Given this info, I assert that the proper code is:
const discrim_t *d1 = id1;
const discrim_t *d2 = id2;
if (d1->prob > d2->prob) return 1;
if (d1->prob < d2->prob) return -1;
return strcmp(d1->key, d2->key);
If there are no objections, I shall make this correction.
David
More information about the bogofilter-dev
mailing list