… | |
… | |
1068 | /* use an insertion sort after qsort, or for small arrays */ |
1068 | /* use an insertion sort after qsort, or for small arrays */ |
1069 | /* first move the smallest element to the front, to act as a sentinel */ |
1069 | /* first move the smallest element to the front, to act as a sentinel */ |
1070 | { |
1070 | { |
1071 | int min = 0; |
1071 | int min = 0; |
1072 | |
1072 | |
1073 | for (i = size > EIO_QSORT_SKIP ? EIO_QSORT_CUTOFF : size; --i; ) |
1073 | for (i = size > EIO_QSORT_SKIP ? EIO_QSORT_CUTOFF + 1 : size; --i; ) |
1074 | if (EIO_DENT_CMP (dents [i], <, dents [min])) |
1074 | if (EIO_DENT_CMP (dents [i], <, dents [min])) |
1075 | min = i; |
1075 | min = i; |
1076 | |
1076 | |
1077 | /* swap elements 0 and j (minimum) */ |
1077 | /* swap elements 0 and j (minimum) */ |
1078 | { |
1078 | { |
… | |
… | |
1084 | for (i = 1; i < size; ++i) |
1084 | for (i = 1; i < size; ++i) |
1085 | { |
1085 | { |
1086 | eio_dirent value = dents [i]; |
1086 | eio_dirent value = dents [i]; |
1087 | |
1087 | |
1088 | for (j = i - 1; EIO_DENT_CMP (dents [j], >, value); --j) |
1088 | for (j = i - 1; EIO_DENT_CMP (dents [j], >, value); --j) |
|
|
1089 | { |
|
|
1090 | assert (j >= 0); |
1089 | dents [j + 1] = dents [j]; |
1091 | dents [j + 1] = dents [j]; |
|
|
1092 | } |
1090 | |
1093 | |
1091 | dents [j + 1] = value; |
1094 | dents [j + 1] = value; |
1092 | } |
1095 | } |
1093 | } |
1096 | } |
1094 | |
1097 | |