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);
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
{
"read",
(PyCFunction)Archive_read,
- METH_VARARGS|METH_KEYWORDS,
+ METH_VARARGS,
NULL
},
{
}
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;
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;
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);
};
// Extract everything
- r = pakfire_archive_walk_entries(archive, (payload) ? payload : a,
+ r = pakfire_archive_walk_entries(archive, payload,
pakfire_archive_extract_entry, &extractor);
ERROR:
// 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);
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);
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);
}
// 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);
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