razor_rpm_open() should take an error parameter, not an atomic
authorJ. Ali Harlow <ali@juiblex.co.uk>
Fri, 17 Feb 2012 18:35:10 +0000 (18:35 +0000)
committerJ. Ali Harlow <ali@juiblex.co.uk>
Fri, 17 Feb 2012 18:35:10 +0000 (18:35 +0000)
librazor/razor.h
librazor/rpm.c
src/main.c
src/rpm.c

index c004fcb..5c952bb 100644 (file)
@@ -453,7 +453,7 @@ const char *razor_relocations_apply(struct razor_relocations *relocations,
 void razor_relocations_destroy(struct razor_relocations *relocations);
 
 struct razor_rpm *razor_rpm_open(const char *filename,
-                                struct razor_atomic *atomic);
+                                struct razor_error **error);
 void razor_rpm_get_details(struct razor_rpm *rpm, ...);
 void razor_rpm_set_relocations(struct razor_rpm *rpm,
                               struct razor_relocations *relocations);
index a6434f1..59b7d8f 100644 (file)
@@ -602,28 +602,24 @@ razor_rpm_get_details(struct razor_rpm *rpm, ...)
 }
 
 RAZOR_EXPORT struct razor_rpm *
-razor_rpm_open(const char *filename, struct razor_atomic *atomic)
+razor_rpm_open(const char *filename, struct razor_error **error)
 {
        struct razor_rpm *rpm;
        struct rpm_header_index *base, *index;
-       struct razor_error *error = NULL;
        unsigned int count, i, nindex, hsize;
        const char *name, *prefix;
-       char *s;
 
        assert (filename != NULL);
 
        rpm = zalloc(sizeof *rpm);
        if (rpm == NULL) {
-               razor_atomic_abort(atomic, "Not enough memory");
+               razor_set_error(error, NULL, "Not enough memory");
                return NULL;
        }
        memset(rpm, 0, sizeof *rpm);
 
-       rpm->map = razor_file_get_contents(filename, &rpm->size, 0, &error);
+       rpm->map = razor_file_get_contents(filename, &rpm->size, 0, error);
        if (!rpm->map) {
-               razor_atomic_abort(atomic, razor_error_get_msg(error));
-               razor_error_free(error);
                free(rpm);
                return NULL;
        }
@@ -654,10 +650,8 @@ razor_rpm_open(const char *filename, struct razor_atomic *atomic)
                                              &count);
                if (name) {
                        razor_rpm_close(rpm);
-                       s = razor_concat(filename,
-                                        ": Old filenames not supported", NULL);
-                       razor_atomic_abort(atomic, s);
-                       free(s);
+                       razor_set_error(error, filename,
+                                       "Old filenames not supported");
                        return NULL;
                }
        }
@@ -676,11 +670,8 @@ razor_rpm_open(const char *filename, struct razor_atomic *atomic)
                                                &count);
                if (prefix) {
                        razor_rpm_close(rpm);
-                       s = razor_concat(filename,
-                                        ": Default prefix not supported",
-                                        NULL);
-                       razor_atomic_abort(atomic, s);
-                       free(s);
+                       razor_set_error(error, filename,
+                                       "Default prefix not supported");
                        return NULL;
                }
        }
index d406880..c5772a1 100644 (file)
@@ -699,6 +699,7 @@ command_import_rpms(int argc, const char *argv[])
        struct razor_importer *importer;
        struct razor_set *set;
        struct razor_rpm *rpm;
+       struct razor_error *error=NULL;
        struct razor_atomic *atomic;
        int len, imported_count = 0;
        char filename[256];
@@ -724,14 +725,13 @@ command_import_rpms(int argc, const char *argv[])
                        continue;
                snprintf(filename, sizeof filename,
                         "%s/%s", dirname, de->d_name);
-               atomic = razor_atomic_open("Read RPM");
-               rpm = razor_rpm_open(filename, atomic);
-               if (rpm == NULL)
-                       fprintf(stderr, "%s\n",
-                               razor_atomic_get_error_msg(atomic));
-               razor_atomic_destroy(atomic);
-               if (rpm == NULL)
+               rpm = razor_rpm_open(filename, &error);
+               if (rpm == NULL) {
+                       fprintf(stderr, "%s\n", razor_error_get_msg(error));
+                       razor_error_free(error);
+                       error=NULL;
                        continue;
+               }
                if (razor_importer_add_rpm(importer, rpm)) {
                        fprintf(stderr, "couldn't import %s\n", filename);
                        break;
@@ -830,6 +830,7 @@ relocate_packages(struct razor_set *set, struct razor_atomic *atomic,
        struct razor_package *package;
        struct razor_property *property;
        struct razor_rpm *rpm;
+       struct razor_error *error=NULL;
        const char *name, *version, *arch, *summary, *desc, *url, *license;
        const char *preunprog, *preun, *postunprog, *postun;
        const char *install_prefix;
@@ -856,9 +857,11 @@ relocate_packages(struct razor_set *set, struct razor_atomic *atomic,
                s = rpm_filename(name, version, arch);
                file = razor_concat("rpms/", s, NULL);
                free(s);
-               rpm = razor_rpm_open(file, atomic);
+               rpm = razor_rpm_open(file, &error);
                free(file);
                if (rpm == NULL) {
+                       razor_atomic_abort(atomic, razor_error_get_msg(error));
+                       razor_error_free(error);
                        razor_package_iterator_destroy(pkg_iter);
                        razor_importer_destroy(importer);
                        return NULL;
@@ -917,6 +920,7 @@ install_package(struct razor_transaction *trans, struct razor_set *set,
        const char *name, *version, *arch;
        char *file, *s;
        struct razor_rpm *rpm;
+       struct razor_error *error=NULL;
 
        razor_package_get_details(set, package,
                                  RAZOR_DETAIL_NAME, &name,
@@ -930,11 +934,12 @@ install_package(struct razor_transaction *trans, struct razor_set *set,
        s = rpm_filename(name, version, arch);
        file = razor_concat("rpms/", s, NULL);
        free(s);
-       rpm = razor_rpm_open(file, atomic);
+       rpm = razor_rpm_open(file, &error);
        free(file);
        if (rpm == NULL) {
-               fprintf(stderr, "%s\n",
-                       razor_atomic_get_error_msg(atomic));
+               razor_atomic_abort(atomic, razor_error_get_msg(error));
+               fprintf(stderr, "%s\n", razor_error_get_msg(error));
+               razor_error_free(error);
                return -1;
        }
        if (relocations)
index 87cea8f..5b2a908 100644 (file)
--- a/src/rpm.c
+++ b/src/rpm.c
@@ -447,16 +447,13 @@ static struct razor_set *
 create_set_from_command_line(int argc, const char *argv[])
 {
        struct razor_importer *importer;
-       struct razor_atomic *atomic;
        struct razor_rpm *rpm;
        int i;
 
        importer = razor_importer_create();
 
        for (i = 0; i < argc; i++) {
-               atomic = razor_atomic_open("Read RPM");
-               rpm = razor_rpm_open(argv[i], atomic);
-               razor_atomic_destroy(atomic);
+               rpm = razor_rpm_open(argv[i], NULL);
                if (rpm == NULL)
                        continue;
                if (razor_importer_add_rpm(importer, rpm))