convert the NULL sentinel to RAZOR_DETAIL_LAST
authorRichard Hughes <richard@hughsie.com>
Tue, 1 Jul 2008 08:22:25 +0000 (09:22 +0100)
committerRichard Hughes <richard@hughsie.com>
Tue, 1 Jul 2008 08:22:25 +0000 (09:22 +0100)
librazor/iterator.c
librazor/razor.c
librazor/razor.h
librazor/transaction.c
src/main.c
src/rpm.c
src/test-driver.c

index 6b973b0..4908d53 100644 (file)
@@ -114,7 +114,9 @@ razor_package_iterator_create_for_file(struct razor_set *set,
  * Gets the next iteratr along with any vararg data.
  * The vararg must be terminated with NULL.
  *
- * Example: razor_package_iterator_next (pi, package, RAZOR_DETAIL_NAME, &name, 0);
+ * Example: razor_package_iterator_next (pi, package,
+ *                                      RAZOR_DETAIL_NAME, &name,
+ *                                      RAZOR_DETAIL_LAST);
  **/
 RAZOR_EXPORT int
 razor_package_iterator_next(struct razor_package_iterator *pi,
@@ -273,7 +275,7 @@ razor_package_query_add_iterator(struct razor_package_query *pq,
        assert (pi != NULL);
 
        packages = pq->set->packages.data;
-       while (razor_package_iterator_next(pi, &p, NULL)) {
+       while (razor_package_iterator_next(pi, &p, RAZOR_DETAIL_LAST)) {
                pq->count += pq->vector[p - packages] ^ 1;
                pq->vector[p - packages] = 1;
        }
index d6f8331..7d18205 100644 (file)
@@ -442,7 +442,7 @@ razor_package_get_details_varg(struct razor_set *set,
 
        for (i = 0;; i += 2) {
                type = va_arg(args, enum razor_detail_type);
-               if (type == 0)
+               if (type == RAZOR_DETAIL_LAST)
                        break;
                data = va_arg(args, const char **);
                *data = razor_package_get_details_type(set, package, type);
@@ -458,7 +458,9 @@ razor_package_get_details_varg(struct razor_set *set,
  * Gets details about a package using a varg interface
  * The vararg must be terminated with %NULL.
  *
- * Example: razor_package_get_details (set, package, RAZOR_DETAIL_URL, &url, 0);
+ * Example: razor_package_get_details (set, package,
+ *                                    RAZOR_DETAIL_URL, &url,
+ *                                    RAZOR_DETAIL_LAST);
  **/
 RAZOR_EXPORT void
 razor_package_get_details(struct razor_set *set, struct razor_package *package, ...)
@@ -696,12 +698,12 @@ razor_set_diff(struct razor_set *set, struct razor_set *upstream,
                                    RAZOR_DETAIL_NAME, &name1,
                                    RAZOR_DETAIL_VERSION, &version1,
                                    RAZOR_DETAIL_ARCH, &arch1,
-                                   NULL);
+                                   RAZOR_DETAIL_LAST);
        razor_package_iterator_next(pi2, &p2,
                                    RAZOR_DETAIL_NAME, &name2,
                                    RAZOR_DETAIL_VERSION, &version2,
                                    RAZOR_DETAIL_ARCH, &arch2,
-                                   NULL);
+                                   RAZOR_DETAIL_LAST);
 
        while (p1 || p2) {
                if (p1 && p2) {
@@ -724,13 +726,13 @@ razor_set_diff(struct razor_set *set, struct razor_set *upstream,
                                                    RAZOR_DETAIL_NAME, &name1,
                                                    RAZOR_DETAIL_VERSION, &version1,
                                                    RAZOR_DETAIL_ARCH, &arch1,
-                                                   NULL);
+                                                   RAZOR_DETAIL_LAST);
                if (p2 != NULL && res >= 0)
                        razor_package_iterator_next(pi2, &p2,
                                                    RAZOR_DETAIL_NAME, &name2,
                                                    RAZOR_DETAIL_VERSION, &version2,
                                                    RAZOR_DETAIL_ARCH, &arch2,
-                                                   NULL);
+                                                   RAZOR_DETAIL_LAST);
        }
 
        razor_package_iterator_destroy(pi1);
index 096aa31..6cf1d8f 100644 (file)
 
 #include <stdint.h>
 
-/* GCC sentinel */
-#if defined(__GNUC__) && __GNUC__ >= 4
-#define RAZOR_SENTINEL __attribute__ ((__sentinel__(0)));
-#else
-#define RAZOR_SENTINEL
-#endif
-
 enum razor_repo_file_type {
        RAZOR_REPO_FILE_MAIN,
        RAZOR_REPO_FILE_DETAILS,
@@ -36,7 +29,8 @@ enum razor_repo_file_type {
 };
 
 enum razor_detail_type {
-       RAZOR_DETAIL_NAME = 1, /* NULL (0 on 32 bit) is the sentinel */
+       RAZOR_DETAIL_LAST = 0,  /* the sentinel */
+       RAZOR_DETAIL_NAME,
        RAZOR_DETAIL_VERSION,
        RAZOR_DETAIL_ARCH,
        RAZOR_DETAIL_SUMMARY,
@@ -102,8 +96,7 @@ razor_set_get_package(struct razor_set *set, const char *package);
 
 void
 razor_package_get_details(struct razor_set *set,
-                         struct razor_package *package, ...)
-                         RAZOR_SENTINEL;
+                         struct razor_package *package, ...);
 
 
 /**
@@ -153,8 +146,7 @@ razor_package_iterator_create_for_file(struct razor_set *set,
                                       const char *filename);
 
 int razor_package_iterator_next(struct razor_package_iterator *pi,
-                               struct razor_package **package, ...)
-                               RAZOR_SENTINEL;
+                               struct razor_package **package, ...);
 void razor_package_iterator_destroy(struct razor_package_iterator *pi);
 
 struct razor_package_query *
index 1e91cae..0abd6e1 100644 (file)
@@ -318,7 +318,8 @@ remove_matching_providers(struct razor_transaction *trans,
                razor_package_iterator_init_for_property(&pkg_iter, set, p);
                while (razor_package_iterator_next(&pkg_iter, &pkg,
                                                   RAZOR_DETAIL_NAME, &n,
-                                                  RAZOR_DETAIL_VERSION, &v, NULL)) {
+                                                  RAZOR_DETAIL_VERSION, &v,
+                                                  RAZOR_DETAIL_LAST)) {
                        fprintf(stderr, "removing %s-%s\n", n, v);
                        razor_transaction_remove_package(trans, pkg);
                }
@@ -364,7 +365,8 @@ flag_matching_providers(struct razor_transaction *trans,
                razor_package_iterator_init_for_property(&pkg_iter, set, p);
                while (razor_package_iterator_next(&pkg_iter, &pkg,
                                                   RAZOR_DETAIL_NAME, &name,
-                                                  RAZOR_DETAIL_VERSION, &version, NULL)) {
+                                                  RAZOR_DETAIL_VERSION, &version,
+                                                  RAZOR_DETAIL_LAST)) {
 
                        fprintf(stderr, "flagging %s-%s for providing %s matching %s %s\n",
                                name, version,
@@ -526,7 +528,8 @@ update_unsatisfied_packages(struct razor_transaction *trans)
                                                         trans->system.set,
                                                         sp);
                while (razor_package_iterator_next(&pkg_iter, &pkg,
-                                                  RAZOR_DETAIL_NAME, &name, NULL)) {
+                                                  RAZOR_DETAIL_NAME, &name,
+                                                  RAZOR_DETAIL_LAST)) {
                        fprintf(stderr, "updating %s because %s %s %s "
                                "isn't satisfied\n",
                                name, spi.pool + sp->name,
@@ -578,7 +581,8 @@ update_conflicted_packages(struct razor_transaction *trans)
                                                         sp);
                while (razor_package_iterator_next(&pkg_iter, &pkg,
                                                   RAZOR_DETAIL_NAME, &name,
-                                                  RAZOR_DETAIL_VERSION, &version, NULL)) {
+                                                  RAZOR_DETAIL_VERSION, &version,
+                                                  RAZOR_DETAIL_LAST)) {
                        fprintf(stderr, "updating %s %s because it "
                                "conflicts with %s\n",
                                name, version, spi.pool + sp->name);
@@ -668,7 +672,8 @@ flush_scheduled_system_updates(struct razor_transaction *trans)
 
        while (razor_package_iterator_next(pi, &p,
                                           RAZOR_DETAIL_NAME, &name,
-                                          RAZOR_DETAIL_VERSION, &version, NULL)) {
+                                          RAZOR_DETAIL_VERSION, &version,
+                                          RAZOR_DETAIL_LAST)) {
                if (!(trans->system.packages[p - spkgs] & TRANS_PACKAGE_UPDATE))
                        continue;
 
@@ -705,7 +710,8 @@ flush_scheduled_upstream_updates(struct razor_transaction *trans)
 
        while (razor_package_iterator_next(pi, &p,
                                           RAZOR_DETAIL_NAME, &name,
-                                          RAZOR_DETAIL_VERSION, &version, NULL)) {
+                                          RAZOR_DETAIL_VERSION, &version,
+                                          RAZOR_DETAIL_LAST)) {
                if (!(trans->upstream.packages[p - upkgs] & TRANS_PACKAGE_UPDATE))
                        continue;
 
@@ -754,7 +760,8 @@ describe_unsatisfied(struct razor_set *set, struct razor_property *rp)
                while (razor_package_iterator_next(&pi, &pkg,
                                                   RAZOR_DETAIL_NAME, &name,
                                                   RAZOR_DETAIL_VERSION, &version,
-                                                  RAZOR_DETAIL_ARCH, &arch, NULL))
+                                                  RAZOR_DETAIL_ARCH, &arch,
+                                                  RAZOR_DETAIL_LAST))
                        fprintf(stderr, "%s is needed by %s-%s.%s\n",
                                &pool[rp->name],
                                name, version, arch);
@@ -763,7 +770,8 @@ describe_unsatisfied(struct razor_set *set, struct razor_property *rp)
                while (razor_package_iterator_next(&pi, &pkg,
                                                   RAZOR_DETAIL_NAME, &name,
                                                   RAZOR_DETAIL_VERSION, &version,
-                                                  RAZOR_DETAIL_ARCH, &arch, NULL))
+                                                  RAZOR_DETAIL_ARCH, &arch,
+                                                  RAZOR_DETAIL_LAST))
                        fprintf(stderr, "%s %s %s is needed by %s-%s.%s\n",
                                &pool[rp->name],
                                razor_property_relation_to_string(rp),
index 98b4ff1..71ed6fe 100644 (file)
@@ -61,7 +61,9 @@ create_iterator_from_argv(struct razor_set *set, int argc, const char *argv[])
                iter = razor_package_iterator_create(set);
                pattern = argv[i];
                count = 0;
-               while (razor_package_iterator_next(iter, &package, RAZOR_DETAIL_NAME, &name, NULL)) {
+               while (razor_package_iterator_next(iter, &package,
+                                                  RAZOR_DETAIL_NAME, &name,
+                                                  RAZOR_DETAIL_LAST)) {
                        if (fnmatch(pattern, name, 0) != 0)
                                continue;
 
@@ -89,7 +91,8 @@ list_packages(struct razor_package_iterator *iter, uint32_t flags)
        while (razor_package_iterator_next(iter, &package,
                                           RAZOR_DETAIL_NAME, &name,
                                           RAZOR_DETAIL_VERSION, &version,
-                                          RAZOR_DETAIL_ARCH, &arch, NULL)) {
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST)) {
                if (flags & LIST_PACKAGES_ONLY_NAMES)
                        printf("%s\n", name);
                else
@@ -167,7 +170,10 @@ list_properties(int argc, const char *argv[], uint32_t type)
        set = razor_set_open(repo_filename);
        pi = create_iterator_from_argv(set, argc, argv);
        while (razor_package_iterator_next(pi, &package,
-                                          &name, &version, &arch))
+                                          RAZOR_DETAIL_NAME, &name,
+                                          RAZOR_DETAIL_VERSION, &version,
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST))
                list_package_properties(set, package, type);
        razor_package_iterator_destroy(pi);
        razor_set_destroy(set);
@@ -253,7 +259,10 @@ command_list_package_files(int argc, const char *argv[])
 
        pi = create_iterator_from_argv(set, argc, argv);
        while (razor_package_iterator_next(pi, &package,
-                                          &name, &version, &arch))
+                                          RAZOR_DETAIL_NAME, &name,
+                                          RAZOR_DETAIL_VERSION, &version,
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST))
                razor_set_list_package_files(set, package);
        razor_package_iterator_destroy(pi);
 
@@ -445,7 +454,8 @@ mark_packages_for_update(struct razor_transaction *trans,
 
        pi = razor_package_iterator_create(set);
        while (razor_package_iterator_next(pi, &package,
-                                          RAZOR_DETAIL_NAME, &name, NULL)) {
+                                          RAZOR_DETAIL_NAME, &name,
+                                          RAZOR_DETAIL_LAST)) {
                if (pattern && fnmatch(pattern, name, 0) == 0) {
                        razor_transaction_update_package(trans, package);
                        matches++;
@@ -466,7 +476,9 @@ mark_packages_for_removal(struct razor_transaction *trans,
        int matches = 0;
 
        pi = razor_package_iterator_create(set);
-       while (razor_package_iterator_next(pi, &package, RAZOR_DETAIL_NAME, &name, NULL)) {
+       while (razor_package_iterator_next(pi, &package,
+                                          RAZOR_DETAIL_NAME, &name,
+                                          RAZOR_DETAIL_LAST)) {
                if (pattern && fnmatch(pattern, name, 0) == 0) {
                        razor_transaction_remove_package(trans, package);
                        matches++;
@@ -676,7 +688,8 @@ download_packages(struct razor_set *system, struct razor_set *next)
        while (razor_package_iterator_next(pi, &package,
                                           RAZOR_DETAIL_NAME, &name,
                                           RAZOR_DETAIL_VERSION, &version,
-                                          RAZOR_DETAIL_ARCH, &arch, NULL)) {
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST)) {
                snprintf(url, sizeof url,
                         "%s/Packages/%s",
                         yum_url, rpm_filename(name, version, arch));
@@ -708,7 +721,8 @@ install_packages(struct razor_set *system, struct razor_set *next)
        while (razor_package_iterator_next(pi, &package,
                                           RAZOR_DETAIL_NAME, &name,
                                           RAZOR_DETAIL_VERSION, &version,
-                                          RAZOR_DETAIL_ARCH, &arch, NULL)) {
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST)) {
                printf("install %s-%s\n", name, version);
 
                snprintf(file, sizeof file,
@@ -816,7 +830,8 @@ command_download(int argc, const char *argv[])
        while (razor_package_iterator_next(pi, &package,
                                           RAZOR_DETAIL_NAME, &name,
                                           RAZOR_DETAIL_VERSION, &version,
-                                          RAZOR_DETAIL_ARCH, &arch, NULL)) {
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST)) {
                if (pattern && fnmatch(pattern, name, 0) != 0)
                        continue;
 
@@ -859,7 +874,8 @@ command_info(int argc, const char *argv[])
        while (razor_package_iterator_next(pi, &package,
                                           RAZOR_DETAIL_NAME, &name,
                                           RAZOR_DETAIL_VERSION, &version,
-                                          RAZOR_DETAIL_ARCH, &arch, NULL)) {
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST)) {
                if (pattern && fnmatch(pattern, name, 0) != 0)
                        continue;
 
@@ -868,7 +884,7 @@ command_info(int argc, const char *argv[])
                                           RAZOR_DETAIL_DESCRIPTION, &description,
                                           RAZOR_DETAIL_URL, &url,
                                           RAZOR_DETAIL_LICENSE, &license,
-                                          NULL);
+                                          RAZOR_DETAIL_LAST);
 
                printf ("Name:        %s\n", name);
                printf ("Arch:        %s\n", arch);
@@ -920,7 +936,7 @@ command_search(int argc, const char *argv[])
                                           RAZOR_DETAIL_DESCRIPTION, &description,
                                           RAZOR_DETAIL_URL, &url,
                                           RAZOR_DETAIL_LICENSE, &license,
-                                          NULL)) {
+                                          RAZOR_DETAIL_LAST)) {
                if (!fnmatch(pattern, name, FNM_CASEFOLD) ||
                    !fnmatch(pattern, url, FNM_CASEFOLD) ||
                    !fnmatch(pattern, summary, FNM_CASEFOLD) ||
index bd31434..add25c8 100644 (file)
--- a/src/rpm.c
+++ b/src/rpm.c
@@ -313,7 +313,8 @@ add_command_line_packages(struct razor_set *set,
        pi = razor_package_iterator_create(set);
 
        while (razor_package_iterator_next(pi, &package,
-                                          RAZOR_DETAIL_NAME, &name, NULL)) {
+                                          RAZOR_DETAIL_NAME, &name,
+                                          RAZOR_DETAIL_LAST)) {
                while (cmp = strcmp(argv[i], name), cmp < 0 && i < argc) {
                        fprintf(stderr, "error: package %s is not installed\n",
                                argv[i]);
@@ -422,7 +423,7 @@ print_package_info(struct razor_set *set, struct razor_package *package,
                                   RAZOR_DETAIL_DESCRIPTION, &description,
                                   RAZOR_DETAIL_URL, &url,
                                   RAZOR_DETAIL_LICENSE, &license,
-                                  NULL);
+                                  RAZOR_DETAIL_LAST);
 
        printf("Name:        %s\n", name);
        printf("Arch:        %s\n", arch);
@@ -494,7 +495,8 @@ command_query(int argc, const char *argv[])
        while (razor_package_iterator_next(pi, &package,
                                           RAZOR_DETAIL_NAME, &name,
                                           RAZOR_DETAIL_VERSION, &version,
-                                          RAZOR_DETAIL_ARCH, &arch, NULL)) {
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST)) {
                if (option_conflicts)
                        print_package_properties(set, package,
                                                 RAZOR_PROPERTY_CONFLICTS);
@@ -548,7 +550,8 @@ command_verify(int argc, const char *argv[])
        while (razor_package_iterator_next(pi, &package,
                                           RAZOR_DETAIL_NAME, &name,
                                           RAZOR_DETAIL_VERSION, &version,
-                                          RAZOR_DETAIL_ARCH, &arch, NULL)) {
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST)) {
                printf("verify %s-%s.%s - not implemented\n",
                       name, version, arch);
        }
@@ -593,7 +596,7 @@ command_erase(int argc, const char *argv[])
        add_command_line_packages(set, query, argc, argv);
 
        pi = razor_package_query_finish(query);
-       while (razor_package_iterator_next(pi, &package, NULL))
+       while (razor_package_iterator_next(pi, &package, RAZOR_DETAIL_LAST))
                razor_transaction_remove_package(trans, package);
        razor_package_iterator_destroy(pi);
 
@@ -635,7 +638,7 @@ command_install(int argc, const char *argv[])
        trans = razor_transaction_create(set, upstream);
 
        pi = razor_package_iterator_create(upstream);
-       while (razor_package_iterator_next(pi, &package, NULL))
+       while (razor_package_iterator_next(pi, &package, RAZOR_DETAIL_LAST))
                razor_transaction_install_package(trans, package);
        razor_package_iterator_destroy(pi);
 
@@ -677,7 +680,7 @@ command_update(int argc, const char *argv[])
        trans = razor_transaction_create(set, upstream);
 
        pi = razor_package_iterator_create(upstream);
-       while (razor_package_iterator_next(pi, &package, NULL))
+       while (razor_package_iterator_next(pi, &package, RAZOR_DETAIL_LAST))
                razor_transaction_update_package(trans, package);
        razor_package_iterator_destroy(pi);
 
index bd7aa17..99b4d00 100644 (file)
@@ -293,7 +293,10 @@ get_package(struct razor_set *set, const char *package)
        const char *name, *version, *arch;
 
        pi = razor_package_iterator_create(set);
-       while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
+       while (razor_package_iterator_next(pi, &p, RAZOR_DETAIL_NAME, &name,
+                                          RAZOR_DETAIL_VERSION, &version,
+                                          RAZOR_DETAIL_ARCH, &arch,
+                                          RAZOR_DETAIL_LAST)) {
                if (strcmp(package, name) == 0)
                        break;
        }