return -1;
}
+ Pakfire pakfire = pakfire_package_get_pakfire(self->package);
+
// Create a new filelist
PakfireFilelist filelist;
- int r = pakfire_filelist_create(&filelist);
+ int r = pakfire_filelist_create(&filelist, pakfire);
if (r) {
+ pakfire_unref(pakfire);
errno = -r;
PyErr_SetFromErrno(PyExc_OSError);
if (!PyUnicode_Check(item)) {
Py_DECREF(item);
pakfire_filelist_unref(filelist);
+ pakfire_unref(pakfire);
PyErr_SetString(PyExc_AttributeError, "Expected a string");
return -1;
// Create a new file
PakfireFile file;
- r = pakfire_file_create(&file);
+ r = pakfire_file_create(&file, pakfire);
if (r) {
errno = -r;
PyErr_SetFromErrno(PyExc_OSError);
pakfire_filelist_unref(filelist);
+ pakfire_unref(pakfire);
return -1;
}
pakfire_filelist_unref(filelist);
if (r) {
+ pakfire_unref(pakfire);
+
errno = -r;
PyErr_SetFromErrno(PyExc_OSError);
return -1;
}
+ pakfire_unref(pakfire);
+
return 0;
}
data[data_size] = '\0';
if (data_size > 0) {
- r = pakfire_filelist_create_from_file(&archive->filelist, data, archive->format);
+ r = pakfire_filelist_create_from_file(&archive->filelist, archive->pakfire,
+ data, archive->format);
}
free(data);
}
// Create a new file object
- r = pakfire_file_create(&file);
+ r = pakfire_file_create(&file, archive->pakfire);
if (r)
return r;
#include <pakfire/constants.h>
#include <pakfire/file.h>
+#include <pakfire/pakfire.h>
#include <pakfire/private.h>
#include <pakfire/util.h>
struct _PakfireFile {
+ Pakfire pakfire;
int nrefs;
char name[PATH_MAX];
//int is_datafile;
};
-PAKFIRE_EXPORT int pakfire_file_create(PakfireFile* file) {
+PAKFIRE_EXPORT int pakfire_file_create(PakfireFile* file, Pakfire pakfire) {
PakfireFile f = calloc(1, sizeof(*f));
if (!f)
return -ENOMEM;
+ f->pakfire = pakfire_ref(pakfire);
f->nrefs = 1;
*file = f;
}
static void pakfire_file_free(PakfireFile file) {
+ pakfire_unref(file->pakfire);
+
if (file->chksum)
free(file->chksum);
#include <pakfire/file.h>
#include <pakfire/filelist.h>
+#include <pakfire/pakfire.h>
#include <pakfire/private.h>
#include <pakfire/util.h>
struct _PakfireFilelist {
+ Pakfire pakfire;
int nrefs;
PakfireFile* elements;
return 0;
}
-PAKFIRE_EXPORT int pakfire_filelist_create(PakfireFilelist* list) {
+PAKFIRE_EXPORT int pakfire_filelist_create(PakfireFilelist* list, Pakfire pakfire) {
PakfireFilelist l = calloc(1, sizeof(*l));
if (!l)
return -ENOMEM;
+ l->pakfire = pakfire_ref(pakfire);
l->nrefs = 1;
*list = l;
static void pakfire_filelist_free(PakfireFilelist list) {
pakfire_filelist_clear(list);
+ pakfire_unref(list->pakfire);
free(list);
}
qsort(list->elements, list->size, sizeof(*list->elements), __sort);
}
-static int pakfire_filelist_parse_line(PakfireFile* file, char* line, unsigned int format) {
+static int pakfire_filelist_parse_line(PakfireFile* file, Pakfire pakfire,
+ char* line, unsigned int format) {
unsigned int i = 0;
// Allocate file
- int r = pakfire_file_create(file);
+ int r = pakfire_file_create(file, pakfire);
if (r)
return r;
return 0;
}
-int pakfire_filelist_create_from_file(PakfireFilelist* list, const char* data, unsigned int format) {
- int r = pakfire_filelist_create(list);
+int pakfire_filelist_create_from_file(PakfireFilelist* list, Pakfire pakfire,
+ const char* data, unsigned int format) {
+ int r = pakfire_filelist_create(list, pakfire);
if (r)
return r;
if (*line == '\0')
break;
- int r = pakfire_filelist_parse_line(&file, line, format);
+ int r = pakfire_filelist_parse_line(&file, pakfire, line, format);
if (r)
goto ERROR;
#include <pakfire/types.h>
-int pakfire_file_create(PakfireFile* file);
+int pakfire_file_create(PakfireFile* file, Pakfire pakfire);
PakfireFile pakfire_file_ref(PakfireFile file);
PakfireFile pakfire_file_unref(PakfireFile file);
#include <pakfire/types.h>
-int pakfire_filelist_create(PakfireFilelist* list);
+int pakfire_filelist_create(PakfireFilelist* list, Pakfire pakfire);
PakfireFilelist pakfire_filelist_ref(PakfireFilelist list);
PakfireFilelist pakfire_filelist_unref(PakfireFilelist list);
#ifdef PAKFIRE_PRIVATE
-int pakfire_filelist_create_from_file(PakfireFilelist* list, const char* data, unsigned int format);
+int pakfire_filelist_create_from_file(PakfireFilelist* list, Pakfire pakfire,
+ const char* data, unsigned int format);
#endif
if (found_marker) {
PakfireFile file;
- int r = pakfire_file_create(&file);
+ int r = pakfire_file_create(&file, pkg->pakfire);
if (r)
return r;
while (dataiterator_step(&di)) {
PakfireFile file;
- r = pakfire_file_create(&file);
+ r = pakfire_file_create(&file, pkg->pakfire);
if (r)
return r;
PAKFIRE_EXPORT PakfireFilelist pakfire_package_get_filelist(PakfirePackage pkg) {
PakfireFilelist filelist;
- int r = pakfire_filelist_create(&filelist);
+ int r = pakfire_filelist_create(&filelist, pkg->pakfire);
if (r)
return NULL;
p->pkg = pakfire_package_ref(pkg);
// Create a new filelist
- int r = pakfire_filelist_create(&p->filelist);
+ int r = pakfire_filelist_create(&p->filelist, p->pakfire);
if (r)
goto ERROR;
// Create a file
PakfireFile file;
- r = pakfire_file_create(&file);
+ r = pakfire_file_create(&file, packager->pakfire);
if (r)
return r;