/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ #ifndef __LIBBPF_ZIP_H #define __LIBBPF_ZIP_H #include <linux/types.h> /* Represents an open zip archive. * Only basic ZIP files are supported, in particular the following are not * supported: * - encryption * - streaming * - multi-part ZIP files * - ZIP64 */ struct zip_archive; /* Carries information on name, compression method, and data corresponding to a * file in a zip archive. */ struct zip_entry { /* Compression method as defined in pkzip spec. 0 means data is uncompressed. */ __u16 compression; /* Non-null terminated name of the file. */ const char *name; /* Length of the file name. */ __u16 name_length; /* Pointer to the file data. */ const void *data; /* Length of the file data. */ __u32 data_length; /* Offset of the file data within the archive. */ __u32 data_offset; }; /* Open a zip archive. Returns NULL in case of an error. */ struct zip_archive *zip_archive_open(const char *path); /* Close a zip archive and release resources. */ void zip_archive_close(struct zip_archive *archive); /* Look up an entry corresponding to a file in given zip archive. */ int zip_archive_find_entry(struct zip_archive *archive, const char *name, struct zip_entry *out); #endif