# HG changeset patch # User Kristian H?gsberg # Date 1214012309 14400 # Node ID 338a577cdfd21f4ffc91e127caa6ea9c4b9f791e # Parent 3e696ec612a5de80ea77514bc6257239628a6ce6 Fix the razor_set_diff() callback prototype. The old proto type didn't let us pass the razor_package. diff -r 3e696ec612a5 -r 338a577cdfd2 librazor/razor.c --- a/librazor/razor.c Fri Jun 20 21:33:29 2008 -0400 +++ b/librazor/razor.c Fri Jun 20 21:38:29 2008 -0400 @@ -33,8 +33,8 @@ #include #include +#include "razor-internal.h" #include "razor.h" -#include "razor-internal.h" void * zalloc(size_t size) @@ -423,7 +423,7 @@ 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 @@ } 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 -r 3e696ec612a5 -r 338a577cdfd2 librazor/razor.h --- a/librazor/razor.h Fri Jun 20 21:33:29 2008 -0400 +++ b/librazor/razor.h Fri Jun 20 21:38:29 2008 -0400 @@ -106,14 +106,21 @@ 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 -r 3e696ec612a5 -r 338a577cdfd2 src/main.c --- a/src/main.c Fri Jun 20 21:33:29 2008 -0400 +++ b/src/main.c Fri Jun 20 21:38:29 2008 -0400 @@ -489,14 +489,17 @@ } 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 @@ } 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 @@ 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 @@ } 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 @@ 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 -r 3e696ec612a5 -r 338a577cdfd2 src/rpm.c --- a/src/rpm.c Fri Jun 20 21:33:29 2008 -0400 +++ b/src/rpm.c Fri Jun 20 21:38:29 2008 -0400 @@ -507,12 +507,17 @@ } 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 @@ 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 @@ } 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 @@ 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 @@ } 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;