Get rid of razor_set_get_package().
authorKristian H?gsberg <krh@redhat.com>
Mon Jun 30 13:28:59 2008 -0400 (2008-06-30)
changeset 306cd3954499086
parent 305 e10b4f060a9d
child 307 95b6bcadd6c4
Get rid of razor_set_get_package().

This was always a silly little helper function, not general enough for
real world applications. Use an iterator to search through the set to
find the package of interest.
docs/razor-sections.txt
librazor/razor.c
librazor/razor.h
src/main.c
src/rpm.c
src/test-driver.c
     1.1 --- a/docs/razor-sections.txt	Mon Jun 30 13:26:55 2008 -0400
     1.2 +++ b/docs/razor-sections.txt	Mon Jun 30 13:28:59 2008 -0400
     1.3 @@ -8,7 +8,6 @@
     1.4  razor_set_write
     1.5  razor_set_open_details
     1.6  razor_set_open_files
     1.7 -razor_set_get_package
     1.8  razor_set_list_files
     1.9  razor_set_list_package_files
    1.10  razor_set_list_unsatisfied
     2.1 --- a/librazor/razor.c	Mon Jun 30 13:26:55 2008 -0400
     2.2 +++ b/librazor/razor.c	Mon Jun 30 13:28:59 2008 -0400
     2.3 @@ -383,26 +383,6 @@
     2.4  	return *p1 - *p2;
     2.5  }
     2.6  
     2.7 -RAZOR_EXPORT struct razor_package *
     2.8 -razor_set_get_package(struct razor_set *set, const char *package)
     2.9 -{
    2.10 -	struct razor_package_iterator *pi;
    2.11 -	struct razor_package *p;
    2.12 -	const char *name;
    2.13 -
    2.14 -	assert (set != NULL);
    2.15 -	assert (package != NULL);
    2.16 -
    2.17 -	pi = razor_package_iterator_create(set);
    2.18 -	while (razor_package_iterator_next(pi, &p, RAZOR_DETAIL_NAME, &name, NULL)) {
    2.19 -		if (strcmp(package, name) == 0)
    2.20 -			break;
    2.21 -	}
    2.22 -	razor_package_iterator_destroy(pi);
    2.23 -
    2.24 -	return p;
    2.25 -}
    2.26 -
    2.27  static const char *
    2.28  razor_package_get_details_type(struct razor_set *set,
    2.29  			       struct razor_package *package,
    2.30 @@ -676,20 +656,15 @@
    2.31  }
    2.32  
    2.33  RAZOR_EXPORT void
    2.34 -razor_set_list_package_files(struct razor_set *set, const char *name)
    2.35 +razor_set_list_package_files(struct razor_set *set,
    2.36 +			     struct razor_package *package)
    2.37  {
    2.38 -	struct razor_package *package;
    2.39  	struct list *r;
    2.40  	uint32_t end;
    2.41  	char buffer[512];
    2.42  
    2.43  	assert (set != NULL);
    2.44 -	assert (name != NULL);
    2.45 -
    2.46 -	package = razor_set_get_package(set, name);
    2.47 -	/* TODO: we should return the error to the caller */
    2.48 -	if (!package)
    2.49 -		return;
    2.50 +	assert (package != NULL);
    2.51  
    2.52  	r = list_first(&package->files, &set->file_pool);
    2.53  	end = set->files.size / sizeof (struct razor_entry);
     3.1 --- a/librazor/razor.h	Mon Jun 30 13:26:55 2008 -0400
     3.2 +++ b/librazor/razor.h	Mon Jun 30 13:28:59 2008 -0400
     3.3 @@ -181,7 +181,8 @@
     3.4  razor_property_iterator_destroy(struct razor_property_iterator *pi);
     3.5  
     3.6  void razor_set_list_files(struct razor_set *set, const char *prefix);
     3.7 -void razor_set_list_package_files(struct razor_set *set, const char *name);
     3.8 +void razor_set_list_package_files(struct razor_set *set,
     3.9 +				  struct razor_package *package);
    3.10  
    3.11  enum razor_diff_action {
    3.12  	RAZOR_DIFF_ACTION_ADD,
     4.1 --- a/src/main.c	Mon Jun 30 13:26:55 2008 -0400
     4.2 +++ b/src/main.c	Mon Jun 30 13:28:59 2008 -0400
     4.3 @@ -119,26 +119,15 @@
     4.4  	return 0;
     4.5  }
     4.6  
     4.7 -static int
     4.8 -list_properties(const char *package_name, uint32_t type)
     4.9 +static void
    4.10 +list_package_properties(struct razor_set *set,
    4.11 +			struct razor_package *package, uint32_t type)
    4.12  {
    4.13 -	struct razor_set *set;
    4.14 +	struct razor_property_iterator *pi;
    4.15  	struct razor_property *property;
    4.16 -	struct razor_package *package;
    4.17 -	struct razor_property_iterator *pi;
    4.18  	const char *name, *version;
    4.19  	uint32_t flags;
    4.20  
    4.21 -	set = razor_set_open(repo_filename);
    4.22 -	if (package_name) {
    4.23 -		package = razor_set_get_package(set, package_name);
    4.24 -		if (!package) {
    4.25 -			fprintf(stderr, "no package named \"%s\"\n", package_name);
    4.26 -			return 1;
    4.27 -		}
    4.28 -	} else
    4.29 -		package = NULL;
    4.30 -
    4.31  	pi = razor_property_iterator_create(set, package);
    4.32  	while (razor_property_iterator_next(pi, &property,
    4.33  					    &name, &flags, &version)) {
    4.34 @@ -165,7 +154,22 @@
    4.35  		printf("\n");
    4.36  	}
    4.37  	razor_property_iterator_destroy(pi);
    4.38 +}
    4.39  
    4.40 +static int
    4.41 +list_properties(int argc, const char *argv[], uint32_t type)
    4.42 +{
    4.43 +	struct razor_set *set;
    4.44 +	struct razor_package *package;
    4.45 +	struct razor_package_iterator *pi;
    4.46 +	const char *name, *version, *arch;
    4.47 +
    4.48 +	set = razor_set_open(repo_filename);
    4.49 +	pi = create_iterator_from_argv(set, argc, argv);
    4.50 +	while (razor_package_iterator_next(pi, &package,
    4.51 +					   &name, &version, &arch))
    4.52 +		list_package_properties(set, package, type);
    4.53 +	razor_package_iterator_destroy(pi);
    4.54  	razor_set_destroy(set);
    4.55  
    4.56  	return 0;
    4.57 @@ -174,25 +178,25 @@
    4.58  static int
    4.59  command_list_requires(int argc, const char *argv[])
    4.60  {
    4.61 -	return list_properties(argv[0], RAZOR_PROPERTY_REQUIRES);
    4.62 +	return list_properties(argc, argv, RAZOR_PROPERTY_REQUIRES);
    4.63  }
    4.64  
    4.65  static int
    4.66  command_list_provides(int argc, const char *argv[])
    4.67  {
    4.68 -	return list_properties(argv[0], RAZOR_PROPERTY_PROVIDES);
    4.69 +	return list_properties(argc, argv, RAZOR_PROPERTY_PROVIDES);
    4.70  }
    4.71  
    4.72  static int
    4.73  command_list_obsoletes(int argc, const char *argv[])
    4.74  {
    4.75 -	return list_properties(argv[0], RAZOR_PROPERTY_OBSOLETES);
    4.76 +	return list_properties(argc, argv, RAZOR_PROPERTY_OBSOLETES);
    4.77  }
    4.78  
    4.79  static int
    4.80  command_list_conflicts(int argc, const char *argv[])
    4.81  {
    4.82 -	return list_properties(argv[0], RAZOR_PROPERTY_CONFLICTS);
    4.83 +	return list_properties(argc, argv, RAZOR_PROPERTY_CONFLICTS);
    4.84  }
    4.85  
    4.86  static int
    4.87 @@ -237,6 +241,9 @@
    4.88  command_list_package_files(int argc, const char *argv[])
    4.89  {
    4.90  	struct razor_set *set;
    4.91 +	struct razor_package_iterator *pi;
    4.92 +	struct razor_package *package;
    4.93 +	const char *name, *version, *arch;
    4.94  
    4.95  	set = razor_set_open(repo_filename);
    4.96  	if (set == NULL)
    4.97 @@ -244,7 +251,12 @@
    4.98  	if (razor_set_open_files(set, "system-files.repo"))
    4.99  		return 1;
   4.100  
   4.101 -	razor_set_list_package_files(set, argv[0]);
   4.102 +	pi = create_iterator_from_argv(set, argc, argv);
   4.103 +	while (razor_package_iterator_next(pi, &package,
   4.104 +					   &name, &version, &arch))
   4.105 +		razor_set_list_package_files(set, package);
   4.106 +	razor_package_iterator_destroy(pi);
   4.107 +
   4.108  	razor_set_destroy(set);
   4.109  
   4.110  	return 0;
     5.1 --- a/src/rpm.c	Mon Jun 30 13:26:55 2008 -0400
     5.2 +++ b/src/rpm.c	Mon Jun 30 13:28:59 2008 -0400
     5.3 @@ -512,7 +512,7 @@
     5.4  		if (option_changelog)
     5.5  			print_package_changelog(set, package);
     5.6  		if (option_list)
     5.7 -			razor_set_list_package_files(set, name);
     5.8 +			razor_set_list_package_files(set, package);
     5.9  
    5.10  		if (option_conflicts + option_obsoletes +
    5.11  		    option_requires + option_provides +
     6.1 --- a/src/test-driver.c	Mon Jun 30 13:26:55 2008 -0400
     6.2 +++ b/src/test-driver.c	Mon Jun 30 13:28:59 2008 -0400
     6.3 @@ -285,6 +285,23 @@
     6.4  	ctx->n_remove_pkgs = 0;
     6.5  }
     6.6  
     6.7 +static struct razor_package *
     6.8 +get_package(struct razor_set *set, const char *package)
     6.9 +{
    6.10 +	struct razor_package_iterator *pi;
    6.11 +	struct razor_package *p;
    6.12 +	const char *name, *version, *arch;
    6.13 +
    6.14 +	pi = razor_package_iterator_create(set);
    6.15 +	while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
    6.16 +		if (strcmp(package, name) == 0)
    6.17 +			break;
    6.18 +	}
    6.19 +	razor_package_iterator_destroy(pi);
    6.20 +
    6.21 +	return p;
    6.22 +}
    6.23 +
    6.24  static void
    6.25  end_transaction(struct test_context *ctx)
    6.26  {
    6.27 @@ -293,16 +310,13 @@
    6.28  
    6.29  	ctx->trans = razor_transaction_create(ctx->system_set, ctx->repo_set);
    6.30  	for (i = 0; i < ctx->n_install_pkgs; i++) {
    6.31 -		pkg = razor_set_get_package(ctx->repo_set,
    6.32 -					    ctx->install_pkgs[i]);
    6.33 +		pkg = get_package(ctx->repo_set, ctx->install_pkgs[i]);
    6.34  		razor_transaction_install_package(ctx->trans, pkg);
    6.35  	}
    6.36  	for (i = 0; i < ctx->n_remove_pkgs; i++) {
    6.37 -		pkg = razor_set_get_package(ctx->system_set,
    6.38 -					    ctx->remove_pkgs[i]);
    6.39 +		pkg = get_package(ctx->system_set, ctx->remove_pkgs[i]);
    6.40  		if (!pkg)
    6.41 -			pkg = razor_set_get_package(ctx->repo_set,
    6.42 -						    ctx->remove_pkgs[i]);
    6.43 +			pkg = get_package(ctx->repo_set, ctx->remove_pkgs[i]);
    6.44  
    6.45  		razor_transaction_remove_package(ctx->trans, pkg);
    6.46  	}