Use the package iterator for looping over file owners too.
authorKristian H?gsberg <krh@redhat.com>
Thu Jan 17 23:36:12 2008 -0500 (2008-01-17)
changeset 102337a7a55e2c6
parent 101 9708f6d5db8c
child 103 1d584c5af737
Use the package iterator for looping over file owners too.
main.c
razor.c
razor.h
     1.1 --- a/main.c	Thu Jan 17 23:28:37 2008 -0500
     1.2 +++ b/main.c	Thu Jan 17 23:36:12 2008 -0500
     1.3 @@ -112,11 +112,19 @@
     1.4  command_list_file_packages(int argc, const char *argv[])
     1.5  {
     1.6  	struct razor_set *set;
     1.7 +	struct razor_package_iterator *pi;
     1.8 +	struct razor_package *package;
     1.9 +	const char *name, *version;
    1.10  
    1.11  	set = razor_set_open(repo_filename);
    1.12  	if (set == NULL)
    1.13  		return 1;
    1.14 -	razor_set_list_file_packages(set, argv[0]);
    1.15 +
    1.16 +	pi = razor_package_iterator_create_for_file(set, argv[0]);
    1.17 +	while (razor_package_iterator_next(pi, &package, &name, &version))
    1.18 +		printf("%s-%s\n", name, version);
    1.19 +	razor_package_iterator_destroy(pi);
    1.20 +
    1.21  	razor_set_destroy(set);
    1.22  
    1.23  	return 0;
     2.1 --- a/razor.c	Thu Jan 17 23:28:37 2008 -0500
     2.2 +++ b/razor.c	Thu Jan 17 23:36:12 2008 -0500
     2.3 @@ -1161,31 +1161,24 @@
     2.4  		list_dir(set, e, buffer, base);
     2.5  }
     2.6  
     2.7 -void
     2.8 -razor_set_list_file_packages(struct razor_set *set, const char *filename)
     2.9 +struct razor_package_iterator *
    2.10 +razor_package_iterator_create_for_file(struct razor_set *set,
    2.11 +				       const char *filename)
    2.12  {
    2.13 -	struct razor_entry *e;
    2.14 -	struct razor_package *packages, *p;
    2.15 -	const char *pool;
    2.16 -	unsigned long *r;
    2.17 +	struct razor_entry *entry;
    2.18 +	unsigned long *index;
    2.19  
    2.20 -	e = find_entry(set, set->files.data, filename);
    2.21 -	if (e == NULL)
    2.22 -		return;
    2.23 +	entry = find_entry(set, set->files.data, filename);
    2.24 +	if (entry == NULL)
    2.25 +		return NULL;
    2.26  	
    2.27 -	if (e->packages & RAZOR_IMMEDIATE)
    2.28 -		r = &e->packages;
    2.29 +	if (entry->packages & RAZOR_IMMEDIATE)
    2.30 +		index = &entry->packages;
    2.31  	else
    2.32 -		r = (unsigned long *) set->package_pool.data + e->packages;
    2.33 +		index = (unsigned long *)
    2.34 +			set->package_pool.data + entry->packages;
    2.35  
    2.36 -	packages = set->packages.data;
    2.37 -	pool = set->string_pool.data;
    2.38 -	while (1) {
    2.39 -		p = &packages[*r & RAZOR_ENTRY_MASK];
    2.40 -		printf("%s-%s\n", &pool[p->name], &pool[p->version]);
    2.41 -		if (*r++ & RAZOR_IMMEDIATE)
    2.42 -			break;
    2.43 -	}
    2.44 +	return razor_package_iterator_create_with_index(set, index);
    2.45  }
    2.46  
    2.47  static unsigned long *
     3.1 --- a/razor.h	Thu Jan 17 23:28:37 2008 -0500
     3.2 +++ b/razor.h	Thu Jan 17 23:36:12 2008 -0500
     3.3 @@ -28,6 +28,9 @@
     3.4  struct razor_package_iterator *
     3.5  razor_package_iterator_create_for_property(struct razor_set *set,
     3.6  					   struct razor_property *property);
     3.7 +struct razor_package_iterator *
     3.8 +razor_package_iterator_create_for_file(struct razor_set *set,
     3.9 +				       const char *filename);
    3.10  
    3.11  int razor_package_iterator_next(struct razor_package_iterator *pi,
    3.12  				struct razor_package **package,
    3.13 @@ -46,7 +49,6 @@
    3.14  razor_property_iterator_destroy(struct razor_property_iterator *pi);
    3.15  
    3.16  void razor_set_list_files(struct razor_set *set, const char *prefix);
    3.17 -void razor_set_list_file_packages(struct razor_set *set, const char *filename);
    3.18  void razor_set_list_package_files(struct razor_set *set, const char *name);
    3.19  
    3.20  void razor_set_list_unsatisfied(struct razor_set *set);