]>
Commit | Line | Data |
---|---|---|
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 |
31 | FILE* pakfire_xfopen(FILE* f, const char* mode); | |
32 | ||
33 | // XZ | |
34 | FILE* pakfire_xzfopen(FILE* f, const char* mode); | |
35 | ||
9476d502 MT |
36 | // ZSTD |
37 | FILE* pakfire_zstdfopen(FILE* f, const char* mode); | |
38 | ||
d9302cc3 MT |
39 | // Walk |
40 | ||
41 | typedef int (*pakfire_walk_callback) | |
42 | (struct pakfire* pakfire, struct archive* a, struct archive_entry* e, void* p); | |
43 | typedef int (*pakfire_walk_filter_callback) | |
44 | (struct pakfire* pakfire, struct archive* a, struct archive_entry* e, void* p); | |
45 | ||
46 | enum 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 | ||
60 | int 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 | 64 | enum 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 | 70 | int 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 |
76 | enum pakfire_compress_flags { | |
77 | PAKFIRE_COMPRESS_NO_PROGRESS = (1 << 1), | |
78 | PAKFIRE_COMPRESS_SHOW_THROUGHPUT = (1 << 2), | |
79 | }; | |
80 | ||
81 | int 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 */ |