Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
return NULL;
}
+/*
+ Unlinks the archive.
+
+ We will keep the archive open so it can still be used.
+*/
+int pakfire_archive_unlink(struct pakfire_archive* archive) {
+ int r;
+
+ // We cannot do this if we don't have a path
+ if (!*archive->path)
+ return -ENOTSUP;
+
+ DEBUG(archive->ctx, "Unlinking %s\n", archive->path);
+
+ // Unlink the file
+ r = unlink(archive->path);
+ if (r < 0) {
+ switch (errno) {
+ case ENOENT:
+ break;
+
+ default:
+ ERROR(archive->ctx, "Could not unlink %s: %m\n", archive->path);
+ return -errno;
+ }
+ }
+
+ return 0;
+}
+
int pakfire_archive_copy(struct pakfire_archive* archive, const char* path) {
FILE* f = NULL;
int r;
int pakfire_archive_walk_payload(struct pakfire_archive* archive,
pakfire_archive_walk_callback callback, void* data);
+int pakfire_archive_unlink(struct pakfire_archive* archive);
int pakfire_archive_copy(struct pakfire_archive* archive, const char* path);
int pakfire_archive_link_or_copy(struct pakfire_archive* archive, const char* path);