}
static int
-command_what_requires(int argc, const char *argv[])
+list_property_packages(const char *ref_name,
+ const char *ref_version,
+ enum razor_property_type ref_type)
{
struct razor_set *set;
+ struct razor_property *property;
+ struct razor_property_iterator *pi;
+ const char *name, *version;
+ enum razor_property_type type;
+
+ if (ref_name == NULL)
+ return 0;
set = razor_set_open(repo_filename);
- razor_set_list_property_packages(set, argv[0], argv[1],
- RAZOR_PROPERTY_REQUIRES);
- razor_set_destroy(set);
+ if (set == NULL)
+ return 1;
+
+ pi = razor_property_iterator_create(set, NULL);
+ while (razor_property_iterator_next(pi, &property,
+ &name, &version, &type)) {
+ if (strcmp(ref_name, name) != 0)
+ continue;
+ if (ref_version && strcmp(ref_version, version) != 0)
+ continue;
+ if (ref_type != type)
+ continue;
+
+ razor_set_list_property_packages(set, property);
+ }
+ razor_property_iterator_destroy(pi);
return 0;
}
static int
-command_what_provides(int argc, const char *argv[])
+command_what_requires(int argc, const char *argv[])
{
- struct razor_set *set;
-
- set = razor_set_open(repo_filename);
- razor_set_list_property_packages(set, argv[0], argv[1],
- RAZOR_PROPERTY_PROVIDES);
- razor_set_destroy(set);
+ return list_property_packages(argv[0], argv[1],
+ RAZOR_PROPERTY_REQUIRES);
+}
- return 0;
+static int
+command_what_provides(int argc, const char *argv[])
+{
+ return list_property_packages(argv[0], argv[1],
+ RAZOR_PROPERTY_PROVIDES);
}
static int
return *p1 - *p2;
}
-
static int
compare_packages(const void *p1, const void *p2, void *data)
{
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 *property)
{
- struct razor_property *property;
- struct razor_property_iterator *pi;
struct razor_package *p, *packages;
- const char *name, *version, *pool;
- enum razor_property_type type;
+ const char *pool;
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, &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;
- else
- r = (unsigned long *)
- set->package_pool.data + property->packages;
- while (1) {
- p = &packages[*r & RAZOR_ENTRY_MASK];
- printf("%s-%s\n",
- &pool[p->name & RAZOR_ENTRY_MASK],
- &pool[p->version]);
- if (*r++ & RAZOR_IMMEDIATE)
- break;
- }
+ if (property->packages & RAZOR_IMMEDIATE)
+ r = &property->packages;
+ else
+ r = (unsigned long *)
+ set->package_pool.data + property->packages;
+ while (1) {
+ p = &packages[*r & RAZOR_ENTRY_MASK];
+ printf("%s-%s\n",
+ &pool[p->name & RAZOR_ENTRY_MASK],
+ &pool[p->version]);
+ if (*r++ & RAZOR_IMMEDIATE)
+ break;
}
- razor_property_iterator_destroy(pi);
}
static struct razor_entry *
void razor_set_list_properties(struct razor_set *set, const char *name,
enum razor_property_type type);
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);
+
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);