}
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;
}
&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;
}
}
&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;
}
}
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];
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;
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;
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;
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,
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)
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))