]> git.ipfire.org Git - pakfire.git/commitdiff
file: Export capabilities in Python
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 19 Mar 2023 18:39:03 +0000 (18:39 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 19 Mar 2023 18:39:03 +0000 (18:39 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/file.c

index fc4df125a00c3f7d80e003195053451f19bb635c..ca0d32d7ffdb76fa59df36283b76ce1c70edc6d0 100644 (file)
@@ -258,6 +258,31 @@ static int File_set_mimetype(FileObject* self, PyObject* value) {
        return 0;
 }
 
+static PyObject* File_get_capabilities(FileObject* self) {
+       PyObject* result = NULL;
+       char* caps = NULL;
+
+       // No capabilities
+       if (!pakfire_file_has_caps(self->file))
+               Py_RETURN_NONE;
+
+       // Fetch capabilities
+       caps = pakfire_file_get_caps(self->file);
+       if (!caps) {
+               PyErr_SetFromErrno(PyExc_OSError);
+               goto ERROR;
+       }
+
+       // Convert to Python string object
+       result = PyUnicode_FromString(caps);
+
+ERROR:
+       if (caps)
+               free(caps);
+
+       return result;
+}
+
 static struct PyMethodDef File_methods[] = {
        {
                "digest",
@@ -269,6 +294,13 @@ static struct PyMethodDef File_methods[] = {
 };
 
 static struct PyGetSetDef File_getsetters[] = {
+       {
+               "capabilities",
+               (getter)File_get_capabilities,
+               NULL,
+               NULL,
+               NULL,
+       },
        {
                "ctime",
                (getter)File_get_ctime,