]> git.ipfire.org Git - location/libloc.git/commitdiff
python: Save path when opening the database
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 8 Jan 2018 17:46:17 +0000 (17:46 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 8 Jan 2018 17:46:17 +0000 (17:46 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/python/database.c
src/python/database.h

index 7bac3bca0b8883af29804e68800149b1acb8b01d..f04a44dc951cb4598d71ea4858eaa13e17827ecb 100644 (file)
@@ -34,6 +34,9 @@ static void Database_dealloc(DatabaseObject* self) {
        if (self->db)
                loc_database_unref(self->db);
 
+       if (self->path)
+               free(self->path);
+
        Py_TYPE(self)->tp_free((PyObject* )self);
 }
 
@@ -43,8 +46,10 @@ static int Database_init(DatabaseObject* self, PyObject* args, PyObject* kwargs)
        if (!PyArg_ParseTuple(args, "s", &path))
                return -1;
 
+       self->path = strdup(path);
+
        // Open the file for reading
-       FILE* f = fopen(path, "r");
+       FILE* f = fopen(self->path, "r");
        if (!f)
                return -1;
 
@@ -59,6 +64,10 @@ static int Database_init(DatabaseObject* self, PyObject* args, PyObject* kwargs)
        return 0;
 }
 
+static PyObject* Database_repr(DatabaseObject* self) {
+       return PyUnicode_FromFormat("<Database %s>", self->path);
+}
+
 static PyObject* Database_get_description(DatabaseObject* self) {
        const char* description = loc_database_get_description(self->db);
 
@@ -181,4 +190,5 @@ PyTypeObject DatabaseType = {
        tp_doc:                 "Database object",
        tp_methods:             Database_methods,
        tp_getset:              Database_getsetters,
+       tp_repr:                (reprfunc)Database_repr,
 };
index 2609d1bf78bb0b1b161a8068647e1da290f60fa6..4dc9ea48ba67e8ea960ad8f040c7e3ff3601550f 100644 (file)
@@ -24,6 +24,7 @@
 typedef struct {
        PyObject_HEAD
        struct loc_database* db;
+       char* path;
 } DatabaseObject;
 
 extern PyTypeObject DatabaseType;