// Archive
struct archive* archive;
+
+ // Resolver for hardlinks
+ struct archive_entry_linkresolver* linkresolver;
};
/*
return 0;
}
+static int pakfire_archive_writer_setup_linkresolver(struct pakfire_archive_writer* self) {
+ // Setup the link resolver
+ self->linkresolver = archive_entry_linkresolver_new();
+ if (!self->linkresolver) {
+ ERROR(self->ctx, "Could not setup link resolver: %m\n");
+ return -errno;
+ }
+
+ // Set the link resolver strategy
+ archive_entry_linkresolver_set_strategy(
+ self->linkresolver, archive_format(self->archive));
+
+ return 0;
+}
+
static void pakfire_archive_writer_free(struct pakfire_archive_writer* self) {
+ if (self->linkresolver)
+ archive_entry_linkresolver_free(self->linkresolver);
if (self->archive)
archive_write_free(self->archive);
if (self->pakfire)
if (r < 0)
goto ERROR;
+ // Setup link resolver
+ r = pakfire_archive_writer_setup_linkresolver(self);
+ if (r < 0)
+ goto ERROR;
+
// Return the pointer
*writer = self;
return 0;