| ZIP_OPEN(3) | Library Functions Manual | ZIP_OPEN(3) | 
zip_open, zip_open_from_source
  —
#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);
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_CHECKCONSZIP_CREATEZIP_EXCLZIP_TRUNCATEZIP_RDONLYIf 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.
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.
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;
    }
ZIP_ER_EXISTS]ZIP_EXCL is set.ZIP_ER_INCONS]ZIP_CHECKCONS but can also happen without it.ZIP_ER_INVAL]NULL.ZIP_ER_MEMORY]ZIP_ER_NOENT]ZIP_CREATE is not set.ZIP_ER_NOZIP]ZIP_ER_OPEN]ZIP_ER_READ]ZIP_ER_SEEK]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.
zip_open() and
  zip_open_from_source() were added in libzip 1.0.
| October 9, 2022 | NiH |