162306a36Sopenharmony_ci/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#ifndef __LIBBPF_ZIP_H 462306a36Sopenharmony_ci#define __LIBBPF_ZIP_H 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <linux/types.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* Represents an open zip archive. 962306a36Sopenharmony_ci * Only basic ZIP files are supported, in particular the following are not 1062306a36Sopenharmony_ci * supported: 1162306a36Sopenharmony_ci * - encryption 1262306a36Sopenharmony_ci * - streaming 1362306a36Sopenharmony_ci * - multi-part ZIP files 1462306a36Sopenharmony_ci * - ZIP64 1562306a36Sopenharmony_ci */ 1662306a36Sopenharmony_cistruct zip_archive; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci/* Carries information on name, compression method, and data corresponding to a 1962306a36Sopenharmony_ci * file in a zip archive. 2062306a36Sopenharmony_ci */ 2162306a36Sopenharmony_cistruct zip_entry { 2262306a36Sopenharmony_ci /* Compression method as defined in pkzip spec. 0 means data is uncompressed. */ 2362306a36Sopenharmony_ci __u16 compression; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci /* Non-null terminated name of the file. */ 2662306a36Sopenharmony_ci const char *name; 2762306a36Sopenharmony_ci /* Length of the file name. */ 2862306a36Sopenharmony_ci __u16 name_length; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci /* Pointer to the file data. */ 3162306a36Sopenharmony_ci const void *data; 3262306a36Sopenharmony_ci /* Length of the file data. */ 3362306a36Sopenharmony_ci __u32 data_length; 3462306a36Sopenharmony_ci /* Offset of the file data within the archive. */ 3562306a36Sopenharmony_ci __u32 data_offset; 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci/* Open a zip archive. Returns NULL in case of an error. */ 3962306a36Sopenharmony_cistruct zip_archive *zip_archive_open(const char *path); 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci/* Close a zip archive and release resources. */ 4262306a36Sopenharmony_civoid zip_archive_close(struct zip_archive *archive); 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci/* Look up an entry corresponding to a file in given zip archive. */ 4562306a36Sopenharmony_ciint zip_archive_find_entry(struct zip_archive *archive, const char *name, struct zip_entry *out); 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#endif 48