# HG changeset patch # User Kristian H?gsberg # Date 1214846939 14400 # Node ID cd39544990862d9bd34a0448319c4ad7cb51ffb3 # Parent e10b4f060a9d7ad7e72fb19e4ed718320b8c7018 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. diff -r e10b4f060a9d -r cd3954499086 docs/razor-sections.txt --- a/docs/razor-sections.txt Mon Jun 30 13:26:55 2008 -0400 +++ b/docs/razor-sections.txt Mon Jun 30 13:28:59 2008 -0400 @@ -8,7 +8,6 @@ razor_set_write razor_set_open_details razor_set_open_files -razor_set_get_package razor_set_list_files razor_set_list_package_files razor_set_list_unsatisfied diff -r e10b4f060a9d -r cd3954499086 librazor/razor.c --- a/librazor/razor.c Mon Jun 30 13:26:55 2008 -0400 +++ b/librazor/razor.c Mon Jun 30 13:28:59 2008 -0400 @@ -383,26 +383,6 @@ return *p1 - *p2; } -RAZOR_EXPORT struct razor_package * -razor_set_get_package(struct razor_set *set, const char *package) -{ - struct razor_package_iterator *pi; - struct razor_package *p; - const char *name; - - assert (set != NULL); - assert (package != NULL); - - pi = razor_package_iterator_create(set); - while (razor_package_iterator_next(pi, &p, RAZOR_DETAIL_NAME, &name, NULL)) { - if (strcmp(package, name) == 0) - break; - } - razor_package_iterator_destroy(pi); - - return p; -} - static const char * razor_package_get_details_type(struct razor_set *set, struct razor_package *package, @@ -676,20 +656,15 @@ } RAZOR_EXPORT void -razor_set_list_package_files(struct razor_set *set, const char *name) +razor_set_list_package_files(struct razor_set *set, + struct razor_package *package) { - struct razor_package *package; struct list *r; uint32_t end; char buffer[512]; assert (set != NULL); - assert (name != NULL); - - package = razor_set_get_package(set, name); - /* TODO: we should return the error to the caller */ - if (!package) - return; + assert (package != NULL); r = list_first(&package->files, &set->file_pool); end = set->files.size / sizeof (struct razor_entry); diff -r e10b4f060a9d -r cd3954499086 librazor/razor.h --- a/librazor/razor.h Mon Jun 30 13:26:55 2008 -0400 +++ b/librazor/razor.h Mon Jun 30 13:28:59 2008 -0400 @@ -181,7 +181,8 @@ razor_property_iterator_destroy(struct razor_property_iterator *pi); void razor_set_list_files(struct razor_set *set, const char *prefix); -void razor_set_list_package_files(struct razor_set *set, const char *name); +void razor_set_list_package_files(struct razor_set *set, + struct razor_package *package); enum razor_diff_action { RAZOR_DIFF_ACTION_ADD, diff -r e10b4f060a9d -r cd3954499086 src/main.c --- a/src/main.c Mon Jun 30 13:26:55 2008 -0400 +++ b/src/main.c Mon Jun 30 13:28:59 2008 -0400 @@ -119,26 +119,15 @@ return 0; } -static int -list_properties(const char *package_name, uint32_t type) +static void +list_package_properties(struct razor_set *set, + struct razor_package *package, uint32_t type) { - struct razor_set *set; + struct razor_property_iterator *pi; struct razor_property *property; - struct razor_package *package; - struct razor_property_iterator *pi; const char *name, *version; uint32_t flags; - set = razor_set_open(repo_filename); - if (package_name) { - package = razor_set_get_package(set, package_name); - if (!package) { - fprintf(stderr, "no package named \"%s\"\n", package_name); - return 1; - } - } else - package = NULL; - pi = razor_property_iterator_create(set, package); while (razor_property_iterator_next(pi, &property, &name, &flags, &version)) { @@ -165,7 +154,22 @@ printf("\n"); } razor_property_iterator_destroy(pi); +} +static int +list_properties(int argc, const char *argv[], uint32_t type) +{ + struct razor_set *set; + struct razor_package *package; + struct razor_package_iterator *pi; + const char *name, *version, *arch; + + set = razor_set_open(repo_filename); + pi = create_iterator_from_argv(set, argc, argv); + while (razor_package_iterator_next(pi, &package, + &name, &version, &arch)) + list_package_properties(set, package, type); + razor_package_iterator_destroy(pi); razor_set_destroy(set); return 0; @@ -174,25 +178,25 @@ static int command_list_requires(int argc, const char *argv[]) { - return list_properties(argv[0], RAZOR_PROPERTY_REQUIRES); + return list_properties(argc, argv, RAZOR_PROPERTY_REQUIRES); } static int command_list_provides(int argc, const char *argv[]) { - return list_properties(argv[0], RAZOR_PROPERTY_PROVIDES); + return list_properties(argc, argv, RAZOR_PROPERTY_PROVIDES); } static int command_list_obsoletes(int argc, const char *argv[]) { - return list_properties(argv[0], RAZOR_PROPERTY_OBSOLETES); + return list_properties(argc, argv, RAZOR_PROPERTY_OBSOLETES); } static int command_list_conflicts(int argc, const char *argv[]) { - return list_properties(argv[0], RAZOR_PROPERTY_CONFLICTS); + return list_properties(argc, argv, RAZOR_PROPERTY_CONFLICTS); } static int @@ -237,6 +241,9 @@ command_list_package_files(int argc, const char *argv[]) { struct razor_set *set; + struct razor_package_iterator *pi; + struct razor_package *package; + const char *name, *version, *arch; set = razor_set_open(repo_filename); if (set == NULL) @@ -244,7 +251,12 @@ if (razor_set_open_files(set, "system-files.repo")) return 1; - razor_set_list_package_files(set, argv[0]); + pi = create_iterator_from_argv(set, argc, argv); + while (razor_package_iterator_next(pi, &package, + &name, &version, &arch)) + razor_set_list_package_files(set, package); + razor_package_iterator_destroy(pi); + razor_set_destroy(set); return 0; diff -r e10b4f060a9d -r cd3954499086 src/rpm.c --- a/src/rpm.c Mon Jun 30 13:26:55 2008 -0400 +++ b/src/rpm.c Mon Jun 30 13:28:59 2008 -0400 @@ -512,7 +512,7 @@ if (option_changelog) print_package_changelog(set, package); if (option_list) - razor_set_list_package_files(set, name); + razor_set_list_package_files(set, package); if (option_conflicts + option_obsoletes + option_requires + option_provides + diff -r e10b4f060a9d -r cd3954499086 src/test-driver.c --- a/src/test-driver.c Mon Jun 30 13:26:55 2008 -0400 +++ b/src/test-driver.c Mon Jun 30 13:28:59 2008 -0400 @@ -285,6 +285,23 @@ ctx->n_remove_pkgs = 0; } +static struct razor_package * +get_package(struct razor_set *set, const char *package) +{ + struct razor_package_iterator *pi; + struct razor_package *p; + const char *name, *version, *arch; + + pi = razor_package_iterator_create(set); + while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) { + if (strcmp(package, name) == 0) + break; + } + razor_package_iterator_destroy(pi); + + return p; +} + static void end_transaction(struct test_context *ctx) { @@ -293,16 +310,13 @@ ctx->trans = razor_transaction_create(ctx->system_set, ctx->repo_set); for (i = 0; i < ctx->n_install_pkgs; i++) { - pkg = razor_set_get_package(ctx->repo_set, - ctx->install_pkgs[i]); + pkg = get_package(ctx->repo_set, ctx->install_pkgs[i]); razor_transaction_install_package(ctx->trans, pkg); } for (i = 0; i < ctx->n_remove_pkgs; i++) { - pkg = razor_set_get_package(ctx->system_set, - ctx->remove_pkgs[i]); + pkg = get_package(ctx->system_set, ctx->remove_pkgs[i]); if (!pkg) - pkg = razor_set_get_package(ctx->repo_set, - ctx->remove_pkgs[i]); + pkg = get_package(ctx->repo_set, ctx->remove_pkgs[i]); razor_transaction_remove_package(ctx->trans, pkg); }