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 *