1.1 --- a/librazor/iterator.c Mon Jun 30 09:47:32 2008 +0100
1.2 +++ b/librazor/iterator.c Mon Jun 30 10:46:20 2008 +0100
1.3 @@ -112,7 +112,7 @@
1.4 * @package: a %razor_package
1.5 *
1.6 * Gets the next iteratr along with any vararg data.
1.7 - * The vararg must be terminated with zero.
1.8 + * The vararg must be terminated with NULL.
1.9 *
1.10 * Example: razor_package_iterator_next (pi, package, RAZOR_DETAIL_NAME, &name, 0);
1.11 **/
1.12 @@ -273,7 +273,7 @@
1.13 assert (pi != NULL);
1.14
1.15 packages = pq->set->packages.data;
1.16 - while (razor_package_iterator_next(pi, &p, 0)) {
1.17 + while (razor_package_iterator_next(pi, &p, NULL)) {
1.18 pq->count += pq->vector[p - packages] ^ 1;
1.19 pq->vector[p - packages] = 1;
1.20 }
2.1 --- a/librazor/razor.c Mon Jun 30 09:47:32 2008 +0100
2.2 +++ b/librazor/razor.c Mon Jun 30 10:46:20 2008 +0100
2.3 @@ -394,7 +394,7 @@
2.4 assert (package != NULL);
2.5
2.6 pi = razor_package_iterator_create(set);
2.7 - while (razor_package_iterator_next(pi, &p, RAZOR_DETAIL_NAME, &name, 0)) {
2.8 + while (razor_package_iterator_next(pi, &p, RAZOR_DETAIL_NAME, &name, NULL)) {
2.9 if (strcmp(package, name) == 0)
2.10 break;
2.11 }
2.12 @@ -476,7 +476,7 @@
2.13 * @package: a %razor_package
2.14 *
2.15 * Gets details about a package using a varg interface
2.16 - * The vararg must be terminated with zero.
2.17 + * The vararg must be terminated with %NULL.
2.18 *
2.19 * Example: razor_package_get_details (set, package, RAZOR_DETAIL_URL, &url, 0);
2.20 **/
2.21 @@ -721,12 +721,12 @@
2.22 RAZOR_DETAIL_NAME, &name1,
2.23 RAZOR_DETAIL_VERSION, &version1,
2.24 RAZOR_DETAIL_ARCH, &arch1,
2.25 - 0);
2.26 + NULL);
2.27 razor_package_iterator_next(pi2, &p2,
2.28 RAZOR_DETAIL_NAME, &name2,
2.29 RAZOR_DETAIL_VERSION, &version2,
2.30 RAZOR_DETAIL_ARCH, &arch2,
2.31 - 0);
2.32 + NULL);
2.33
2.34 while (p1 || p2) {
2.35 if (p1 && p2) {
2.36 @@ -749,13 +749,13 @@
2.37 RAZOR_DETAIL_NAME, &name1,
2.38 RAZOR_DETAIL_VERSION, &version1,
2.39 RAZOR_DETAIL_ARCH, &arch1,
2.40 - 0);
2.41 + NULL);
2.42 if (p2 != NULL && res >= 0)
2.43 razor_package_iterator_next(pi2, &p2,
2.44 RAZOR_DETAIL_NAME, &name2,
2.45 RAZOR_DETAIL_VERSION, &version2,
2.46 RAZOR_DETAIL_ARCH, &arch2,
2.47 - 0);
2.48 + NULL);
2.49 }
2.50
2.51 razor_package_iterator_destroy(pi1);
3.1 --- a/librazor/razor.h Mon Jun 30 09:47:32 2008 +0100
3.2 +++ b/librazor/razor.h Mon Jun 30 10:46:20 2008 +0100
3.3 @@ -22,6 +22,13 @@
3.4
3.5 #include <stdint.h>
3.6
3.7 +/* GCC sentinel */
3.8 +#if defined(__GNUC__) && __GNUC__ >= 4
3.9 +#define RAZOR_SENTINEL __attribute__ ((__sentinel__(0)));
3.10 +#else
3.11 +#define RAZOR_SENTINEL
3.12 +#endif
3.13 +
3.14 enum razor_repo_file_type {
3.15 RAZOR_REPO_FILE_MAIN,
3.16 RAZOR_REPO_FILE_DETAILS,
3.17 @@ -29,7 +36,7 @@
3.18 };
3.19
3.20 enum razor_detail_type {
3.21 - RAZOR_DETAIL_NAME = 1, /* 0 is the marker for the vararg */
3.22 + RAZOR_DETAIL_NAME = 1, /* NULL (0 on 32 bit) is the sentinel */
3.23 RAZOR_DETAIL_VERSION,
3.24 RAZOR_DETAIL_ARCH,
3.25 RAZOR_DETAIL_SUMMARY,
3.26 @@ -94,7 +101,9 @@
3.27 razor_set_get_package(struct razor_set *set, const char *package);
3.28
3.29 void
3.30 -razor_package_get_details(struct razor_set *set, struct razor_package *package, ...);
3.31 +razor_package_get_details(struct razor_set *set,
3.32 + struct razor_package *package, ...)
3.33 + RAZOR_SENTINEL;
3.34
3.35
3.36 /**
3.37 @@ -144,7 +153,8 @@
3.38 const char *filename);
3.39
3.40 int razor_package_iterator_next(struct razor_package_iterator *pi,
3.41 - struct razor_package **package, ...);
3.42 + struct razor_package **package, ...)
3.43 + RAZOR_SENTINEL;
3.44 void razor_package_iterator_destroy(struct razor_package_iterator *pi);
3.45
3.46 struct razor_package_query *
4.1 --- a/librazor/transaction.c Mon Jun 30 09:47:32 2008 +0100
4.2 +++ b/librazor/transaction.c Mon Jun 30 10:46:20 2008 +0100
4.3 @@ -318,7 +318,7 @@
4.4 razor_package_iterator_init_for_property(&pkg_iter, set, p);
4.5 while (razor_package_iterator_next(&pkg_iter, &pkg,
4.6 RAZOR_DETAIL_NAME, &n,
4.7 - RAZOR_DETAIL_VERSION, &v, 0)) {
4.8 + RAZOR_DETAIL_VERSION, &v, NULL)) {
4.9 fprintf(stderr, "removing %s-%s\n", n, v);
4.10 razor_transaction_remove_package(trans, pkg);
4.11 }
4.12 @@ -364,7 +364,7 @@
4.13 razor_package_iterator_init_for_property(&pkg_iter, set, p);
4.14 while (razor_package_iterator_next(&pkg_iter, &pkg,
4.15 RAZOR_DETAIL_NAME, &name,
4.16 - RAZOR_DETAIL_VERSION, &version, 0)) {
4.17 + RAZOR_DETAIL_VERSION, &version, NULL)) {
4.18
4.19 fprintf(stderr, "flagging %s-%s for providing %s matching %s %s\n",
4.20 name, version,
4.21 @@ -526,7 +526,7 @@
4.22 trans->system.set,
4.23 sp);
4.24 while (razor_package_iterator_next(&pkg_iter, &pkg,
4.25 - RAZOR_DETAIL_NAME, &name, 0)) {
4.26 + RAZOR_DETAIL_NAME, &name, NULL)) {
4.27 fprintf(stderr, "updating %s because %s %s %s "
4.28 "isn't satisfied\n",
4.29 name, spi.pool + sp->name,
4.30 @@ -578,7 +578,7 @@
4.31 sp);
4.32 while (razor_package_iterator_next(&pkg_iter, &pkg,
4.33 RAZOR_DETAIL_NAME, &name,
4.34 - RAZOR_DETAIL_VERSION, &version, 0)) {
4.35 + RAZOR_DETAIL_VERSION, &version, NULL)) {
4.36 fprintf(stderr, "updating %s %s because it "
4.37 "conflicts with %s\n",
4.38 name, version, spi.pool + sp->name);
4.39 @@ -668,7 +668,7 @@
4.40
4.41 while (razor_package_iterator_next(pi, &p,
4.42 RAZOR_DETAIL_NAME, &name,
4.43 - RAZOR_DETAIL_VERSION, &version, 0)) {
4.44 + RAZOR_DETAIL_VERSION, &version, NULL)) {
4.45 if (!(trans->system.packages[p - spkgs] & TRANS_PACKAGE_UPDATE))
4.46 continue;
4.47
4.48 @@ -705,7 +705,7 @@
4.49
4.50 while (razor_package_iterator_next(pi, &p,
4.51 RAZOR_DETAIL_NAME, &name,
4.52 - RAZOR_DETAIL_VERSION, &version, 0)) {
4.53 + RAZOR_DETAIL_VERSION, &version, NULL)) {
4.54 if (!(trans->upstream.packages[p - upkgs] & TRANS_PACKAGE_UPDATE))
4.55 continue;
4.56
4.57 @@ -754,7 +754,7 @@
4.58 while (razor_package_iterator_next(&pi, &pkg,
4.59 RAZOR_DETAIL_NAME, &name,
4.60 RAZOR_DETAIL_VERSION, &version,
4.61 - RAZOR_DETAIL_ARCH, &arch, 0))
4.62 + RAZOR_DETAIL_ARCH, &arch, NULL))
4.63 fprintf(stderr, "%s is needed by %s-%s.%s\n",
4.64 &pool[rp->name],
4.65 name, version, arch);
4.66 @@ -763,7 +763,7 @@
4.67 while (razor_package_iterator_next(&pi, &pkg,
4.68 RAZOR_DETAIL_NAME, &name,
4.69 RAZOR_DETAIL_VERSION, &version,
4.70 - RAZOR_DETAIL_ARCH, &arch, 0))
4.71 + RAZOR_DETAIL_ARCH, &arch, NULL))
4.72 fprintf(stderr, "%s %s %s is needed by %s-%s.%s\n",
4.73 &pool[rp->name],
4.74 razor_property_relation_to_string(rp),
5.1 --- a/src/main.c Mon Jun 30 09:47:32 2008 +0100
5.2 +++ b/src/main.c Mon Jun 30 10:46:20 2008 +0100
5.3 @@ -59,7 +59,7 @@
5.4 iter = razor_package_iterator_create(set);
5.5 pattern = argv[i];
5.6 count = 0;
5.7 - while (razor_package_iterator_next(iter, &package, RAZOR_DETAIL_NAME, &name, 0)) {
5.8 + while (razor_package_iterator_next(iter, &package, RAZOR_DETAIL_NAME, &name, NULL)) {
5.9 if (fnmatch(pattern, name, 0) != 0)
5.10 continue;
5.11
5.12 @@ -87,7 +87,7 @@
5.13 while (razor_package_iterator_next(iter, &package,
5.14 RAZOR_DETAIL_NAME, &name,
5.15 RAZOR_DETAIL_VERSION, &version,
5.16 - RAZOR_DETAIL_ARCH, &arch, 0)) {
5.17 + RAZOR_DETAIL_ARCH, &arch, NULL)) {
5.18 if (flags & LIST_PACKAGES_ONLY_NAMES)
5.19 printf("%s\n", name);
5.20 else
5.21 @@ -431,7 +431,7 @@
5.22
5.23 pi = razor_package_iterator_create(set);
5.24 while (razor_package_iterator_next(pi, &package,
5.25 - RAZOR_DETAIL_NAME, &name, 0)) {
5.26 + RAZOR_DETAIL_NAME, &name, NULL)) {
5.27 if (pattern && fnmatch(pattern, name, 0) == 0) {
5.28 razor_transaction_update_package(trans, package);
5.29 matches++;
5.30 @@ -452,7 +452,7 @@
5.31 int matches = 0;
5.32
5.33 pi = razor_package_iterator_create(set);
5.34 - while (razor_package_iterator_next(pi, &package, RAZOR_DETAIL_NAME, &name, 0)) {
5.35 + while (razor_package_iterator_next(pi, &package, RAZOR_DETAIL_NAME, &name, NULL)) {
5.36 if (pattern && fnmatch(pattern, name, 0) == 0) {
5.37 razor_transaction_remove_package(trans, package);
5.38 matches++;
5.39 @@ -662,7 +662,7 @@
5.40 while (razor_package_iterator_next(pi, &package,
5.41 RAZOR_DETAIL_NAME, &name,
5.42 RAZOR_DETAIL_VERSION, &version,
5.43 - RAZOR_DETAIL_ARCH, &arch, 0)) {
5.44 + RAZOR_DETAIL_ARCH, &arch, NULL)) {
5.45 snprintf(url, sizeof url,
5.46 "%s/Packages/%s",
5.47 yum_url, rpm_filename(name, version, arch));
5.48 @@ -694,7 +694,7 @@
5.49 while (razor_package_iterator_next(pi, &package,
5.50 RAZOR_DETAIL_NAME, &name,
5.51 RAZOR_DETAIL_VERSION, &version,
5.52 - RAZOR_DETAIL_ARCH, &arch, 0)) {
5.53 + RAZOR_DETAIL_ARCH, &arch, NULL)) {
5.54 printf("install %s-%s\n", name, version);
5.55
5.56 snprintf(file, sizeof file,
5.57 @@ -802,7 +802,7 @@
5.58 while (razor_package_iterator_next(pi, &package,
5.59 RAZOR_DETAIL_NAME, &name,
5.60 RAZOR_DETAIL_VERSION, &version,
5.61 - RAZOR_DETAIL_ARCH, &arch, 0)) {
5.62 + RAZOR_DETAIL_ARCH, &arch, NULL)) {
5.63 if (pattern && fnmatch(pattern, name, 0) != 0)
5.64 continue;
5.65
5.66 @@ -845,7 +845,7 @@
5.67 while (razor_package_iterator_next(pi, &package,
5.68 RAZOR_DETAIL_NAME, &name,
5.69 RAZOR_DETAIL_VERSION, &version,
5.70 - RAZOR_DETAIL_ARCH, &arch, 0)) {
5.71 + RAZOR_DETAIL_ARCH, &arch, NULL)) {
5.72 if (pattern && fnmatch(pattern, name, 0) != 0)
5.73 continue;
5.74
5.75 @@ -854,7 +854,7 @@
5.76 RAZOR_DETAIL_DESCRIPTION, &description,
5.77 RAZOR_DETAIL_URL, &url,
5.78 RAZOR_DETAIL_LICENSE, &license,
5.79 - 0);
5.80 + NULL);
5.81
5.82 printf ("Name: %s\n", name);
5.83 printf ("Arch: %s\n", arch);
5.84 @@ -899,13 +899,18 @@
5.85
5.86 pi = razor_package_iterator_create(set);
5.87 while (razor_package_iterator_next(pi, &package,
5.88 - &name, &version, &arch)) {
5.89 + RAZOR_DETAIL_NAME, &name,
5.90 + RAZOR_DETAIL_VERSION, &version,
5.91 + RAZOR_DETAIL_ARCH, &arch, NULL)) {
5.92 if (!fnmatch(pattern, name, 0))
5.93 printf("%s-%s.%s\n", name, version, arch);
5.94 else {
5.95 - razor_package_get_details (set, package, &summary,
5.96 - &description, &url,
5.97 - &license);
5.98 + razor_package_get_details (set, package,
5.99 + RAZOR_DETAIL_SUMMARY, &summary,
5.100 + RAZOR_DETAIL_DESCRIPTION, &description,
5.101 + RAZOR_DETAIL_URL, &url,
5.102 + RAZOR_DETAIL_LICENSE, &license,
5.103 + NULL);
5.104 if (!fnmatch(pattern, url, 0) ||
5.105 !fnmatch(pattern, summary, 0) ||
5.106 !fnmatch(pattern, description, 0))
6.1 --- a/src/rpm.c Mon Jun 30 09:47:32 2008 +0100
6.2 +++ b/src/rpm.c Mon Jun 30 10:46:20 2008 +0100
6.3 @@ -313,7 +313,7 @@
6.4 pi = razor_package_iterator_create(set);
6.5
6.6 while (razor_package_iterator_next(pi, &package,
6.7 - RAZOR_DETAIL_NAME, &name, 0)) {
6.8 + RAZOR_DETAIL_NAME, &name, NULL)) {
6.9 while (cmp = strcmp(argv[i], name), cmp < 0 && i < argc) {
6.10 fprintf(stderr, "error: package %s is not installed\n",
6.11 argv[i]);
6.12 @@ -422,7 +422,7 @@
6.13 RAZOR_DETAIL_DESCRIPTION, &description,
6.14 RAZOR_DETAIL_URL, &url,
6.15 RAZOR_DETAIL_LICENSE, &license,
6.16 - 0);
6.17 + NULL);
6.18
6.19 printf("Name: %s\n", name);
6.20 printf("Arch: %s\n", arch);
6.21 @@ -494,7 +494,7 @@
6.22 while (razor_package_iterator_next(pi, &package,
6.23 RAZOR_DETAIL_NAME, &name,
6.24 RAZOR_DETAIL_VERSION, &version,
6.25 - RAZOR_DETAIL_ARCH, &arch, 0)) {
6.26 + RAZOR_DETAIL_ARCH, &arch, NULL)) {
6.27 if (option_conflicts)
6.28 print_package_properties(set, package,
6.29 RAZOR_PROPERTY_CONFLICTS);
6.30 @@ -548,7 +548,7 @@
6.31 while (razor_package_iterator_next(pi, &package,
6.32 RAZOR_DETAIL_NAME, &name,
6.33 RAZOR_DETAIL_VERSION, &version,
6.34 - RAZOR_DETAIL_ARCH, &arch, 0)) {
6.35 + RAZOR_DETAIL_ARCH, &arch, NULL)) {
6.36 printf("verify %s-%s.%s - not implemented\n",
6.37 name, version, arch);
6.38 }
6.39 @@ -593,7 +593,7 @@
6.40 add_command_line_packages(set, query, argc, argv);
6.41
6.42 pi = razor_package_query_finish(query);
6.43 - while (razor_package_iterator_next(pi, &package, 0))
6.44 + while (razor_package_iterator_next(pi, &package, NULL))
6.45 razor_transaction_remove_package(trans, package);
6.46 razor_package_iterator_destroy(pi);
6.47
6.48 @@ -635,7 +635,7 @@
6.49 trans = razor_transaction_create(set, upstream);
6.50
6.51 pi = razor_package_iterator_create(upstream);
6.52 - while (razor_package_iterator_next(pi, &package, 0))
6.53 + while (razor_package_iterator_next(pi, &package, NULL))
6.54 razor_transaction_install_package(trans, package);
6.55 razor_package_iterator_destroy(pi);
6.56
6.57 @@ -677,7 +677,7 @@
6.58 trans = razor_transaction_create(set, upstream);
6.59
6.60 pi = razor_package_iterator_create(upstream);
6.61 - while (razor_package_iterator_next(pi, &package, 0))
6.62 + while (razor_package_iterator_next(pi, &package, NULL))
6.63 razor_transaction_update_package(trans, package);
6.64 razor_package_iterator_destroy(pi);
6.65