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.
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 }