Commit | Line | Data |
---|---|---|
1eebcb60 DM |
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 |