const char* pakfire_get_cache_path(Pakfire pakfire);
void pakfire_set_cache_path(Pakfire pakfire, const char* path);
-char* pakfire_make_cache_path(Pakfire pakfire, const char* path);
int pakfire_cache_destroy(Pakfire pakfire, const char* path);
int pakfire_cache_access(Pakfire pakfire, const char* path, int mode);
#include <solv/pool.h>
+char* pakfire_make_cache_path(Pakfire pakfire, const char* format, ...);
+
void pakfire_pool_has_changed(Pakfire pakfire);
void pakfire_pool_apply_changes(Pakfire pakfire);
snprintf(pakfire->cache_path, sizeof(pakfire->cache_path) - 1, "%s", path);
}
-PAKFIRE_EXPORT char* pakfire_make_cache_path(Pakfire pakfire, const char* path) {
+PAKFIRE_EXPORT char* pakfire_make_cache_path(Pakfire pakfire, const char* format, ...) {
+ char path[PATH_MAX];
+ va_list args;
+
+ va_start(args, format);
+ vsnprintf(path, sizeof(PATH_MAX) - 1, format, args);
+ va_end(args);
+
+ // Prepend cache path
return pakfire_path_join(pakfire->cache_path, path);
}
// Mirrorlist
char* mirrorlist_url;
- char mirrorlist[PATH_MAX];
+ char* mirrorlist;
};
struct _PakfireRepo {
if (appdata->mirrorlist_url)
free(appdata->mirrorlist_url);
+ if (appdata->mirrorlist)
+ free(appdata->mirrorlist);
+
free(appdata);
}
REPO_EXTEND_SOLVABLES|REPO_LOCALPOOL|REPO_NO_INTERNALIZE|REPO_NO_LOCATION);
// Make path to mirrorlist
- snprintf(repo->appdata->mirrorlist, sizeof(repo->appdata->mirrorlist) - 1,
- "%s/repodata/%s/mirrorlist", pakfire_get_cache_path(repo->pakfire),
- pakfire_repo_get_name(repo));
+ repo->appdata->mirrorlist = pakfire_make_cache_path(
+ repo->pakfire, "repodata/%s/mirrorlist", pakfire_repo_get_name(repo));
}
return repo;