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