Move more front-end logic from razor_set_list_property_packages() to main.c.
1.1 --- a/main.c Thu Jan 10 23:30:51 2008 -0500
1.2 +++ b/main.c Thu Jan 10 23:42:42 2008 -0500
1.3 @@ -137,29 +137,52 @@
1.4 }
1.5
1.6 static int
1.7 -command_what_requires(int argc, const char *argv[])
1.8 +list_property_packages(const char *ref_name,
1.9 + const char *ref_version,
1.10 + enum razor_property_type ref_type)
1.11 {
1.12 struct razor_set *set;
1.13 + struct razor_property *property;
1.14 + struct razor_property_iterator *pi;
1.15 + const char *name, *version;
1.16 + enum razor_property_type type;
1.17 +
1.18 + if (ref_name == NULL)
1.19 + return 0;
1.20
1.21 set = razor_set_open(repo_filename);
1.22 - razor_set_list_property_packages(set, argv[0], argv[1],
1.23 - RAZOR_PROPERTY_REQUIRES);
1.24 - razor_set_destroy(set);
1.25 + if (set == NULL)
1.26 + return 1;
1.27 +
1.28 + pi = razor_property_iterator_create(set, NULL);
1.29 + while (razor_property_iterator_next(pi, &property,
1.30 + &name, &version, &type)) {
1.31 + if (strcmp(ref_name, name) != 0)
1.32 + continue;
1.33 + if (ref_version && strcmp(ref_version, version) != 0)
1.34 + continue;
1.35 + if (ref_type != type)
1.36 + continue;
1.37 +
1.38 + razor_set_list_property_packages(set, property);
1.39 + }
1.40 + razor_property_iterator_destroy(pi);
1.41
1.42 return 0;
1.43 }
1.44
1.45 static int
1.46 +command_what_requires(int argc, const char *argv[])
1.47 +{
1.48 + return list_property_packages(argv[0], argv[1],
1.49 + RAZOR_PROPERTY_REQUIRES);
1.50 +}
1.51 +
1.52 +static int
1.53 command_what_provides(int argc, const char *argv[])
1.54 {
1.55 - struct razor_set *set;
1.56 -
1.57 - set = razor_set_open(repo_filename);
1.58 - razor_set_list_property_packages(set, argv[0], argv[1],
1.59 - RAZOR_PROPERTY_PROVIDES);
1.60 - razor_set_destroy(set);
1.61 -
1.62 - return 0;
1.63 + return list_property_packages(argv[0], argv[1],
1.64 + RAZOR_PROPERTY_PROVIDES);
1.65 }
1.66
1.67 static int
2.1 --- a/razor.c Thu Jan 10 23:30:51 2008 -0500
2.2 +++ b/razor.c Thu Jan 10 23:42:42 2008 -0500
2.3 @@ -621,7 +621,6 @@
2.4 return *p1 - *p2;
2.5 }
2.6
2.7 -
2.8 static int
2.9 compare_packages(const void *p1, const void *p2, void *data)
2.10 {
2.11 @@ -1059,48 +1058,28 @@
2.12
2.13 void
2.14 razor_set_list_property_packages(struct razor_set *set,
2.15 - const char *ref_name,
2.16 - const char *ref_version,
2.17 - enum razor_property_type ref_type)
2.18 + struct razor_property *property)
2.19 {
2.20 - struct razor_property *property;
2.21 - struct razor_property_iterator *pi;
2.22 struct razor_package *p, *packages;
2.23 - const char *name, *version, *pool;
2.24 - enum razor_property_type type;
2.25 + const char *pool;
2.26 unsigned long *r;
2.27
2.28 - if (ref_name == NULL)
2.29 - return;
2.30 -
2.31 packages = set->packages.data;
2.32 pool = set->string_pool.data;
2.33
2.34 - pi = razor_property_iterator_create(set, NULL);
2.35 - while (razor_property_iterator_next(pi, &property,
2.36 - &name, &version, &type)) {
2.37 - if (strcmp(ref_name, name) != 0)
2.38 - continue;
2.39 - if (ref_version && versioncmp(ref_version, version) != 0)
2.40 - continue;
2.41 - if (ref_type != type)
2.42 - continue;
2.43 -
2.44 - if (property->packages & RAZOR_IMMEDIATE)
2.45 - r = &property->packages;
2.46 - else
2.47 - r = (unsigned long *)
2.48 - set->package_pool.data + property->packages;
2.49 - while (1) {
2.50 - p = &packages[*r & RAZOR_ENTRY_MASK];
2.51 - printf("%s-%s\n",
2.52 - &pool[p->name & RAZOR_ENTRY_MASK],
2.53 - &pool[p->version]);
2.54 - if (*r++ & RAZOR_IMMEDIATE)
2.55 - break;
2.56 - }
2.57 + if (property->packages & RAZOR_IMMEDIATE)
2.58 + r = &property->packages;
2.59 + else
2.60 + r = (unsigned long *)
2.61 + set->package_pool.data + property->packages;
2.62 + while (1) {
2.63 + p = &packages[*r & RAZOR_ENTRY_MASK];
2.64 + printf("%s-%s\n",
2.65 + &pool[p->name & RAZOR_ENTRY_MASK],
2.66 + &pool[p->version]);
2.67 + if (*r++ & RAZOR_IMMEDIATE)
2.68 + break;
2.69 }
2.70 - razor_property_iterator_destroy(pi);
2.71 }
2.72
2.73 static struct razor_entry *
3.1 --- a/razor.h Thu Jan 10 23:30:51 2008 -0500
3.2 +++ b/razor.h Thu Jan 10 23:42:42 2008 -0500
3.3 @@ -46,9 +46,8 @@
3.4 void razor_set_list_properties(struct razor_set *set, const char *name,
3.5 enum razor_property_type type);
3.6 void razor_set_list_property_packages(struct razor_set *set,
3.7 - const char *name,
3.8 - const char *version,
3.9 - enum razor_property_type type);
3.10 + struct razor_property *property);
3.11 +
3.12 void razor_set_list_files(struct razor_set *set, const char *prefix);
3.13 void razor_set_list_file_packages(struct razor_set *set, const char *filename);
3.14 void razor_set_list_package_files(struct razor_set *set, const char *name);