libzip: zip_fopen(3)


zip_fopen, zip_fopen_indexopen file in zip archive for reading


libzip (-lzip)


#include <zip.h>

zip_file_t *
zip_fopen(zip_t *archive, const char *fname, zip_flags_t flags);

zip_file_t *
zip_fopen_index(zip_t *archive, zip_uint64_t index, zip_flags_t flags);


The zip_fopen() function opens the file name fname in archive. The flags argument specifies how the name lookup should be done, according to the values are described in zip_name_locate(3). Also, the following values may be or'ed to it.
Read the compressed data. Otherwise the data is uncompressed by zip_fread().
Read the original data from the zip archive, ignoring any changes made to the file.

The zip_fopen_index() function opens the file at position index.

If encrypted data is encountered, the functions call zip_fopen_encrypted(3) or zip_fopen_index_encrypted(3) respectively, using the default password set with zip_set_default_password(3).


Upon successful completion, a struct zip_file pointer is returned. Otherwise, NULL is returned and the error code in archive is set to indicate the error.


The file data has been changed.
The compression method used is not supported.
The encryption method used is not supported.
Required memory could not be allocated.
The file is encrypted, but no password has been provided.
A file read error occurred.
A file seek error occurred.
The provided password does not match the password used for encryption. Note that some incorrect passwords are not detected by the check done by zip_fopen().
Initializing the zlib stream failed.

The function zip_fopen() may also fail and set zip_err for any of the errors specified for the routine zip_name_locate(3).

The function zip_fopen_index() may also fail with ZIP_ER_INVAL if index is invalid.


Dieter Baron <> and Thomas Klausner <>