diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-11-04 10:59:48 -0500 |
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-11-04 10:59:48 -0500 |
| commit | 5c1fd40923f8749b0c0327616fcf2fc87cd0ef89 (patch) | |
| tree | 9340b0082b3961a832d479ec5778290913fc6a92 /src/cli | |
| parent | fdd1eba1446ff80f8f3acada328d15bbb93366d6 (diff) | |
| download | stasis-5c1fd40923f8749b0c0327616fcf2fc87cd0ef89.tar.gz | |
get_latest_deliveries() now optionally returns the count of elements in the returned array of Delivery structs
Diffstat (limited to 'src/cli')
| -rw-r--r-- | src/cli/stasis_indexer/helpers.c | 10 | ||||
| -rw-r--r-- | src/cli/stasis_indexer/include/helpers.h | 1 |
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); |
