From 366417751caa0f9609a8fc8820a9792b96d51bc1 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 Jan 2018 19:10:15 +0100 Subject: [PATCH] libpakfire: Store description with 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 dd4266d68..bceba3956 100644 --- a/src/_pakfire/repo.c +++ b/src/_pakfire/repo.c @@ -112,6 +112,21 @@ static int Repo_set_name(RepoObject* self, PyObject* value) { return 0; } +static PyObject* Repo_get_description(RepoObject* self) { + const char* description = pakfire_repo_get_description(self->repo); + + return PyUnicode_FromString(description); +} + +static int Repo_set_description(RepoObject* self, PyObject* value) { + const char* description = NULL; + + if (value != Py_None) + description = PyUnicode_AsUTF8(value); + + return pakfire_repo_set_description(self->repo, description); +} + static PyObject* Repo_get_enabled(RepoObject* self) { if (pakfire_repo_get_enabled(self->repo)) Py_RETURN_TRUE; @@ -418,6 +433,13 @@ static struct PyGetSetDef Repo_getsetters[] = { "The base URL of this repository", NULL }, + { + "description", + (getter)Repo_get_description, + (setter)Repo_set_description, + NULL, + NULL + }, { "keyfile", (getter)Repo_get_keyfile, diff --git a/src/libpakfire/include/pakfire/repo.h b/src/libpakfire/include/pakfire/repo.h index 8fde3e1f3..14baf158b 100644 --- a/src/libpakfire/include/pakfire/repo.h +++ b/src/libpakfire/include/pakfire/repo.h @@ -41,6 +41,9 @@ void pakfire_repo_internalize(PakfireRepo repo); const char* pakfire_repo_get_name(PakfireRepo repo); void pakfire_repo_set_name(PakfireRepo repo, const char* name); +const char* pakfire_repo_get_description(PakfireRepo repo); +int pakfire_repo_set_description(PakfireRepo repo, const char* description); + int pakfire_repo_get_enabled(PakfireRepo repo); void pakfire_repo_set_enabled(PakfireRepo repo, int enabled); diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index bd64a7a7d..2b5a0a76b 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -228,6 +228,7 @@ global: pakfire_repo_get_baseurl; pakfire_repo_get_cache; pakfire_repo_get_config; + pakfire_repo_get_description; pakfire_repo_get_name; pakfire_repo_get_enabled; pakfire_repo_get_keyfile; @@ -242,6 +243,7 @@ global: pakfire_repo_read_solv_fp; pakfire_repo_ref; pakfire_repo_set_baseurl; + pakfire_repo_set_description; pakfire_repo_set_enabled; pakfire_repo_set_keyfile; pakfire_repo_set_mirrorlist; diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index f58380fd6..d1a68a366 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -45,6 +45,7 @@ const size_t XZ_HEADER_LENGTH = sizeof(XZ_HEADER_MAGIC); struct pakfire_repo_appdata { Repodata* repodata; + char* description; char* baseurl; char* keyfile; char* mirrorlist; @@ -60,6 +61,9 @@ struct _PakfireRepo { static void free_repo_appdata(struct pakfire_repo_appdata* appdata) { // repodata is being destroyed with the repository + if (appdata->description) + pakfire_free(appdata->description); + if (appdata->baseurl) pakfire_free(appdata->baseurl); @@ -232,6 +236,22 @@ PAKFIRE_EXPORT void pakfire_repo_set_name(PakfireRepo repo, const char* name) { repo->repo->name = pakfire_strdup(name); } +PAKFIRE_EXPORT const char* pakfire_repo_get_description(PakfireRepo repo) { + return repo->appdata->description; +} + +PAKFIRE_EXPORT int pakfire_repo_set_description(PakfireRepo repo, const char* description) { + if (repo->appdata->description) + pakfire_free(repo->appdata->description); + + if (description) + repo->appdata->description = pakfire_strdup(description); + else + repo->appdata->description = NULL; + + return 0; +} + PAKFIRE_EXPORT int pakfire_repo_get_enabled(PakfireRepo repo) { return !repo->repo->disabled; } -- 2.39.5