Fix the razor_set_diff() callback prototype.
authorKristian Høgsberg <krh@redhat.com>
Sat, 21 Jun 2008 01:38:29 +0000 (21:38 -0400)
committerKristian Høgsberg <krh@redhat.com>
Sat, 21 Jun 2008 01:38:29 +0000 (21:38 -0400)
The old proto type didn't let us pass the razor_package.

librazor/razor.c
librazor/razor.h
src/main.c
src/rpm.c

index 210da4c..b27f49d 100644 (file)
@@ -33,8 +33,8 @@
 #include <ctype.h>
 #include <fnmatch.h>
 
-#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,
index 8e69f1d..dfe17d8 100644 (file)
@@ -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 */
 
index 4f09735..ec1820a 100644 (file)
@@ -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);
index 57714c3..e450bf1 100644 (file)
--- 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;