]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: Store mirrorlist in repository
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 22 Jan 2018 17:35:43 +0000 (18:35 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 22 Jan 2018 17:35:43 +0000 (18:35 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/repo.c
src/libpakfire/include/pakfire/repo.h
src/libpakfire/libpakfire.sym
src/libpakfire/repo.c

index 7f374d4d0ce7942f1866dc4aa0bc7f098a5aaaee..659f7e37d69ab2aae1397b3970a9b643305a735f 100644 (file)
@@ -174,6 +174,21 @@ static int Repo_set_keyfile(RepoObject* self, PyObject* value) {
        return pakfire_repo_set_keyfile(self->repo, keyfile);
 }
 
+static PyObject* Repo_get_mirrorlist(RepoObject* self) {
+       const char* mirrorlist = pakfire_repo_get_mirrorlist(self->repo);
+
+       return PyUnicode_FromString(mirrorlist);
+}
+
+static int Repo_set_mirrorlist(RepoObject* self, PyObject* value) {
+       const char* mirrorlist = NULL;
+
+       if (value != Py_None)
+               mirrorlist = PyUnicode_AsUTF8(value);
+
+       return pakfire_repo_set_mirrorlist(self->repo, mirrorlist);
+}
+
 static PyObject* Repo_read_solv(RepoObject* self, PyObject* args) {
        const char* filename = NULL;
 
@@ -391,6 +406,13 @@ static struct PyGetSetDef Repo_getsetters[] = {
                NULL,
                NULL
        },
+       {
+               "mirrorlist",
+               (getter)Repo_get_mirrorlist,
+               (setter)Repo_set_mirrorlist,
+               NULL,
+               NULL
+       },
        {
                "name",
                (getter)Repo_get_name,
index cbf01d97622e0b2003404d50c42b6f155c846eee..30050d1505ec6733c4e67af2eeaab74928c69a2d 100644 (file)
@@ -53,6 +53,9 @@ int pakfire_repo_set_baseurl(PakfireRepo repo, const char* baseurl);
 const char* pakfire_repo_get_keyfile(PakfireRepo repo);
 int pakfire_repo_set_keyfile(PakfireRepo repo, const char* keyfile);
 
+const char* pakfire_repo_get_mirrorlist(PakfireRepo repo);
+int pakfire_repo_set_mirrorlist(PakfireRepo repo, const char* mirrorlist);
+
 int pakfire_repo_is_installed_repo(PakfireRepo repo);
 
 int pakfire_repo_read_solv(PakfireRepo repo, const char* filename, int flags);
index d314cf131129144c2584aef34dcfeaa9aa9e647d..8dba79580d30fdfbe87112b8d7239862bb659ab4 100644 (file)
@@ -230,6 +230,7 @@ global:
        pakfire_repo_get_name;
        pakfire_repo_get_enabled;
        pakfire_repo_get_keyfile;
+       pakfire_repo_get_mirrorlist;
        pakfire_repo_get_pakfire;
        pakfire_repo_get_pool;
        pakfire_repo_get_priority;
@@ -242,6 +243,7 @@ global:
        pakfire_repo_set_baseurl;
        pakfire_repo_set_enabled;
        pakfire_repo_set_keyfile;
+       pakfire_repo_set_mirrorlist;
        pakfire_repo_set_name;
        pakfire_repo_set_priority;
        pakfire_repo_write_solv;
index ab2b9e67661ce8d580d368176b9b213e82613406..4468abf98ff411bbb068e65152b3b6b44742098f 100644 (file)
@@ -47,6 +47,7 @@ struct pakfire_repo_appdata {
 
        char* baseurl;
        char* keyfile;
+       char* mirrorlist;
 };
 
 struct _PakfireRepo {
@@ -65,6 +66,9 @@ static void free_repo_appdata(struct pakfire_repo_appdata* appdata) {
        if (appdata->keyfile)
                pakfire_free(appdata->keyfile);
 
+       if (appdata->mirrorlist)
+               pakfire_free(appdata->mirrorlist);
+
        pakfire_free(appdata);
 }
 
@@ -281,6 +285,22 @@ PAKFIRE_EXPORT int pakfire_repo_set_keyfile(PakfireRepo repo, const char* keyfil
        return 0;
 }
 
+PAKFIRE_EXPORT const char* pakfire_repo_get_mirrorlist(PakfireRepo repo) {
+       return repo->appdata->mirrorlist;
+}
+
+PAKFIRE_EXPORT int pakfire_repo_set_mirrorlist(PakfireRepo repo, const char* mirrorlist) {
+       if (repo->appdata->mirrorlist)
+               pakfire_free(repo->appdata->mirrorlist);
+
+       if (mirrorlist)
+               repo->appdata->mirrorlist = pakfire_strdup(mirrorlist);
+       else
+               repo->appdata->mirrorlist = NULL;
+
+       return 0;
+}
+
 PAKFIRE_EXPORT int pakfire_repo_is_installed_repo(PakfireRepo repo) {
        PakfireRepo installed_repo = pakfire_get_installed_repo(repo->pakfire);