# HG changeset patch # User Kristian H?gsberg # Date 1200025851 18000 # Node ID 7e5f2050db0e2af15802cbb350d156f8e4eabc0c # Parent ec850cbd6935d64b06678498c6373a1d903772ce Use property iterator in razor_set_list_property_packages(). diff -r ec850cbd6935 -r 7e5f2050db0e razor.c --- a/razor.c Thu Jan 10 23:03:03 2008 -0500 +++ b/razor.c Thu Jan 10 23:30:51 2008 -0500 @@ -1057,50 +1057,34 @@ free(pi); } -struct razor_property * -razor_set_get_property(struct razor_set *set, const char *property) +void +razor_set_list_property_packages(struct razor_set *set, + const char *ref_name, + const char *ref_version, + enum razor_property_type ref_type) { - struct razor_property *p; + struct razor_property *property; struct razor_property_iterator *pi; - const char *name, *version; + struct razor_package *p, *packages; + const char *name, *version, *pool; enum razor_property_type type; + unsigned long *r; + + if (ref_name == NULL) + return; + + packages = set->packages.data; + pool = set->string_pool.data; pi = razor_property_iterator_create(set, NULL); - while (razor_property_iterator_next(pi, &p, &name, &version, &type)) { - if (strcmp(name, property) == 0) - break; - } - razor_property_iterator_destroy(pi); - - return p; -} - - -void -razor_set_list_property_packages(struct razor_set *set, - const char *name, - const char *version, - enum razor_property_type type) -{ - struct razor_property *property, *end; - struct razor_package *p, *packages; - unsigned long *r; - char *pool; - - if (name == NULL) - return; - - property = razor_set_get_property(set, name); - packages = set->packages.data; - pool = set->string_pool.data; - end = set->properties.data + set->properties.size; - while (property < end && - strcmp(name, &pool[property->name & RAZOR_ENTRY_MASK]) == 0) { - if (version && - versioncmp(version, &pool[property->version]) != 0) - goto next; - if (type != (property->name >> 30)) - goto next; + while (razor_property_iterator_next(pi, &property, + &name, &version, &type)) { + if (strcmp(ref_name, name) != 0) + continue; + if (ref_version && versioncmp(ref_version, version) != 0) + continue; + if (ref_type != type) + continue; if (property->packages & RAZOR_IMMEDIATE) r = &property->packages; @@ -1115,9 +1099,8 @@ if (*r++ & RAZOR_IMMEDIATE) break; } - next: - property++; } + razor_property_iterator_destroy(pi); } static struct razor_entry * diff -r ec850cbd6935 -r 7e5f2050db0e razor.h --- a/razor.h Thu Jan 10 23:03:03 2008 -0500 +++ b/razor.h Thu Jan 10 23:30:51 2008 -0500 @@ -22,9 +22,6 @@ struct razor_package * razor_set_get_package(struct razor_set *set, const char *package); -struct razor_property * -razor_set_get_property(struct razor_set *set, const char *property); - struct razor_package_iterator; struct razor_package_iterator * razor_package_iterator_create(struct razor_set *set);