]> git.ipfire.org Git - people/ms/pakfire.git/blame - src/libpakfire/include/pakfire/compress.h
archive: Fix reading filelists/extraction on newer formats
[people/ms/pakfire.git] / src / libpakfire / include / pakfire / compress.h
CommitLineData
c352b776
MT
1/*#############################################################################
2# #
3# Pakfire - The IPFire package management system #
4# Copyright (C) 2021 Pakfire development team #
5# #
6# This program is free software: you can redistribute it and/or modify #
7# it under the terms of the GNU General Public License as published by #
8# the Free Software Foundation, either version 3 of the License, or #
9# (at your option) any later version. #
10# #
11# This program is distributed in the hope that it will be useful, #
12# but WITHOUT ANY WARRANTY; without even the implied warranty of #
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14# GNU General Public License for more details. #
15# #
16# You should have received a copy of the GNU General Public License #
17# along with this program. If not, see <http://www.gnu.org/licenses/>. #
18# #
19#############################################################################*/
20
21#ifndef PAKFIRE_COMPRESS_H
22#define PAKFIRE_COMPRESS_H
23
24#ifdef PAKFIRE_PRIVATE
25
79824416
MT
26#include <archive.h>
27
28#include <pakfire/pakfire.h>
29
c352b776
MT
30// Automatically detect
31FILE* pakfire_xfopen(FILE* f, const char* mode);
32
33// XZ
34FILE* pakfire_xzfopen(FILE* f, const char* mode);
35
9476d502
MT
36// ZSTD
37FILE* pakfire_zstdfopen(FILE* f, const char* mode);
38
d9302cc3
MT
39// Walk
40
41typedef int (*pakfire_walk_callback)
42 (struct pakfire* pakfire, struct archive* a, struct archive_entry* e, void* p);
43typedef int (*pakfire_walk_filter_callback)
44 (struct pakfire* pakfire, struct archive* a, struct archive_entry* e, void* p);
45
46enum pakfire_walk_codes {
47 PAKFIRE_WALK_OK = 0,
662ff8e8 48 PAKFIRE_WALK_ERROR = 1,
d9302cc3
MT
49
50 // After this code has been sent, we will not process any further entries
51 PAKFIRE_WALK_DONE = -10,
52
53 // Request the next entry (only in filter callback)
54 PAKFIRE_WALK_SKIP = -20,
f8a46d2f
MT
55
56 // Like PAKFIRE_WALK_OK, but the callback will not be called again
57 PAKFIRE_WALK_END = -30,
d9302cc3
MT
58};
59
60int pakfire_walk(struct pakfire* pakfire, struct archive* archive,
61 pakfire_walk_callback callback, pakfire_walk_filter_callback filter_callback, void* p);
62
79824416 63// Extract
95a232a7 64enum pakfire_extract_flags {
a3b276d1 65 PAKFIRE_EXTRACT_DRY_RUN = (1 << 0),
5880b6ac
MT
66 PAKFIRE_EXTRACT_NO_PROGRESS = (1 << 1),
67 PAKFIRE_EXTRACT_SHOW_THROUGHPUT = (1 << 2),
95a232a7
MT
68};
69
79824416 70int pakfire_extract(struct pakfire* pakfire, struct archive* archive,
bb7f09cd 71 size_t size, struct pakfire_filelist* filelist, const char* prefix,
f8a46d2f
MT
72 const char* message, pakfire_walk_filter_callback filter_callback,
73 int flags);
79824416 74
1e0d6cca
MT
75// Compress
76enum pakfire_compress_flags {
77 PAKFIRE_COMPRESS_NO_PROGRESS = (1 << 1),
78 PAKFIRE_COMPRESS_SHOW_THROUGHPUT = (1 << 2),
79};
80
81int pakfire_compress(struct pakfire* pakfire, struct archive* archive,
82 struct pakfire_filelist* filelist, const char* message, int flags, int digests);
83
c352b776
MT
84#endif
85
86#endif /* PAKFIRE_COMPRESS_H */