From: Kristian Høgsberg Date: Sat, 21 Jun 2008 01:38:29 +0000 (-0400) Subject: Fix the razor_set_diff() callback prototype. X-Git-Tag: 0.1~118 X-Git-Url: http://project.juiblex.co.uk/git/?a=commitdiff_plain;h=4d070f05b5e5616c238302e0e49877e7bff2c2fe;p=razor2.git%2F.git Fix the razor_set_diff() callback prototype. The old proto type didn't let us pass the razor_package. --- diff --git a/librazor/razor.c b/librazor/razor.c index 210da4c..b27f49d 100644 --- a/librazor/razor.c +++ b/librazor/razor.c @@ -33,8 +33,8 @@ #include #include -#include "razor.h" #include "razor-internal.h" +#include "razor.h" void * zalloc(size_t size) @@ -423,7 +423,7 @@ razor_set_list_package_files(struct razor_set *set, const char *name) void razor_set_diff(struct razor_set *set, struct razor_set *upstream, - razor_package_callback_t callback, void *data) + razor_diff_callback_t callback, void *data) { struct razor_package_iterator *pi1, *pi2; struct razor_package *p1, *p2; @@ -446,9 +446,11 @@ razor_set_diff(struct razor_set *set, struct razor_set *upstream, } if (p2 == NULL || res < 0) - callback(name1, version1, NULL, arch1, data); + callback(RAZOR_DIFF_ACTION_REMOVE, + p1, name1, version1, arch1, data); else if (p1 == NULL || res > 0) - callback(name2, NULL, version2, arch2, data); + callback(RAZOR_DIFF_ACTION_ADD, + p2, name2, version2, arch2, data); if (p1 != NULL && res <= 0) razor_package_iterator_next(pi1, &p1, diff --git a/librazor/razor.h b/librazor/razor.h index 8e69f1d..dfe17d8 100644 --- a/librazor/razor.h +++ b/librazor/razor.h @@ -106,14 +106,21 @@ void razor_set_list_package_files(struct razor_set *set, const char *name); void razor_set_list_unsatisfied(struct razor_set *set); -typedef void (*razor_package_callback_t)(const char *name, - const char *old_version, - const char *new_version, - const char *arch, - void *data); +enum razor_diff_action { + RAZOR_DIFF_ACTION_ADD, + RAZOR_DIFF_ACTION_REMOVE, +}; + +typedef void (*razor_diff_callback_t)(enum razor_diff_action action, + struct razor_package *package, + const char *name, + const char *version, + const char *arch, + void *data); + void razor_set_diff(struct razor_set *set, struct razor_set *upstream, - razor_package_callback_t callback, void *data); + razor_diff_callback_t callback, void *data); /* Package transactions */ diff --git a/src/main.c b/src/main.c index 4f09735..ec1820a 100644 --- a/src/main.c +++ b/src/main.c @@ -489,14 +489,17 @@ command_remove(int argc, const char *argv[]) } static void -print_diff(const char *name, - const char *old_version, const char *new_version, const char *arch, +print_diff(enum razor_diff_action action, + struct razor_package *package, + const char *name, + const char *version, + const char *arch, void *data) { - if (old_version) - printf("removing %s %s\n", name, old_version); - else - printf("install %s %s\n", name, new_version); + if (action == RAZOR_DIFF_ACTION_ADD) + printf("install %s-%s.%s\n", name, version, arch); + if (action == RAZOR_DIFF_ACTION_REMOVE) + printf("remove %s-%s.%s\n", name, version, arch); } static int @@ -576,9 +579,10 @@ command_import_rpms(int argc, const char *argv[]) } static void -download_package(const char *name, - const char *old_version, - const char *new_version, +download_package(enum razor_diff_action action, + struct razor_package *package, + const char *name, + const char *version, const char *arch, void *data) { @@ -586,15 +590,15 @@ download_package(const char *name, const char *v; int *errors = data; - if (old_version) + if (action != RAZOR_DIFF_ACTION_ADD) return; /* Skip epoch */ - v = strchr(new_version, ':'); + v = strchr(version, ':'); if (v != NULL) v = v + 1; else - v = new_version; + v = version; snprintf(url, sizeof url, "%s/Packages/%s-%s.%s.rpm", yum_url, name, v, arch); @@ -605,9 +609,10 @@ download_package(const char *name, } static void -install_package(const char *name, - const char *old_version, - const char *new_version, +install_package(enum razor_diff_action action, + struct razor_package *package, + const char *name, + const char *version, const char *arch, void *data) { @@ -615,17 +620,17 @@ install_package(const char *name, char file[PATH_MAX]; struct razor_rpm *rpm; - if (old_version) { - printf("removing %s %s not handled\n", name, old_version); + if (action == RAZOR_DIFF_ACTION_REMOVE) { + printf("removing %s %s not handled\n", name, version); return; } /* Skip epoch */ - v = strchr(new_version, ':'); + v = strchr(version, ':'); if (v != NULL) v = v + 1; else - v = new_version; + v = version; printf("install %s %s\n", name, v); snprintf(file, sizeof file, "rpms/%s-%s.%s.rpm", name, v, arch); diff --git a/src/rpm.c b/src/rpm.c index 57714c3..e450bf1 100644 --- a/src/rpm.c +++ b/src/rpm.c @@ -507,12 +507,17 @@ command_verify(int argc, const char *argv[]) } static void -remove_package(const char *name, - const char *old_version, const char *new_version, - const char *arch, void *data) +update_package(enum razor_diff_action action, + struct razor_package *package, + const char *name, + const char *version, + const char *arch, + void *data) { - if (old_version) - printf("remove %s-%s.%s\n", name, old_version, arch); + if (action == RAZOR_DIFF_ACTION_ADD) + printf("install %s-%s.%s\n", name, version, arch); + if (action == RAZOR_DIFF_ACTION_REMOVE) + printf("remove %s-%s.%s\n", name, version, arch); } static void @@ -555,7 +560,7 @@ command_erase(int argc, const char *argv[]) next = razor_transaction_finish(trans); if (!option_justdb) - razor_set_diff(set, next, remove_package, NULL); + razor_set_diff(set, next, update_package, NULL); razor_set_destroy(set); razor_set_destroy(upstream); @@ -564,15 +569,6 @@ command_erase(int argc, const char *argv[]) } static void -install_package(const char *name, - const char *old_version, const char *new_version, - const char *arch, void *data) -{ - if (new_version) - printf("install %s-%s.%s\n", name, new_version, arch); -} - -static void command_install(int argc, const char *argv[]) { struct razor_set *set, *upstream, *next; @@ -608,7 +604,7 @@ command_install(int argc, const char *argv[]) next = razor_transaction_finish(trans); if (!option_justdb) - razor_set_diff(set, next, install_package, NULL); + razor_set_diff(set, next, update_package, NULL); razor_set_destroy(set); razor_set_destroy(upstream); @@ -617,17 +613,6 @@ command_install(int argc, const char *argv[]) } static void -update_package(const char *name, - const char *old_version, const char *new_version, - const char *arch, void *data) -{ - if (old_version) - printf("remove %s-%s.%s\n", name, old_version, arch); - if (new_version) - printf("install %s-%s.%s\n", name, new_version, arch); -} - -static void command_update(int argc, const char *argv[]) { struct razor_set *set, *upstream, *next;