]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Always extract payload
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 20 Apr 2021 11:15:58 +0000 (11:15 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 20 Apr 2021 11:15:58 +0000 (11:15 +0000)
There is no point in implementing anything else

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/archive.c
src/libpakfire/archive.c
src/libpakfire/include/pakfire/archive.h
src/libpakfire/step.c
tests/libpakfire/archive.c

index 88513ae042c9f4e6c563f47ba16aae44aa313ca9..ddf5c9b904beb2e48da187bc6e294bb92c82855c 100644 (file)
@@ -66,26 +66,16 @@ static PyObject* Archive_get_format(ArchiveObject* self) {
        return PyLong_FromUnsignedLong(format);
 }
 
-static PyObject* Archive_read(ArchiveObject* self, PyObject* args, PyObject* kwds) {
-       char* kwlist[] = {"filename", "payload", NULL};
-
+static PyObject* Archive_read(ArchiveObject* self, PyObject* args) {
        const char* filename = NULL;
-       int payload = 0;
 
-       if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist, &filename, &payload))
+       if (!PyArg_ParseTuple(args, "s", &filename))
                return NULL;
 
-       int flags = 0;
-       if (payload)
-               flags |= PAKFIRE_ARCHIVE_USE_PAYLOAD;
-
-       if (!filename)
-               Py_RETURN_NONE;
-
        char* data = NULL;
        size_t data_size = 0;
 
-       int ret = pakfire_archive_read(self->archive, filename, &data, &data_size, flags);
+       int ret = pakfire_archive_read(self->archive, filename, &data, &data_size);
        if (ret) {
                free(data);
 
@@ -141,7 +131,7 @@ static PyObject* Archive_extract(ArchiveObject* self, PyObject* args) {
        char* prefix = pakfire_archive_extraction_path(self->archive, target);
 
        // Extract payload
-       int r = pakfire_archive_extract(self->archive, prefix, PAKFIRE_ARCHIVE_USE_PAYLOAD);
+       int r = pakfire_archive_extract(self->archive, prefix);
        free(prefix);
 
        // Throw an exception on error
@@ -214,7 +204,7 @@ static struct PyMethodDef Archive_methods[] = {
        {
                "read",
                (PyCFunction)Archive_read,
-               METH_VARARGS|METH_KEYWORDS,
+               METH_VARARGS,
                NULL
        },
        {
index 8563252432b88786484271703b7f0bc5eedc2ebd..7e809cbc828b0581ac3da48d1509cc82b51c10d6 100644 (file)
@@ -714,38 +714,35 @@ PAKFIRE_EXPORT char* pakfire_archive_get(PakfireArchive archive, const char* nam
 }
 
 PAKFIRE_EXPORT int pakfire_archive_read(PakfireArchive archive, const char* filename,
-               char** data, size_t* data_size, int flags) {
+               char** data, size_t* data_size) {
        struct archive* a;
-       struct archive* pa = NULL;
+       struct archive* payload = NULL;
        struct archive_entry* entry;
 
+       // Strip leading / from filenames, because the payload does
+       // not have leading slashes.
+       while (*filename == '/')
+               filename++;
+
        int r = archive_open(archive, &a);
        if (r)
-               goto out;
-
-       int use_payload = (flags & PAKFIRE_ARCHIVE_USE_PAYLOAD);
-
-       if (use_payload) {
-               pa = pakfire_archive_open_payload(archive, a);
+               goto ERROR;
 
-               // Strip leading / from filenames, because the payload does
-               // not have leading slashes.
-               if (*filename == '/')
-                       filename++;
-       }
+       payload = pakfire_archive_open_payload(archive, a);
+       if (!payload)
+               goto ERROR;
 
-       r = find_archive_entry(&entry, use_payload ? pa : a, filename);
+       r = find_archive_entry(&entry, payload, filename);
        if (r) {
-               goto out;
+               goto ERROR;
        }
 
-       r = pakfire_archive_copy_data_to_buffer(archive->pakfire, use_payload ? pa : a, entry,
+       r = pakfire_archive_copy_data_to_buffer(archive->pakfire, payload, entry,
                data, data_size);
 
-out:
-       if (pa)
-               archive_read_free(pa);
-
+ERROR:
+       if (payload)
+               archive_read_free(payload);
        archive_read_free(a);
 
        return r;
@@ -853,7 +850,7 @@ ERROR:
        return r;
 }
 
-PAKFIRE_EXPORT int pakfire_archive_extract(PakfireArchive archive, const char* prefix, int flags) {
+PAKFIRE_EXPORT int pakfire_archive_extract(PakfireArchive archive, const char* prefix) {
        struct archive* a = NULL;
        struct archive* payload = NULL;
        struct archive* writer = NULL;
@@ -869,12 +866,10 @@ PAKFIRE_EXPORT int pakfire_archive_extract(PakfireArchive archive, const char* p
        if (r)
                return r;
 
-       // Open payload if requested
-       if (flags & PAKFIRE_ARCHIVE_USE_PAYLOAD) {
-               payload = pakfire_archive_open_payload(archive, a);
-               if (!payload)
-                       goto ERROR;
-       }
+       // Open payload
+       payload = pakfire_archive_open_payload(archive, a);
+       if (!payload)
+               goto ERROR;
 
        // Allocate writer
        writer = pakfire_make_archive_disk_writer(archive->pakfire);
@@ -887,7 +882,7 @@ PAKFIRE_EXPORT int pakfire_archive_extract(PakfireArchive archive, const char* p
        };
 
        // Extract everything
-       r = pakfire_archive_walk_entries(archive, (payload) ? payload : a,
+       r = pakfire_archive_walk_entries(archive, payload,
                pakfire_archive_extract_entry, &extractor);
 
 ERROR:
@@ -999,7 +994,7 @@ static pakfire_archive_verify_status_t pakfire_archive_verify_checksums(PakfireA
 
        // Load the checksums file
        int r = pakfire_archive_read(archive, PAKFIRE_ARCHIVE_FN_CHECKSUMS,
-               (void *)&data, &size, 0);
+               (void *)&data, &size);
        if (r) {
                ERROR(archive->pakfire, "Could not read %s from archive %p\n",
                        PAKFIRE_ARCHIVE_FN_CHECKSUMS, archive);
index 38ee778535ef5aad334ceaba031642b09fa769e7..e446a7e284a42f5f3858b23616cc1a3d8c73bb9f 100644 (file)
@@ -36,11 +36,6 @@ typedef enum pakfire_archive_verify_status {
        PAKFIRE_ARCHIVE_VERIFY_ERROR,
 } pakfire_archive_verify_status_t;
 
-typedef enum pakfire_archive_flags {
-       PAKFIRE_ARCHIVE_USE_PAYLOAD                             = 1 << 0,
-       PAKFIRE_ARCHIVE_ADD_FILENAME_PREFIX             = 1 << 1,
-} pakfire_archive_flags_t;
-
 int pakfire_archive_open(PakfireArchive* archive, Pakfire pakfire, const char* path);
 PakfireArchive pakfire_archive_ref(PakfireArchive archive);
 PakfireArchive pakfire_archive_unref(PakfireArchive archive);
@@ -49,8 +44,8 @@ Pakfire pakfire_archive_get_pakfire(PakfireArchive archive);
 char* pakfire_archive_get(PakfireArchive archive, const char* namespace, const char* key);
 
 int pakfire_archive_read(PakfireArchive archive, const char* filename,
-       char** data, size_t* data_size, int flags);
-int pakfire_archive_extract(PakfireArchive archive, const char* prefix, int flags);
+       char** data, size_t* data_size);
+int pakfire_archive_extract(PakfireArchive archive, const char* prefix);
 char* pakfire_archive_extraction_path(PakfireArchive archive, const char* target);
 
 const char* pakfire_archive_get_path(PakfireArchive archive);
index c1bce6f993ee99963e4d517604ebdb16ce0a0054..fad805fa6f914180b84ae2ed14cd1778a02c6965 100644 (file)
@@ -293,7 +293,7 @@ static int pakfire_step_extract(PakfireStep step) {
        }
 
        // Extract payload to the root of the Pakfire instance
-       int r = pakfire_archive_extract(step->archive, NULL, PAKFIRE_ARCHIVE_USE_PAYLOAD);
+       int r = pakfire_archive_extract(step->archive, NULL);
        if (r) {
                char* nevra = pakfire_package_get_nevra(step->package);
                ERROR(step->pakfire, "Could not extract package %s: %d\n", nevra, r);
index 395e1a1641236a7eb79e3afe132b50d8a932678e..09593f4988172f6b75650a2d8d68afa1a6c7d430 100644 (file)
@@ -74,7 +74,7 @@ static int test_extract(const struct test* t) {
        ASSERT_SUCCESS(pakfire_archive_open(&archive, t->pakfire, path));
 
        // Extract the archive payload
-       int r = pakfire_archive_extract(archive, NULL, PAKFIRE_ARCHIVE_USE_PAYLOAD);
+       int r = pakfire_archive_extract(archive, NULL);
        ASSERT(r == 0);
 
 #if 0