From: Michael Tremer Date: Fri, 19 Jan 2018 00:23:05 +0000 (+0100) Subject: libpakfire: Move cache into Pakfire object X-Git-Tag: 0.9.28~1285^2~1166 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a5376951e5bc20fe782f0b0326c04345e45ef57e;p=pakfire.git libpakfire: Move cache into Pakfire object Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/constants.h b/src/libpakfire/include/pakfire/constants.h index 8f587c03d..9404b3a3a 100644 --- a/src/libpakfire/include/pakfire/constants.h +++ b/src/libpakfire/include/pakfire/constants.h @@ -25,4 +25,6 @@ #define PAKFIRE_REPO_SYSTEM_NAME "@system" +#define CACHE_PATH "/var/cache/pakfire" + #endif /* PAKFIRE_CONSTANTS_H */ diff --git a/src/libpakfire/include/pakfire/pakfire.h b/src/libpakfire/include/pakfire/pakfire.h index e7aea8cbf..18f899f27 100644 --- a/src/libpakfire/include/pakfire/pakfire.h +++ b/src/libpakfire/include/pakfire/pakfire.h @@ -50,6 +50,11 @@ void pakfire_set_installed_repo(Pakfire pakfire, PakfireRepo repo); PakfirePackageList pakfire_whatprovides(Pakfire pakfire, const char* provides, int flags); PakfirePackageList pakfire_search(Pakfire pakfire, const char* what, int flags); +// Cache + +char* pakfire_get_cache_path(Pakfire pakfire, const char* path); +void pakfire_set_cache_path(Pakfire pakfire, const char* path); + #ifdef PAKFIRE_PRIVATE #include diff --git a/src/libpakfire/pakfire.c b/src/libpakfire/pakfire.c index d28abda7a..a685c4455 100644 --- a/src/libpakfire/pakfire.c +++ b/src/libpakfire/pakfire.c @@ -25,6 +25,7 @@ #include #include +#include #include #include #include @@ -38,6 +39,7 @@ struct _Pakfire { char* path; + char* cache_path; char* arch; // Pool stuff @@ -83,6 +85,9 @@ PAKFIRE_EXPORT Pakfire pakfire_create(const char* path, const char* arch) { // Set architecture of the pool pool_setarch(pakfire->pool, pakfire->arch); + + // Initialise cache + pakfire_set_cache_path(pakfire, CACHE_PATH); } return pakfire; @@ -120,6 +125,7 @@ PAKFIRE_EXPORT Pakfire pakfire_unref(Pakfire pakfire) { queue_free(&pakfire->installonly); pakfire_free(pakfire->path); + pakfire_free(pakfire->cache_path); pakfire_free(pakfire->arch); pakfire_free(pakfire); @@ -308,3 +314,19 @@ PAKFIRE_EXPORT PakfirePackageList pakfire_whatprovides(Pakfire pakfire, const ch PAKFIRE_EXPORT PakfirePackageList pakfire_search(Pakfire pakfire, const char* what, int flags) { return pakfire_pool_dataiterator(pakfire, what, 0, PAKFIRE_SUBSTRING); } + +// Cache + +PAKFIRE_EXPORT char* pakfire_get_cache_path(Pakfire pakfire, const char* path) { + return pakfire_path_join(pakfire->cache_path, path); +} + +PAKFIRE_EXPORT void pakfire_set_cache_path(Pakfire pakfire, const char* path) { + // Release old path + if (pakfire->cache_path) + pakfire_free(pakfire->cache_path); + + pakfire->cache_path = pakfire_strdup(path); + + DEBUG("Set cache path to %s\n", pakfire->cache_path); +}