razor.c
changeset 99 7e5f2050db0e
parent 98 ec850cbd6935
child 100 27aada326858
     1.1 --- a/razor.c	Thu Jan 10 23:03:03 2008 -0500
     1.2 +++ b/razor.c	Thu Jan 10 23:30:51 2008 -0500
     1.3 @@ -1057,50 +1057,34 @@
     1.4  	free(pi);
     1.5  }
     1.6  
     1.7 -struct razor_property *
     1.8 -razor_set_get_property(struct razor_set *set, const char *property)
     1.9 +void
    1.10 +razor_set_list_property_packages(struct razor_set *set,
    1.11 +				 const char *ref_name,
    1.12 +				 const char *ref_version,
    1.13 +				 enum razor_property_type ref_type)
    1.14  {
    1.15 -	struct razor_property *p;
    1.16 +	struct razor_property *property;
    1.17  	struct razor_property_iterator *pi;
    1.18 -	const char *name, *version;
    1.19 +	struct razor_package *p, *packages;
    1.20 +	const char *name, *version, *pool;
    1.21  	enum razor_property_type type;
    1.22 +	unsigned long *r;
    1.23 +
    1.24 +	if (ref_name == NULL)
    1.25 +		return;
    1.26 +
    1.27 +	packages = set->packages.data;
    1.28 +	pool = set->string_pool.data;
    1.29  
    1.30  	pi = razor_property_iterator_create(set, NULL);
    1.31 -	while (razor_property_iterator_next(pi, &p, &name, &version, &type)) {
    1.32 -		if (strcmp(name, property) == 0)
    1.33 -			break;
    1.34 -	}
    1.35 -	razor_property_iterator_destroy(pi);
    1.36 -
    1.37 -	return p;
    1.38 -}
    1.39 -
    1.40 -
    1.41 -void
    1.42 -razor_set_list_property_packages(struct razor_set *set,
    1.43 -				 const char *name,
    1.44 -				 const char *version,
    1.45 -				 enum razor_property_type type)
    1.46 -{
    1.47 -	struct razor_property *property, *end;
    1.48 -	struct razor_package *p, *packages;
    1.49 -	unsigned long *r;
    1.50 -	char *pool;
    1.51 -
    1.52 -	if (name == NULL)
    1.53 -		return;
    1.54 -
    1.55 -	property = razor_set_get_property(set, name);
    1.56 -	packages = set->packages.data;
    1.57 -	pool = set->string_pool.data;
    1.58 -	end = set->properties.data + set->properties.size;
    1.59 -	while (property < end &&
    1.60 -	       strcmp(name, &pool[property->name & RAZOR_ENTRY_MASK]) == 0) {
    1.61 -		if (version &&
    1.62 -		    versioncmp(version, &pool[property->version]) != 0)
    1.63 -			goto next;
    1.64 -		if (type != (property->name >> 30))
    1.65 -			goto next;
    1.66 +	while (razor_property_iterator_next(pi, &property,
    1.67 +					    &name, &version, &type)) {
    1.68 +		if (strcmp(ref_name, name) != 0)
    1.69 +			continue;
    1.70 +		if (ref_version && versioncmp(ref_version, version) != 0)
    1.71 +			continue;
    1.72 +		if (ref_type != type)
    1.73 +			continue;
    1.74  		
    1.75  		if (property->packages & RAZOR_IMMEDIATE)
    1.76  			r = &property->packages;
    1.77 @@ -1115,9 +1099,8 @@
    1.78  			if (*r++ & RAZOR_IMMEDIATE)
    1.79  				break;
    1.80  		}
    1.81 -	next:
    1.82 -		property++;
    1.83  	}
    1.84 +	razor_property_iterator_destroy(pi);
    1.85  }
    1.86  
    1.87  static struct razor_entry *