Move more front-end logic from razor_set_list_property_packages() to main.c.
authorKristian H?gsberg <krh@redhat.com>
Thu Jan 10 23:42:42 2008 -0500 (2008-01-10)
changeset 10027aada326858
parent 99 7e5f2050db0e
child 101 9708f6d5db8c
Move more front-end logic from razor_set_list_property_packages() to main.c.
main.c
razor.c
razor.h
     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);