return PyUnicode_FromString(path);
}
-static PyObject* PyList_FromRelationList(char** deps) {
- PyObject* list = PyList_New(0);
- if (list == NULL)
- return NULL;
-
- // Empty list?
- if (!deps)
- return list;
+static PyObject* Package_get_deps(PackageObject* self, int what) {
+ char** deps = NULL;
- for (char** dep = deps; *dep; dep++) {
- PyObject* obj = PyUnicode_FromString(*dep);
- if (!obj)
- break;
-
- PyList_Append(list, obj);
- Py_DECREF(obj);
- }
-
- return list;
-}
-
-static PyObject* Package_get_provides(PackageObject* self) {
- char** deps = pakfire_package_get_deps(self->package, PAKFIRE_PKG_PROVIDES);
+ // Fetch dependencies
+ deps = pakfire_package_get_deps(self->package, what);
- PyObject* list = PyList_FromRelationList(deps);
+ // Convert it all into Python stuff
+ PyObject* list = PyUnicodeList_FromStringArray((const char**)deps);
// Cleanup
if (deps)
return list;
}
-static PyObject* Package_get_requires(PackageObject* self) {
- char** deps = pakfire_package_get_deps(self->package, PAKFIRE_PKG_REQUIRES);
-
- PyObject* list = PyList_FromRelationList(deps);
-
- // Cleanup
- if (deps)
- pakfire_strings_free(deps);
+static PyObject* Package_get_provides(PackageObject* self) {
+ return Package_get_deps(self, PAKFIRE_PKG_PROVIDES);
+}
- return list;
+static PyObject* Package_get_requires(PackageObject* self) {
+ return Package_get_deps(self, PAKFIRE_PKG_REQUIRES);
}
static PyObject* Package_get_obsoletes(PackageObject* self) {
- char** deps = pakfire_package_get_deps(self->package, PAKFIRE_PKG_OBSOLETES);
-
- PyObject* list = PyList_FromRelationList(deps);
-
- // Cleanup
- if (deps)
- pakfire_strings_free(deps);
-
- return list;
+ return Package_get_deps(self, PAKFIRE_PKG_OBSOLETES);
}
static PyObject* Package_get_conflicts(PackageObject* self) {
- char** deps = pakfire_package_get_deps(self->package, PAKFIRE_PKG_CONFLICTS);
-
- PyObject* list = PyList_FromRelationList(deps);
-
- // Cleanup
- if (deps)
- pakfire_strings_free(deps);
-
- return list;
+ return Package_get_deps(self, PAKFIRE_PKG_CONFLICTS);
}
static PyObject* Package_get_recommends(PackageObject* self) {
- char** deps = pakfire_package_get_deps(self->package, PAKFIRE_PKG_RECOMMENDS);
-
- PyObject* list = PyList_FromRelationList(deps);
-
- // Cleanup
- if (deps)
- pakfire_strings_free(deps);
-
- return list;
+ return Package_get_deps(self, PAKFIRE_PKG_RECOMMENDS);
}
static PyObject* Package_get_suggests(PackageObject* self) {
- char** deps = pakfire_package_get_deps(self->package, PAKFIRE_PKG_SUGGESTS);
-
- PyObject* list = PyList_FromRelationList(deps);
-
- // Cleanup
- if (deps)
- pakfire_strings_free(deps);
-
- return list;
+ return Package_get_deps(self, PAKFIRE_PKG_SUGGESTS);
}
static PyObject* Package_get_reverse_requires(PackageObject* self) {