aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cli/stasis_indexer/helpers.c10
-rw-r--r--src/cli/stasis_indexer/include/helpers.h1
2 files changed, 8 insertions, 3 deletions
diff --git a/src/cli/stasis_indexer/helpers.c b/src/cli/stasis_indexer/helpers.c
index 018a8f6..e455963 100644
--- a/src/cli/stasis_indexer/helpers.c
+++ b/src/cli/stasis_indexer/helpers.c
@@ -214,11 +214,11 @@ int sort_by_latest_rc(const void *a, const void *b) {
}
}
-struct Delivery *get_latest_deliveries(struct Delivery ctx[], size_t nelem) {
+struct Delivery **get_latest_deliveries(struct Delivery **ctx, size_t nelem, size_t *result_nelem) {
int latest = 0;
size_t n = 0;
- struct Delivery *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));
return NULL;
@@ -227,11 +227,15 @@ struct Delivery *get_latest_deliveries(struct Delivery ctx[], size_t nelem) {
latest = get_latest_rc(ctx, nelem);
qsort(ctx, nelem, sizeof(*ctx), sort_by_latest_rc);
for (size_t i = 0; i < nelem; i++) {
- if (ctx[i].meta.rc == latest) {
+ if (ctx[i]->meta.rc == latest) {
result[n] = ctx[i];
n++;
}
}
+
+ if (result_nelem) {
+ *result_nelem = n;
+ }
return result;
}
diff --git a/src/cli/stasis_indexer/include/helpers.h b/src/cli/stasis_indexer/include/helpers.h
index 9cefc05..b2b6131 100644
--- a/src/cli/stasis_indexer/include/helpers.h
+++ b/src/cli/stasis_indexer/include/helpers.h
@@ -19,6 +19,7 @@ int get_pandoc_version(size_t *result);
int pandoc_exec(const char *in_file, const char *out_file, const char *css_file, const char *title);
int get_latest_rc(struct Delivery ctx[], size_t nelem);
struct Delivery *get_latest_deliveries(struct Delivery ctx[], size_t nelem);
+struct Delivery **get_latest_deliveries(struct Delivery **ctx, size_t nelem, size_t *result_nelem);
int get_files(struct StrList **out, const char *path, const char *pattern, ...);
struct StrList *get_docker_images(struct Delivery *ctx, char *pattern);
int load_metadata(struct Delivery *ctx, const char *filename);