48 lines · c
1/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */2 3#ifndef __LIBBPF_ZIP_H4#define __LIBBPF_ZIP_H5 6#include <linux/types.h>7 8/* Represents an open zip archive.9 * Only basic ZIP files are supported, in particular the following are not10 * supported:11 * - encryption12 * - streaming13 * - multi-part ZIP files14 * - ZIP6415 */16struct zip_archive;17 18/* Carries information on name, compression method, and data corresponding to a19 * file in a zip archive.20 */21struct 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. */39struct zip_archive *zip_archive_open(const char *path);40 41/* Close a zip archive and release resources. */42void zip_archive_close(struct zip_archive *archive);43 44/* Look up an entry corresponding to a file in given zip archive. */45int zip_archive_find_entry(struct zip_archive *archive, const char *name, struct zip_entry *out);46 47#endif48