From e6fb5c61a5e6dcb5ad952c976b7b739d2523e554 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 Jan 2018 18:35:43 +0100 Subject: [PATCH] libpakfire: Store mirrorlist in repository Signed-off-by: Michael Tremer --- src/_pakfire/repo.c | 22 ++++++++++++++++++++++ src/libpakfire/include/pakfire/repo.h | 3 +++ src/libpakfire/libpakfire.sym | 2 ++ src/libpakfire/repo.c | 20 ++++++++++++++++++++ 4 files changed, 47 insertions(+) diff --git a/src/_pakfire/repo.c b/src/_pakfire/repo.c index 7f374d4d0..659f7e37d 100644 --- a/src/_pakfire/repo.c +++ b/src/_pakfire/repo.c @@ -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, diff --git a/src/libpakfire/include/pakfire/repo.h b/src/libpakfire/include/pakfire/repo.h index cbf01d976..30050d150 100644 --- a/src/libpakfire/include/pakfire/repo.h +++ b/src/libpakfire/include/pakfire/repo.h @@ -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); diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index d314cf131..8dba79580 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -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; diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index ab2b9e676..4468abf98 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -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); -- 2.39.5