aboutsummaryrefslogtreecommitdiff
path: root/src/cli/stasis_indexer/helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli/stasis_indexer/helpers.c')
-rw-r--r--src/cli/stasis_indexer/helpers.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/cli/stasis_indexer/helpers.c b/src/cli/stasis_indexer/helpers.c
index 1c51e8d..078be68 100644
--- a/src/cli/stasis_indexer/helpers.c
+++ b/src/cli/stasis_indexer/helpers.c
@@ -181,25 +181,35 @@ int get_latest_rc(struct Delivery ctx[], const size_t nelem) {
return result;
}
-struct Delivery **get_latest_deliveries(struct Delivery ctx[], const size_t nelem) {
- struct Delivery **result = NULL;
+int sort_by_latest_rc(const void *a, const void *b) {
+ const struct Delivery *aa = a;
+ const struct Delivery *bb = b;
+ if (aa->meta.rc > bb->meta.rc) {
+ return -1;
+ }
+ if (aa->meta.rc < bb->meta.rc) {
+ return 1;
+ }
+ return 0;
+}
+
+struct Delivery *get_latest_deliveries(struct Delivery ctx[], size_t nelem) {
int latest = 0;
size_t n = 0;
- result = calloc(nelem + 1, sizeof(result));
+ struct Delivery *result = calloc(nelem + 1, sizeof(*result));
if (!result) {
- fprintf(stderr, "Unable to allocate %zu bytes for result delivery array: %s\n", nelem * sizeof(result), strerror(errno));
+ fprintf(stderr, "Unable to allocate %zu bytes for result delivery array: %s\n", nelem * sizeof(*result), strerror(errno));
return NULL;
}
latest = get_latest_rc(ctx, nelem);
for (size_t i = 0; i < nelem; i++) {
if (ctx[i].meta.rc == latest) {
- result[n] = &ctx[i];
+ result[n] = ctx[i];
n++;
}
}
-
return result;
}