Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ZIP_OPEN(3)		     Library Functions Manual		     ZIP_OPEN(3)

NAME
     zip_open, zip_open_from_source -- 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 corre-
     sponding 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 indi-
     cate 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),
     zip_source(5)

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>

FreeBSD ports 15.quarterly	   May 5, 2025			     ZIP_OPEN(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zip_open_from_source&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help