convert razor_package_get_details() and razor_package_iterator_next() to varargs
The functions for getting package details about a package were limited to a few
things, when in the future we will want to support much more about a package.
The iterator was also limited to name,version,arch when most of the time we
didn't need all this data.
1.1 --- a/librazor/iterator.c Sun Jun 29 17:32:19 2008 +0100
1.2 +++ b/librazor/iterator.c Mon Jun 30 08:51:26 2008 +0100
1.3 @@ -19,6 +19,7 @@
1.4
1.5 #define _GNU_SOURCE
1.6
1.7 +#include <stdarg.h>
1.8 #include <string.h>
1.9 #include <assert.h>
1.10
1.11 @@ -105,14 +106,21 @@
1.12 return razor_package_iterator_create_with_index(set, index);
1.13 }
1.14
1.15 +/**
1.16 + * razor_package_iterator_next:
1.17 + * @pi: a %razor_package_iterator
1.18 + * @package: a %razor_package
1.19 + *
1.20 + * Gets the next iteratr along with any vararg data.
1.21 + * The vararg must be terminated with zero.
1.22 + *
1.23 + * Example: razor_package_iterator_next (pi, package, RAZOR_DETAIL_NAME, &name, 0);
1.24 + **/
1.25 RAZOR_EXPORT int
1.26 razor_package_iterator_next(struct razor_package_iterator *pi,
1.27 - struct razor_package **package,
1.28 - const char **name,
1.29 - const char **version,
1.30 - const char **arch)
1.31 + struct razor_package **package, ...)
1.32 {
1.33 - char *pool;
1.34 + va_list args;
1.35 int valid;
1.36 struct razor_package *p, *packages;
1.37
1.38 @@ -129,16 +137,17 @@
1.39 } else
1.40 valid = 0;
1.41
1.42 - if (valid) {
1.43 - pool = pi->set->string_pool.data;
1.44 - *package = p;
1.45 - *name = &pool[p->name];
1.46 - *version = &pool[p->version];
1.47 - *arch = &pool[p->arch];
1.48 - } else {
1.49 + if (valid == 0) {
1.50 *package = NULL;
1.51 + goto out;
1.52 }
1.53
1.54 + *package = p;
1.55 +
1.56 + va_start(args, NULL);
1.57 + razor_package_get_details_varg (pi->set, p, args);
1.58 + va_end (args);
1.59 +out:
1.60 return valid;
1.61 }
1.62
1.63 @@ -260,13 +269,12 @@
1.64 struct razor_package_iterator *pi)
1.65 {
1.66 struct razor_package *packages, *p;
1.67 - const char *name, *version, *arch;
1.68
1.69 assert (pq != NULL);
1.70 assert (pi != NULL);
1.71
1.72 packages = pq->set->packages.data;
1.73 - while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
1.74 + while (razor_package_iterator_next(pi, &p, 0)) {
1.75 pq->count += pq->vector[p - packages] ^ 1;
1.76 pq->vector[p - packages] = 1;
1.77 }
2.1 --- a/librazor/razor-internal.h Sun Jun 29 17:32:19 2008 +0100
2.2 +++ b/librazor/razor-internal.h Mon Jun 30 08:51:26 2008 +0100
2.3 @@ -22,6 +22,9 @@
2.4
2.5 #include <stdlib.h>
2.6 #include <stdint.h>
2.7 +#include <stdarg.h>
2.8 +
2.9 +#include "razor.h"
2.10
2.11 /* GCC visibility */
2.12 #if defined(__GNUC__) && __GNUC__ >= 4
2.13 @@ -207,6 +210,11 @@
2.14
2.15 /* Utility functions */
2.16
2.17 +void
2.18 +razor_package_get_details_varg(struct razor_set *set,
2.19 + struct razor_package *package,
2.20 + va_list args);
2.21 +
2.22 int razor_create_dir(const char *root, const char *path);
2.23 int razor_write(int fd, const void *data, size_t size);
2.24
3.1 --- a/librazor/razor.c Sun Jun 29 17:32:19 2008 +0100
3.2 +++ b/librazor/razor.c Mon Jun 30 08:51:26 2008 +0100
3.3 @@ -23,6 +23,7 @@
3.4 #include <stddef.h>
3.5 #include <stdint.h>
3.6 #include <stdio.h>
3.7 +#include <stdarg.h>
3.8 #include <string.h>
3.9 #include <sys/types.h>
3.10 #include <sys/stat.h>
3.11 @@ -387,13 +388,13 @@
3.12 {
3.13 struct razor_package_iterator *pi;
3.14 struct razor_package *p;
3.15 - const char *name, *version, *arch;
3.16 + const char *name;
3.17
3.18 assert (set != NULL);
3.19 assert (package != NULL);
3.20
3.21 pi = razor_package_iterator_create(set);
3.22 - while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
3.23 + while (razor_package_iterator_next(pi, &p, RAZOR_DETAIL_NAME, &name, 0)) {
3.24 if (strcmp(package, name) == 0)
3.25 break;
3.26 }
3.27 @@ -402,25 +403,94 @@
3.28 return p;
3.29 }
3.30
3.31 +static const char *
3.32 +razor_package_get_details_type(struct razor_set *set,
3.33 + struct razor_package *package,
3.34 + enum razor_detail_type type)
3.35 +{
3.36 + const char *pool;
3.37 +
3.38 + switch (type) {
3.39 + case RAZOR_DETAIL_NAME:
3.40 + pool = set->string_pool.data;
3.41 + return &pool[package->name];
3.42 +
3.43 + case RAZOR_DETAIL_VERSION:
3.44 + pool = set->string_pool.data;
3.45 + return &pool[package->version];
3.46 +
3.47 + case RAZOR_DETAIL_ARCH:
3.48 + pool = set->string_pool.data;
3.49 + return &pool[package->arch];
3.50 +
3.51 + case RAZOR_DETAIL_SUMMARY:
3.52 + pool = set->details_string_pool.data;
3.53 + return &pool[package->summary];
3.54 +
3.55 + case RAZOR_DETAIL_DESCRIPTION:
3.56 + pool = set->details_string_pool.data;
3.57 + return &pool[package->description];
3.58 +
3.59 + case RAZOR_DETAIL_URL:
3.60 + pool = set->details_string_pool.data;
3.61 + return &pool[package->url];
3.62 +
3.63 + case RAZOR_DETAIL_LICENSE:
3.64 + pool = set->details_string_pool.data;
3.65 + return &pool[package->license];
3.66 +
3.67 + default:
3.68 + fprintf(stderr, "type %u not found\n", type);
3.69 + return NULL;
3.70 + }
3.71 +}
3.72 +
3.73 +/**
3.74 + * razor_package_get_details_varg:
3.75 + * @set: a %razor_set
3.76 + * @package: a %razor_package
3.77 + * @args: a va_list of arguments to set
3.78 + **/
3.79 +void
3.80 +razor_package_get_details_varg(struct razor_set *set,
3.81 + struct razor_package *package,
3.82 + va_list args)
3.83 +{
3.84 + int i;
3.85 + enum razor_detail_type type;
3.86 + const char **data;
3.87 +
3.88 + for (i = 0;; i += 2) {
3.89 + type = va_arg(args, enum razor_detail_type);
3.90 + if (type == 0)
3.91 + break;
3.92 + data = va_arg(args, const char **);
3.93 + *data = razor_package_get_details_type(set, package, type);
3.94 + }
3.95 +
3.96 +}
3.97 +
3.98 +/**
3.99 + * razor_package_get_details:
3.100 + * @set: a %razor_set
3.101 + * @package: a %razor_package
3.102 + *
3.103 + * Gets details about a package using a varg interface
3.104 + * The vararg must be terminated with zero.
3.105 + *
3.106 + * Example: razor_package_get_details (set, package, RAZOR_DETAIL_URL, &url, 0);
3.107 + **/
3.108 RAZOR_EXPORT void
3.109 -razor_package_get_details(struct razor_set *set,
3.110 - struct razor_package *package,
3.111 - const char **summary, const char **description,
3.112 - const char **url, const char **license)
3.113 +razor_package_get_details(struct razor_set *set, struct razor_package *package, ...)
3.114 {
3.115 - const char *pool = set->details_string_pool.data;
3.116 + va_list args;
3.117
3.118 assert (set != NULL);
3.119 assert (package != NULL);
3.120
3.121 - if (summary != NULL)
3.122 - *summary = &pool[package->summary];
3.123 - if (description != NULL)
3.124 - *description = &pool[package->description];
3.125 - if (url != NULL)
3.126 - *url = &pool[package->url];
3.127 - if (license != NULL)
3.128 - *license = &pool[package->license];
3.129 + va_start(args, NULL);
3.130 + razor_package_get_details_varg (set, package, args);
3.131 + va_end (args);
3.132 }
3.133
3.134 RAZOR_EXPORT const char *
3.135 @@ -647,8 +717,16 @@
3.136 pi1 = razor_package_iterator_create(set);
3.137 pi2 = razor_package_iterator_create(upstream);
3.138
3.139 - razor_package_iterator_next(pi1, &p1, &name1, &version1, &arch1);
3.140 - razor_package_iterator_next(pi2, &p2, &name2, &version2, &arch2);
3.141 + razor_package_iterator_next(pi1, &p1,
3.142 + RAZOR_DETAIL_NAME, &name1,
3.143 + RAZOR_DETAIL_VERSION, &version1,
3.144 + RAZOR_DETAIL_ARCH, &arch1,
3.145 + 0);
3.146 + razor_package_iterator_next(pi2, &p2,
3.147 + RAZOR_DETAIL_NAME, &name2,
3.148 + RAZOR_DETAIL_VERSION, &version2,
3.149 + RAZOR_DETAIL_ARCH, &arch2,
3.150 + 0);
3.151
3.152 while (p1 || p2) {
3.153 if (p1 && p2) {
3.154 @@ -668,10 +746,16 @@
3.155
3.156 if (p1 != NULL && res <= 0)
3.157 razor_package_iterator_next(pi1, &p1,
3.158 - &name1, &version1, &arch1);
3.159 + RAZOR_DETAIL_NAME, &name1,
3.160 + RAZOR_DETAIL_VERSION, &version1,
3.161 + RAZOR_DETAIL_ARCH, &arch1,
3.162 + 0);
3.163 if (p2 != NULL && res >= 0)
3.164 razor_package_iterator_next(pi2, &p2,
3.165 - &name2, &version2, &arch2);
3.166 + RAZOR_DETAIL_NAME, &name2,
3.167 + RAZOR_DETAIL_VERSION, &version2,
3.168 + RAZOR_DETAIL_ARCH, &arch2,
3.169 + 0);
3.170 }
3.171
3.172 razor_package_iterator_destroy(pi1);
4.1 --- a/librazor/razor.h Sun Jun 29 17:32:19 2008 +0100
4.2 +++ b/librazor/razor.h Mon Jun 30 08:51:26 2008 +0100
4.3 @@ -28,6 +28,16 @@
4.4 RAZOR_REPO_FILE_FILES
4.5 };
4.6
4.7 +enum razor_detail_type {
4.8 + RAZOR_DETAIL_NAME = 1, /* 0 is the marker for the vararg */
4.9 + RAZOR_DETAIL_VERSION,
4.10 + RAZOR_DETAIL_ARCH,
4.11 + RAZOR_DETAIL_SUMMARY,
4.12 + RAZOR_DETAIL_DESCRIPTION,
4.13 + RAZOR_DETAIL_URL,
4.14 + RAZOR_DETAIL_LICENSE
4.15 +};
4.16 +
4.17 enum razor_property_flags {
4.18 RAZOR_PROPERTY_LESS = 1 << 0,
4.19 RAZOR_PROPERTY_GREATER = 1 << 1,
4.20 @@ -84,9 +94,7 @@
4.21 razor_set_get_package(struct razor_set *set, const char *package);
4.22
4.23 void
4.24 -razor_package_get_details(struct razor_set *set, struct razor_package *package,
4.25 - const char **summary, const char **description,
4.26 - const char **url, const char **license);
4.27 +razor_package_get_details(struct razor_set *set, struct razor_package *package, ...);
4.28
4.29
4.30 /**
4.31 @@ -136,10 +144,7 @@
4.32 const char *filename);
4.33
4.34 int razor_package_iterator_next(struct razor_package_iterator *pi,
4.35 - struct razor_package **package,
4.36 - const char **name,
4.37 - const char **version,
4.38 - const char **arch);
4.39 + struct razor_package **package, ...);
4.40 void razor_package_iterator_destroy(struct razor_package_iterator *pi);
4.41
4.42 struct razor_package_query *
5.1 --- a/librazor/transaction.c Sun Jun 29 17:32:19 2008 +0100
5.2 +++ b/librazor/transaction.c Mon Jun 30 08:51:26 2008 +0100
5.3 @@ -294,7 +294,7 @@
5.4 struct razor_package *pkg, *pkgs;
5.5 struct razor_package_iterator pkg_iter;
5.6 struct razor_set *set;
5.7 - const char *n, *v, *a;
5.8 + const char *n, *v;
5.9 uint32_t type;
5.10
5.11 if (ppi->present == trans->system.properties)
5.12 @@ -316,8 +316,9 @@
5.13 continue;
5.14
5.15 razor_package_iterator_init_for_property(&pkg_iter, set, p);
5.16 - while (razor_package_iterator_next(&pkg_iter,
5.17 - &pkg, &n, &v, &a)) {
5.18 + while (razor_package_iterator_next(&pkg_iter, &pkg,
5.19 + RAZOR_DETAIL_NAME, &n,
5.20 + RAZOR_DETAIL_VERSION, &v, 0)) {
5.21 fprintf(stderr, "removing %s-%s\n", n, v);
5.22 razor_transaction_remove_package(trans, pkg);
5.23 }
5.24 @@ -335,7 +336,7 @@
5.25 struct razor_package *pkg, *pkgs;
5.26 struct razor_package_iterator pkg_iter;
5.27 struct razor_set *set;
5.28 - const char *name, *version, *arch;
5.29 + const char *name, *version;
5.30 uint32_t *flags, type;
5.31
5.32 if (ppi->present == trans->system.properties) {
5.33 @@ -362,7 +363,8 @@
5.34
5.35 razor_package_iterator_init_for_property(&pkg_iter, set, p);
5.36 while (razor_package_iterator_next(&pkg_iter, &pkg,
5.37 - &name, &version, &arch)) {
5.38 + RAZOR_DETAIL_NAME, &name,
5.39 + RAZOR_DETAIL_VERSION, &version, 0)) {
5.40
5.41 fprintf(stderr, "flagging %s-%s for providing %s matching %s %s\n",
5.42 name, version,
5.43 @@ -511,7 +513,7 @@
5.44 struct razor_property *sp;
5.45 struct prop_iter spi;
5.46 struct razor_package_iterator pkg_iter;
5.47 - const char *name, *version, *arch;
5.48 + const char *name;
5.49
5.50 spkgs = trans->system.set->packages.data;
5.51 prop_iter_init(&spi, &trans->system);
5.52 @@ -524,7 +526,7 @@
5.53 trans->system.set,
5.54 sp);
5.55 while (razor_package_iterator_next(&pkg_iter, &pkg,
5.56 - &name, &version, &arch)) {
5.57 + RAZOR_DETAIL_NAME, &name, 0)) {
5.58 fprintf(stderr, "updating %s because %s %s %s "
5.59 "isn't satisfied\n",
5.60 name, spi.pool + sp->name,
5.61 @@ -556,7 +558,7 @@
5.62 struct razor_property *up, *sp;
5.63 struct prop_iter spi, upi;
5.64 struct razor_package_iterator pkg_iter;
5.65 - const char *name, *version, *arch;
5.66 + const char *name, *version;
5.67
5.68 spkgs = trans->system.set->packages.data;
5.69 prop_iter_init(&spi, &trans->system);
5.70 @@ -575,7 +577,8 @@
5.71 trans->system.set,
5.72 sp);
5.73 while (razor_package_iterator_next(&pkg_iter, &pkg,
5.74 - &name, &version, &arch)) {
5.75 + RAZOR_DETAIL_NAME, &name,
5.76 + RAZOR_DETAIL_VERSION, &version, 0)) {
5.77 fprintf(stderr, "updating %s %s because it "
5.78 "conflicts with %s\n",
5.79 name, version, spi.pool + sp->name);
5.80 @@ -657,13 +660,15 @@
5.81 struct razor_package_iterator *pi;
5.82 struct razor_package *p, *pkg, *spkgs;
5.83 struct prop_iter ppi;
5.84 - const char *name, *version, *arch;
5.85 + const char *name, *version;
5.86
5.87 spkgs = trans->system.set->packages.data;
5.88 pi = razor_package_iterator_create(trans->system.set);
5.89 prop_iter_init(&ppi, &trans->upstream);
5.90
5.91 - while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
5.92 + while (razor_package_iterator_next(pi, &p,
5.93 + RAZOR_DETAIL_NAME, &name,
5.94 + RAZOR_DETAIL_VERSION, &version, 0)) {
5.95 if (!(trans->system.packages[p - spkgs] & TRANS_PACKAGE_UPDATE))
5.96 continue;
5.97
5.98 @@ -692,13 +697,15 @@
5.99 struct razor_package_iterator *pi;
5.100 struct razor_package *p, *upkgs;
5.101 struct prop_iter spi;
5.102 - const char *name, *version, *arch;
5.103 + const char *name, *version;
5.104
5.105 upkgs = trans->upstream.set->packages.data;
5.106 pi = razor_package_iterator_create(trans->upstream.set);
5.107 prop_iter_init(&spi, &trans->system);
5.108
5.109 - while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
5.110 + while (razor_package_iterator_next(pi, &p,
5.111 + RAZOR_DETAIL_NAME, &name,
5.112 + RAZOR_DETAIL_VERSION, &version, 0)) {
5.113 if (!(trans->upstream.packages[p - upkgs] & TRANS_PACKAGE_UPDATE))
5.114 continue;
5.115
5.116 @@ -745,14 +752,18 @@
5.117 if (pool[rp->version] == '\0') {
5.118 razor_package_iterator_init_for_property(&pi, set, rp);
5.119 while (razor_package_iterator_next(&pi, &pkg,
5.120 - &name, &version, &arch))
5.121 + RAZOR_DETAIL_NAME, &name,
5.122 + RAZOR_DETAIL_VERSION, &version,
5.123 + RAZOR_DETAIL_ARCH, &arch, 0))
5.124 fprintf(stderr, "%s is needed by %s-%s.%s\n",
5.125 &pool[rp->name],
5.126 name, version, arch);
5.127 } else {
5.128 razor_package_iterator_init_for_property(&pi, set, rp);
5.129 while (razor_package_iterator_next(&pi, &pkg,
5.130 - &name, &version, &arch))
5.131 + RAZOR_DETAIL_NAME, &name,
5.132 + RAZOR_DETAIL_VERSION, &version,
5.133 + RAZOR_DETAIL_ARCH, &arch, 0))
5.134 fprintf(stderr, "%s %s %s is needed by %s-%s.%s\n",
5.135 &pool[rp->name],
5.136 razor_property_relation_to_string(rp),
6.1 --- a/src/main.c Sun Jun 29 17:32:19 2008 +0100
6.2 +++ b/src/main.c Mon Jun 30 08:51:26 2008 +0100
6.3 @@ -47,7 +47,7 @@
6.4 struct razor_package_query *query;
6.5 struct razor_package_iterator *iter;
6.6 struct razor_package *package;
6.7 - const char *name, *version, *arch, *pattern;
6.8 + const char *name, *pattern;
6.9 int i, count;
6.10
6.11 if (argc == 0)
6.12 @@ -59,8 +59,7 @@
6.13 iter = razor_package_iterator_create(set);
6.14 pattern = argv[i];
6.15 count = 0;
6.16 - while (razor_package_iterator_next(iter, &package,
6.17 - &name, &version, &arch)) {
6.18 + while (razor_package_iterator_next(iter, &package, RAZOR_DETAIL_NAME, &name, 0)) {
6.19 if (fnmatch(pattern, name, 0) != 0)
6.20 continue;
6.21
6.22 @@ -86,7 +85,9 @@
6.23 const char *name, *version, *arch;
6.24
6.25 while (razor_package_iterator_next(iter, &package,
6.26 - &name, &version, &arch)) {
6.27 + RAZOR_DETAIL_NAME, &name,
6.28 + RAZOR_DETAIL_VERSION, &version,
6.29 + RAZOR_DETAIL_ARCH, &arch, 0)) {
6.30 if (flags & LIST_PACKAGES_ONLY_NAMES)
6.31 printf("%s\n", name);
6.32 else
6.33 @@ -425,12 +426,12 @@
6.34 {
6.35 struct razor_package_iterator *pi;
6.36 struct razor_package *package;
6.37 - const char *name, *version, *arch;
6.38 + const char *name;
6.39 int matches = 0;
6.40
6.41 pi = razor_package_iterator_create(set);
6.42 while (razor_package_iterator_next(pi, &package,
6.43 - &name, &version, &arch)) {
6.44 + RAZOR_DETAIL_NAME, &name, 0)) {
6.45 if (pattern && fnmatch(pattern, name, 0) == 0) {
6.46 razor_transaction_update_package(trans, package);
6.47 matches++;
6.48 @@ -447,12 +448,11 @@
6.49 {
6.50 struct razor_package_iterator *pi;
6.51 struct razor_package *package;
6.52 - const char *name, *version, *arch;
6.53 + const char *name;
6.54 int matches = 0;
6.55
6.56 pi = razor_package_iterator_create(set);
6.57 - while (razor_package_iterator_next(pi, &package,
6.58 - &name, &version, &arch)) {
6.59 + while (razor_package_iterator_next(pi, &package, RAZOR_DETAIL_NAME, &name, 0)) {
6.60 if (pattern && fnmatch(pattern, name, 0) == 0) {
6.61 razor_transaction_remove_package(trans, package);
6.62 matches++;
6.63 @@ -660,7 +660,9 @@
6.64 pi = razor_set_create_install_iterator(system, next);
6.65 errors = 0;
6.66 while (razor_package_iterator_next(pi, &package,
6.67 - &name, &version, &arch)) {
6.68 + RAZOR_DETAIL_NAME, &name,
6.69 + RAZOR_DETAIL_VERSION, &version,
6.70 + RAZOR_DETAIL_ARCH, &arch, 0)) {
6.71 snprintf(url, sizeof url,
6.72 "%s/Packages/%s",
6.73 yum_url, rpm_filename(name, version, arch));
6.74 @@ -690,7 +692,9 @@
6.75
6.76 pi = razor_set_create_install_iterator(system, next);
6.77 while (razor_package_iterator_next(pi, &package,
6.78 - &name, &version, &arch)) {
6.79 + RAZOR_DETAIL_NAME, &name,
6.80 + RAZOR_DETAIL_VERSION, &version,
6.81 + RAZOR_DETAIL_ARCH, &arch, 0)) {
6.82 printf("install %s-%s\n", name, version);
6.83
6.84 snprintf(file, sizeof file,
6.85 @@ -796,7 +800,9 @@
6.86 set = razor_set_open(rawhide_repo_filename);
6.87 pi = razor_package_iterator_create(set);
6.88 while (razor_package_iterator_next(pi, &package,
6.89 - &name, &version, &arch)) {
6.90 + RAZOR_DETAIL_NAME, &name,
6.91 + RAZOR_DETAIL_VERSION, &version,
6.92 + RAZOR_DETAIL_ARCH, &arch, 0)) {
6.93 if (pattern && fnmatch(pattern, name, 0) != 0)
6.94 continue;
6.95
6.96 @@ -837,12 +843,18 @@
6.97 return 1;
6.98 pi = razor_package_iterator_create(set);
6.99 while (razor_package_iterator_next(pi, &package,
6.100 - &name, &version, &arch)) {
6.101 + RAZOR_DETAIL_NAME, &name,
6.102 + RAZOR_DETAIL_VERSION, &version,
6.103 + RAZOR_DETAIL_ARCH, &arch, 0)) {
6.104 if (pattern && fnmatch(pattern, name, 0) != 0)
6.105 continue;
6.106
6.107 - razor_package_get_details (set, package, &summary, &description,
6.108 - &url, &license);
6.109 + razor_package_get_details (set, package,
6.110 + RAZOR_DETAIL_SUMMARY, &summary,
6.111 + RAZOR_DETAIL_DESCRIPTION, &description,
6.112 + RAZOR_DETAIL_URL, &url,
6.113 + RAZOR_DETAIL_LICENSE, &license,
6.114 + 0);
6.115
6.116 printf ("Name: %s\n", name);
6.117 printf ("Arch: %s\n", arch);
7.1 --- a/src/rpm.c Sun Jun 29 17:32:19 2008 +0100
7.2 +++ b/src/rpm.c Mon Jun 30 08:51:26 2008 +0100
7.3 @@ -303,7 +303,7 @@
7.4 {
7.5 struct razor_package *package;
7.6 struct razor_package_iterator *pi;
7.7 - const char *name, *version, *arch;
7.8 + const char *name;
7.9 int i, cmp, errors;
7.10
7.11 qsort(argv, argc, sizeof(*argv), strcmpp);
7.12 @@ -313,7 +313,7 @@
7.13 pi = razor_package_iterator_create(set);
7.14
7.15 while (razor_package_iterator_next(pi, &package,
7.16 - &name, &version, &arch)) {
7.17 + RAZOR_DETAIL_NAME, &name, 0)) {
7.18 while (cmp = strcmp(argv[i], name), cmp < 0 && i < argc) {
7.19 fprintf(stderr, "error: package %s is not installed\n",
7.20 argv[i]);
7.21 @@ -417,8 +417,12 @@
7.22 {
7.23 const char *summary, *description, *url, *license;
7.24
7.25 - razor_package_get_details(set, package, &summary, &description,
7.26 - &url, &license);
7.27 + razor_package_get_details (set, package,
7.28 + RAZOR_DETAIL_SUMMARY, &summary,
7.29 + RAZOR_DETAIL_DESCRIPTION, &description,
7.30 + RAZOR_DETAIL_URL, &url,
7.31 + RAZOR_DETAIL_LICENSE, &license,
7.32 + 0);
7.33
7.34 printf("Name: %s\n", name);
7.35 printf("Arch: %s\n", arch);
7.36 @@ -488,7 +492,9 @@
7.37 pi = get_query_packages(set, argc, argv);
7.38
7.39 while (razor_package_iterator_next(pi, &package,
7.40 - &name, &version, &arch)) {
7.41 + RAZOR_DETAIL_NAME, &name,
7.42 + RAZOR_DETAIL_VERSION, &version,
7.43 + RAZOR_DETAIL_ARCH, &arch, 0)) {
7.44 if (option_conflicts)
7.45 print_package_properties(set, package,
7.46 RAZOR_PROPERTY_CONFLICTS);
7.47 @@ -540,7 +546,9 @@
7.48 pi = get_query_packages(set, argc, argv);
7.49
7.50 while (razor_package_iterator_next(pi, &package,
7.51 - &name, &version, &arch)) {
7.52 + RAZOR_DETAIL_NAME, &name,
7.53 + RAZOR_DETAIL_VERSION, &version,
7.54 + RAZOR_DETAIL_ARCH, &arch, 0)) {
7.55 printf("verify %s-%s.%s - not implemented\n",
7.56 name, version, arch);
7.57 }
7.58 @@ -570,7 +578,6 @@
7.59 struct razor_package_query *query;
7.60 struct razor_package_iterator *pi;
7.61 struct razor_package *package;
7.62 - const char *name, *version, *arch;
7.63
7.64 if (argc == 0) {
7.65 printf("no packages given for erase\n");
7.66 @@ -586,8 +593,7 @@
7.67 add_command_line_packages(set, query, argc, argv);
7.68
7.69 pi = razor_package_query_finish(query);
7.70 - while (razor_package_iterator_next(pi, &package,
7.71 - &name, &version, &arch))
7.72 + while (razor_package_iterator_next(pi, &package, 0))
7.73 razor_transaction_remove_package(trans, package);
7.74 razor_package_iterator_destroy(pi);
7.75
7.76 @@ -617,7 +623,6 @@
7.77 struct razor_transaction *trans;
7.78 struct razor_package_iterator *pi;
7.79 struct razor_package *package;
7.80 - const char *name, *version, *arch;
7.81
7.82 if (argc == 0) {
7.83 printf("no packages given for install\n");
7.84 @@ -630,8 +635,7 @@
7.85 trans = razor_transaction_create(set, upstream);
7.86
7.87 pi = razor_package_iterator_create(upstream);
7.88 - while (razor_package_iterator_next(pi, &package,
7.89 - &name, &version, &arch))
7.90 + while (razor_package_iterator_next(pi, &package, 0))
7.91 razor_transaction_install_package(trans, package);
7.92 razor_package_iterator_destroy(pi);
7.93
7.94 @@ -661,7 +665,6 @@
7.95 struct razor_transaction *trans;
7.96 struct razor_package_iterator *pi;
7.97 struct razor_package *package;
7.98 - const char *name, *version, *arch;
7.99
7.100 if (argc == 0) {
7.101 printf("no packages given for update\n");
7.102 @@ -674,8 +677,7 @@
7.103 trans = razor_transaction_create(set, upstream);
7.104
7.105 pi = razor_package_iterator_create(upstream);
7.106 - while (razor_package_iterator_next(pi, &package,
7.107 - &name, &version, &arch))
7.108 + while (razor_package_iterator_next(pi, &package, 0))
7.109 razor_transaction_update_package(trans, package);
7.110 razor_package_iterator_destroy(pi);
7.111