# HG changeset patch # User Kristian H?gsberg # Date 1200630972 18000 # Node ID 337a7a55e2c600f47d1cb134f9755fb629541648 # Parent 9708f6d5db8c675601b75854206084ce2007b7b4 Use the package iterator for looping over file owners too. diff -r 9708f6d5db8c -r 337a7a55e2c6 main.c --- a/main.c Thu Jan 17 23:28:37 2008 -0500 +++ b/main.c Thu Jan 17 23:36:12 2008 -0500 @@ -112,11 +112,19 @@ 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; diff -r 9708f6d5db8c -r 337a7a55e2c6 razor.c --- a/razor.c Thu Jan 17 23:28:37 2008 -0500 +++ b/razor.c Thu Jan 17 23:36:12 2008 -0500 @@ -1161,31 +1161,24 @@ 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 * diff -r 9708f6d5db8c -r 337a7a55e2c6 razor.h --- a/razor.h Thu Jan 17 23:28:37 2008 -0500 +++ b/razor.h Thu Jan 17 23:36:12 2008 -0500 @@ -28,6 +28,9 @@ 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, @@ -46,7 +49,6 @@ 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);