#include <Python.h>
#include <pakfire/archive.h>
+#include <pakfire/package.h>
+#include <pakfire/repo.h>
#include <pakfire/util.h>
#include "archive.h"
#include "errors.h"
+#include "package.h"
static PyObject* Archive_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
ArchiveObject* self = (ArchiveObject *)type->tp_alloc(type, 0);
Py_RETURN_NONE;
}
+static PyObject* Archive_get_package(ArchiveObject* self) {
+ Pakfire pakfire = pakfire_archive_get_pakfire(self->archive);
+
+ PakfireRepo repo = pakfire_repo_create(pakfire, "dummy");
+ if (!repo)
+ return NULL;
+
+ // Make the package
+ PakfirePackage pkg = pakfire_archive_make_package(self->archive, repo);
+
+ // Make the Python object
+ PyObject* ret = new_package(&PackageType, pkg);
+ printf("ret = %p\n", ret);
+
+ // Cleanup
+ pakfire_package_unref(pkg);
+ pakfire_repo_unref(repo);
+ pakfire_unref(pakfire);
+
+ return ret;
+}
+
static struct PyMethodDef Archive_methods[] = {
{
"extract",
METH_VARARGS,
NULL
},
+ {
+ "get_package",
+ (PyCFunction)Archive_get_package,
+ METH_NOARGS,
+ NULL
+ },
{
"read",
(PyCFunction)Archive_read,
return NULL;
}
+PAKFIRE_EXPORT Pakfire pakfire_archive_get_pakfire(PakfireArchive archive) {
+ return pakfire_ref(archive->pakfire);
+}
+
static int pakfire_archive_parse_entry_format(PakfireArchive archive,
struct archive* a, struct archive_entry* e) {
char format[10];
PakfireArchive pakfire_archive_create(Pakfire pakfire);
PakfireArchive pakfire_archive_ref(PakfireArchive archive);
PakfireArchive pakfire_archive_unref(PakfireArchive archive);
+Pakfire pakfire_archive_get_pakfire(PakfireArchive archive);
char* pakfire_archive_get(PakfireArchive archive, const char* key);
pakfire_archive_extraction_path;
pakfire_archive_get_filelist;
pakfire_archive_get_format;
+ pakfire_archive_get_pakfire;
pakfire_archive_get_path;
pakfire_archive_get_signatures;
pakfire_archive_get_size;
+ pakfire_archive_make_package;
pakfire_archive_open;
pakfire_archive_read;
pakfire_archive_ref;