}
static int pakfire_archive_open_and_walk(struct pakfire_archive* archive,
- pakfire_archive_walk_callback walk_callback, pakfire_archive_walk_filter_callback filter_callback, void* data) {
+ pakfire_archive_walk_callback walk_callback,
+ pakfire_archive_walk_filter_callback filter_callback, void* data) {
struct archive* a = NULL;
int r;
}
static int pakfire_archive_read_metadata(struct pakfire_archive* archive) {
- struct archive* a = NULL;
int r;
CTX_DEBUG(archive->ctx, "Reading archive metadata...\n");
- // Open the archive
- r = pakfire_archive_open_archive(archive, &a);
- if (r < 0)
- goto ERROR;
-
// Check if the archive file actually has any contect
if (!archive->stat.st_size) {
CTX_ERROR(archive->ctx, "Trying to open an empty archive file\n");
- r = -EINVAL;
- goto ERROR;
+ return -EINVAL;
}
// Walk through the archive
- r = pakfire_archive_walk(archive, a,
+ r = pakfire_archive_open_and_walk(archive,
__pakfire_archive_read_metadata, __pakfire_archive_filter_metadata, NULL);
- if (r)
- goto ERROR;
+ if (r < 0)
+ return r;
// Check if we could successfully read something
if (!archive->format) {
CTX_DEBUG(archive->ctx, "Archive has an unknown format\n");
- r = -ENOMSG;
- goto ERROR;
+ return -ENOMSG;
}
// Check if we have read some metadata
if (!archive->metadata) {
CTX_DEBUG(archive->ctx, "Archive has no metadata\n");
- r = -ENOMSG;
- goto ERROR;
+ return -ENOMSG;
}
-ERROR:
- if (a)
- archive_read_close(a);
-
- return r;
+ return 0;
}
PAKFIRE_EXPORT int pakfire_archive_open(struct pakfire_archive** archive,
}
int pakfire_archive_apply_systemd_sysusers(struct pakfire_archive* archive) {
- struct archive* a = NULL;
- int r;
-
- // Open the archive
- r = pakfire_archive_open_archive(archive, &a);
- if (r < 0)
- goto ERROR;
-
- pakfire_archive_walk(archive, a, pakfire_archive_handle_systemd_sysusers,
+ pakfire_archive_open_and_walk(archive, pakfire_archive_handle_systemd_sysusers,
pakfire_archive_filter_systemd_sysusers, NULL);
-ERROR:
- if (a)
- archive_read_free(a);
-
return 0;
}