diff options
author | Kristian Høgsberg <krh@redhat.com> | 2008-06-29 22:38:57 -0400 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2008-06-30 13:28:59 -0400 |
commit | 27e3b5098d6c01d978cb5d530ea98f5f4069b25d (patch) | |
tree | eb609d3c262f03518ff570dbc311dc3261941019 | |
parent | 2d4487425bcbca6b4f0f86aaa8e2f276ec54c0a5 (diff) |
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.
-rw-r--r-- | docs/razor-sections.txt | 1 | ||||
-rw-r--r-- | librazor/razor.c | 31 | ||||
-rw-r--r-- | librazor/razor.h | 3 | ||||
-rw-r--r-- | src/main.c | 52 | ||||
-rw-r--r-- | src/rpm.c | 2 | ||||
-rw-r--r-- | src/test-driver.c | 26 |
6 files changed, 58 insertions, 57 deletions
diff --git a/docs/razor-sections.txt b/docs/razor-sections.txt index 49c9fce..4ad84a9 100644 --- a/docs/razor-sections.txt +++ b/docs/razor-sections.txt @@ -8,7 +8,6 @@ razor_set_write_to_fd 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 --git a/librazor/razor.c b/librazor/razor.c index 6f5b1b5..d6f8331 100644 --- a/librazor/razor.c +++ b/librazor/razor.c @@ -383,26 +383,6 @@ razor_versioncmp(const char *s1, const char *s2) 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 @@ list_package_files(struct razor_set *set, struct list *r, } 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 --git a/librazor/razor.h b/librazor/razor.h index 488b4ed..096aa31 100644 --- a/librazor/razor.h +++ b/librazor/razor.h @@ -181,7 +181,8 @@ void 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, @@ -119,26 +119,15 @@ command_list(int argc, const char *argv[]) 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 *property; - struct razor_package *package; struct razor_property_iterator *pi; + struct razor_property *property; 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 @@ list_properties(const char *package_name, uint32_t type) 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 @@ list_properties(const char *package_name, uint32_t type) 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 @@ static int 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 @@ command_list_package_files(int argc, const char *argv[]) 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; @@ -512,7 +512,7 @@ command_query(int argc, const char *argv[]) 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 --git a/src/test-driver.c b/src/test-driver.c index 5223118..bd7aa17 100644 --- a/src/test-driver.c +++ b/src/test-driver.c @@ -285,6 +285,23 @@ start_transaction(struct test_context *ctx, const char **atts) 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 @@ end_transaction(struct test_context *ctx) 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); } |