The old proto type didn't let us pass the razor_package.
#include <ctype.h>
#include <fnmatch.h>
-#include "razor.h"
#include "razor-internal.h"
+#include "razor.h"
void *
zalloc(size_t size)
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;
}
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,
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 */
}
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
}
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)
{
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);
}
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)
{
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);
}
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
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);
}
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;
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);
}
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;