zip_open - Man Page
open zip archive
Library
libzip (-lzip)
Synopsis
#include <zip.h
>
zip_t *
zip_open
(const char *path, int flags, int *errorp);
zip_t *
zip_open_from_source
(zip_source_t *zs, int flags, zip_error_t *ze);
Description
The zip_open
() function opens the zip archive specified by path and returns a pointer to a struct zip, used to manipulate the archive. The flags are specified by or'ing the following values, or 0 for none of them.
- ZIP_CHECKCONS
Perform additional stricter consistency checks on the archive, and error if they fail.
- ZIP_CREATE
Create the archive if it does not exist.
- ZIP_EXCL
Error if archive already exists.
- ZIP_TRUNCATE
If archive exists, ignore its current contents. In other words, handle it the same way as an empty archive.
- ZIP_RDONLY
Open archive in read-only mode.
If an error occurs and errorp is non-NULL
, it will be set to the corresponding error code.
The zip_open_from_source
() function opens a zip archive encapsulated by the zip_source zs using the provided flags. In case of error, the zip_error ze is filled in.
Return Values
Upon successful completion zip_open
() and zip_open_from_source
() return a struct zip pointer. Otherwise, NULL
is returned and zip_open
() sets *errorp to indicate the error, while zip_open_from
(source) sets ze to indicate the error.
Examples
Here's an example of how you could report errors during zip_open:
zip_t *za; int err; if ((za = zip_open(name, 0, &err)) == NULL) { zip_error_t error; zip_error_init_with_code(&error, err); fprintf(stderr, "%s: cannot open zip archive '%s': %s\n", progname, name, zip_error_strerror(&error)); zip_error_fini(&error); return -1; }
Errors
The archive specified by path is opened unless:
- [ZIP_ER_EXISTS]
The file specified by path exists and
ZIP_EXCL
is set.- [ZIP_ER_INCONS]
Inconsistencies were found in the file specified by path. This error is often caused by specifying
ZIP_CHECKCONS
but can also happen without it.- [ZIP_ER_INVAL]
The path argument is
NULL
.- [ZIP_ER_MEMORY]
Required memory could not be allocated.
- [ZIP_ER_NOENT]
The file specified by path does not exist and
ZIP_CREATE
is not set.- [ZIP_ER_NOZIP]
The file specified by path is not a zip archive.
- [ZIP_ER_OPEN]
The file specified by path could not be opened.
- [ZIP_ER_READ]
A read error occurred; see errno for details.
- [ZIP_ER_SEEK]
The file specified by path does not allow seeks.
For newly created archives, zip_open
() does not try to create the file; this is done when calling zip_close(3) and any errors, like missing write permissions, will be reported then.
See Also
libzip(3), zip_close(3), zip_error_strerror(3), zip_fdopen(3)
History
zip_open
() and zip_open_from_source
() were added in libzip 1.0.
Authors
Dieter Baron <dillo@nih.at> and Thomas Klausner <wiz@gatalith.at>
Referenced By
libzip(3), zip_close(3), zip_fdopen(3), zip_source(3), zip_source_buffer(3), zip_source_buffer_fragment(3), zip_source_free(3).
The man page zip_open_from_source(3) is an alias of zip_open(3).