razor.c
changeset 20 0aa6cf605ea0
parent 19 d2a716dd92bd
child 21 cfbf73037a39
     1.1 --- a/razor.c	Wed Sep 12 05:31:07 2007 -0400
     1.2 +++ b/razor.c	Wed Sep 12 06:52:26 2007 -0400
     1.3 @@ -1017,7 +1017,8 @@
     1.4  void
     1.5  razor_set_list_property_packages(struct razor_set *set,
     1.6  				 struct array *properties,
     1.7 -				 const char *name)
     1.8 +				 const char *name,
     1.9 +				 const char *version)
    1.10  {
    1.11  	struct razor_property *property, *end;
    1.12  	struct razor_package *p, *packages;
    1.13 @@ -1032,6 +1033,8 @@
    1.14  	pool = set->string_pool.data;
    1.15  	end = properties->data + properties->size;
    1.16  	while (property < end && strcmp(name, &pool[property->name]) == 0) {
    1.17 +		if (version && strcmp(version, &pool[property->version]) != 0)
    1.18 +			goto next;
    1.19  		r = (unsigned long *)
    1.20  			set->property_pool.data + property->packages;
    1.21  		while (~*r) {
    1.22 @@ -1039,6 +1042,7 @@
    1.23  			printf("%s %s\n",
    1.24  			       &pool[p->name], &pool[p->version]);
    1.25  		}
    1.26 +	next:
    1.27  		property++;
    1.28  	}
    1.29  }
    1.30 @@ -1149,11 +1153,13 @@
    1.31  		razor_set_destroy(set);
    1.32  	} else if (strcmp(argv[1], "what-requires") == 0) {
    1.33  		set = razor_set_open(repo_filename);
    1.34 -		razor_set_list_property_packages(set, &set->requires, argv[2]);
    1.35 +		razor_set_list_property_packages(set, &set->requires,
    1.36 +						 argv[2], argv[3]);
    1.37  		razor_set_destroy(set);
    1.38  	} else if (strcmp(argv[1], "what-provides") == 0) {
    1.39  		set = razor_set_open(repo_filename);
    1.40 -		razor_set_list_property_packages(set, &set->provides, argv[2]);
    1.41 +		razor_set_list_property_packages(set, &set->provides,
    1.42 +						 argv[2], argv[3]);
    1.43  		razor_set_destroy(set);
    1.44  	} else if (strcmp(argv[1], "info") == 0) {
    1.45  		set = razor_set_open(repo_filename);