1.1 --- a/librazor/iterator.c Fri Oct 17 10:10:57 2014 +0100
1.2 +++ b/librazor/iterator.c Fri Jun 08 18:02:49 2018 +0100
1.3 @@ -317,6 +317,52 @@
1.4 free(fi);
1.5 }
1.6
1.7 +RAZOR_EXPORT struct razor_string_iterator *
1.8 +razor_install_prefix_iterator_create(struct razor_set *set,
1.9 + struct razor_package *package)
1.10 +{
1.11 + struct razor_string_iterator *si;
1.12 +
1.13 + assert (set != NULL);
1.14 + assert (package != NULL);
1.15 +
1.16 + si = zalloc(sizeof *si);
1.17 + si->set = set;
1.18 +
1.19 + si->index = list_first(&package->install_prefixes,
1.20 + &set->prefix_pool);
1.21 +
1.22 + return si;
1.23 +}
1.24 +
1.25 +RAZOR_EXPORT int
1.26 +razor_string_iterator_next(struct razor_string_iterator *si,
1.27 + const char **string)
1.28 +{
1.29 + char *pool;
1.30 + int valid;
1.31 +
1.32 + assert (si != NULL);
1.33 +
1.34 + if (si->index) {
1.35 + pool = si->set->string_pool.data;
1.36 + *string = &pool[si->index->data];
1.37 + si->index = list_next(si->index);
1.38 + valid = 1;
1.39 + } else {
1.40 + *string = NULL;
1.41 + valid = 0;
1.42 + }
1.43 +
1.44 + return valid;
1.45 +}
1.46 +
1.47 +RAZOR_EXPORT void
1.48 +razor_string_iterator_destroy(struct razor_string_iterator *si)
1.49 +{
1.50 + free(si);
1.51 +}
1.52 +
1.53 struct razor_package_query {
1.54 struct razor_set *set;
1.55 char *vector;