command_list_file_packages(int argc, const char *argv[])
{
struct razor_set *set;
+ struct razor_package_iterator *pi;
+ struct razor_package *package;
+ const char *name, *version;
set = razor_set_open(repo_filename);
if (set == NULL)
return 1;
- razor_set_list_file_packages(set, argv[0]);
+
+ pi = razor_package_iterator_create_for_file(set, argv[0]);
+ while (razor_package_iterator_next(pi, &package, &name, &version))
+ printf("%s-%s\n", name, version);
+ razor_package_iterator_destroy(pi);
+
razor_set_destroy(set);
return 0;
list_dir(set, e, buffer, base);
}
-void
-razor_set_list_file_packages(struct razor_set *set, const char *filename)
+struct razor_package_iterator *
+razor_package_iterator_create_for_file(struct razor_set *set,
+ const char *filename)
{
- struct razor_entry *e;
- struct razor_package *packages, *p;
- const char *pool;
- unsigned long *r;
+ struct razor_entry *entry;
+ unsigned long *index;
- e = find_entry(set, set->files.data, filename);
- if (e == NULL)
- return;
+ entry = find_entry(set, set->files.data, filename);
+ if (entry == NULL)
+ return NULL;
- if (e->packages & RAZOR_IMMEDIATE)
- r = &e->packages;
+ if (entry->packages & RAZOR_IMMEDIATE)
+ index = &entry->packages;
else
- r = (unsigned long *) set->package_pool.data + e->packages;
+ index = (unsigned long *)
+ set->package_pool.data + entry->packages;
- packages = set->packages.data;
- pool = set->string_pool.data;
- while (1) {
- p = &packages[*r & RAZOR_ENTRY_MASK];
- printf("%s-%s\n", &pool[p->name], &pool[p->version]);
- if (*r++ & RAZOR_IMMEDIATE)
- break;
- }
+ return razor_package_iterator_create_with_index(set, index);
}
static unsigned long *
struct razor_package_iterator *
razor_package_iterator_create_for_property(struct razor_set *set,
struct razor_property *property);
+struct razor_package_iterator *
+razor_package_iterator_create_for_file(struct razor_set *set,
+ const char *filename);
int razor_package_iterator_next(struct razor_package_iterator *pi,
struct razor_package **package,
razor_property_iterator_destroy(struct razor_property_iterator *pi);
void razor_set_list_files(struct razor_set *set, const char *prefix);
-void razor_set_list_file_packages(struct razor_set *set, const char *filename);
void razor_set_list_package_files(struct razor_set *set, const char *name);
void razor_set_list_unsatisfied(struct razor_set *set);