}
PAKFIRE_EXPORT int pakfire_repo_read_solv(struct pakfire_repo* repo, FILE *f, int flags) {
+ // Automatically detect compression
f = pakfire_xfopen(f, "r");
- if (!f)
+ if (!f) {
+ errno = ENOTSUP;
return 1;
+ }
int ret = repo_add_solv(repo->repo, f, flags);
switch (ret) {
return 1;
}
+ // Initialize the output being compressed
+ f = pakfire_zstdfopen(f, "w");
+ if (!f) {
+ ERROR(repo->pakfire, "Could not initialize compression: %m\n");
+ return 1;
+ }
+
// Write the SOLV database to the temporary file
r = pakfire_repo_write_solv(repo, f, 0);
if (r) {
f = NULL;
// Create a filename for the database file
- r = __pakfire_strftime_now(filename, length, "%Y-%m-%d-%H%M.%s.solv");
+ r = __pakfire_strftime_now(filename, length, "%Y-%m-%d-%H%M.%s.solv.zst");
if (r) {
ERROR(repo->pakfire, "Could not format database filename: %m\n");
goto ERROR;