diff options
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/com32/lib/qsort.c')
-rw-r--r-- | contrib/syslinux/syslinux-4.03/com32/lib/qsort.c | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/contrib/syslinux/syslinux-4.03/com32/lib/qsort.c b/contrib/syslinux/syslinux-4.03/com32/lib/qsort.c deleted file mode 100644 index a9d646c..0000000 --- a/contrib/syslinux/syslinux-4.03/com32/lib/qsort.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * qsort.c - * - * This is actually combsort. It's an O(n log n) algorithm with - * simplicity/small code size being its main virtue. - */ - -#include <stddef.h> -#include <stdlib.h> -#include <string.h> - -static inline size_t newgap(size_t gap) -{ - gap = (gap * 10) / 13; - if (gap == 9 || gap == 10) - gap = 11; - - if (gap < 1) - gap = 1; - return gap; -} - -void qsort(void *base, size_t nmemb, size_t size, - int (*compar) (const void *, const void *)) -{ - size_t gap = nmemb; - size_t i, j; - char *p1, *p2; - int swapped; - - if (!nmemb) - return; - - do { - gap = newgap(gap); - swapped = 0; - - for (i = 0, p1 = base; i < nmemb - gap; i++, p1 += size) { - j = i + gap; - if (compar(p1, p2 = (char *)base + j * size) > 0) { - memswap(p1, p2, size); - swapped = 1; - } - } - } while (gap > 1 || swapped); -} |