1 | /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ |
2 | |
3 | #ifndef __LIBBPF_ZIP_H |
4 | #define __LIBBPF_ZIP_H |
5 | |
6 | #include <linux/types.h> |
7 | |
8 | /* Represents an open zip archive. |
9 | * Only basic ZIP files are supported, in particular the following are not |
10 | * supported: |
11 | * - encryption |
12 | * - streaming |
13 | * - multi-part ZIP files |
14 | * - ZIP64 |
15 | */ |
16 | struct zip_archive; |
17 | |
18 | /* Carries information on name, compression method, and data corresponding to a |
19 | * file in a zip archive. |
20 | */ |
21 | struct zip_entry { |
22 | /* Compression method as defined in pkzip spec. 0 means data is uncompressed. */ |
23 | __u16 compression; |
24 | |
25 | /* Non-null terminated name of the file. */ |
26 | const char *name; |
27 | /* Length of the file name. */ |
28 | __u16 name_length; |
29 | |
30 | /* Pointer to the file data. */ |
31 | const void *data; |
32 | /* Length of the file data. */ |
33 | __u32 data_length; |
34 | /* Offset of the file data within the archive. */ |
35 | __u32 data_offset; |
36 | }; |
37 | |
38 | /* Open a zip archive. Returns NULL in case of an error. */ |
39 | struct zip_archive *zip_archive_open(const char *path); |
40 | |
41 | /* Close a zip archive and release resources. */ |
42 | void zip_archive_close(struct zip_archive *archive); |
43 | |
44 | /* Look up an entry corresponding to a file in given zip archive. */ |
45 | int zip_archive_find_entry(struct zip_archive *archive, const char *name, struct zip_entry *out); |
46 | |
47 | #endif |
48 | |