193 lines
4.9 KiB
Plaintext
193 lines
4.9 KiB
Plaintext
.\" zip_open.mdoc -- open zip archive
|
|
.\" Copyright (C) 2003-2022 Dieter Baron and Thomas Klausner
|
|
.\"
|
|
.\" This file is part of libzip, a library to manipulate ZIP archives.
|
|
.\" The authors can be contacted at <info@libzip.org>
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in
|
|
.\" the documentation and/or other materials provided with the
|
|
.\" distribution.
|
|
.\" 3. The names of the authors may not be used to endorse or promote
|
|
.\" products derived from this software without specific prior
|
|
.\" written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
|
|
.\" OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
|
|
.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
|
.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
|
.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.Dd October 9, 2022
|
|
.Dt ZIP_OPEN 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm zip_open ,
|
|
.Nm zip_open_from_source
|
|
.Nd open zip archive
|
|
.Sh LIBRARY
|
|
libzip (-lzip)
|
|
.Sh SYNOPSIS
|
|
.In zip.h
|
|
.Ft zip_t *
|
|
.Fn zip_open "const char *path" "int flags" "int *errorp"
|
|
.Ft zip_t *
|
|
.Fn zip_open_from_source "zip_source_t *zs" "int flags" "zip_error_t *ze"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Fn zip_open
|
|
function opens the zip archive specified by
|
|
.Ar path
|
|
and returns a pointer to a
|
|
.Ft struct zip ,
|
|
used to manipulate the archive.
|
|
The
|
|
.Fa flags
|
|
are specified by
|
|
.Em or Ns No 'ing
|
|
the following values, or 0 for none of them.
|
|
.Bl -tag -offset indent -width ZIP_CHECKCONS
|
|
.It Dv ZIP_CHECKCONS
|
|
Perform additional stricter consistency checks on the archive, and
|
|
error if they fail.
|
|
.It Dv ZIP_CREATE
|
|
Create the archive if it does not exist.
|
|
.It Dv ZIP_EXCL
|
|
Error if archive already exists.
|
|
.It Dv ZIP_TRUNCATE
|
|
If archive exists, ignore its current contents.
|
|
In other words, handle it the same way as an empty archive.
|
|
.It Dv ZIP_RDONLY
|
|
Open archive in read-only mode.
|
|
.El
|
|
.Pp
|
|
If an error occurs and
|
|
.Ar errorp
|
|
is
|
|
.Pf non- Dv NULL ,
|
|
it will be set to the corresponding error code.
|
|
.Pp
|
|
The
|
|
.Fn zip_open_from_source
|
|
function opens a zip archive encapsulated by the zip_source
|
|
.Fa zs
|
|
using the provided
|
|
.Fa flags .
|
|
In case of error, the zip_error
|
|
.Fa ze
|
|
is filled in.
|
|
.Sh RETURN VALUES
|
|
Upon successful completion
|
|
.Fn zip_open
|
|
and
|
|
.Fn zip_open_from_source
|
|
return a
|
|
.Ft struct zip
|
|
pointer.
|
|
Otherwise,
|
|
.Dv NULL
|
|
is returned and
|
|
.Fn zip_open
|
|
sets
|
|
.Ar *errorp
|
|
to indicate the error, while
|
|
.Fn zip_open_from source
|
|
sets
|
|
.Ar ze
|
|
to indicate the error.
|
|
.Sh EXAMPLES
|
|
Here's an example of how you could report errors during
|
|
.Nm :
|
|
.Bd -literal
|
|
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\en",
|
|
progname, name, zip_error_strerror(&error));
|
|
zip_error_fini(&error);
|
|
return -1;
|
|
}
|
|
.Ed
|
|
.Sh ERRORS
|
|
The archive specified by
|
|
.Ar path
|
|
is opened unless:
|
|
.Bl -tag -width Er
|
|
.It Bq Er ZIP_ER_EXISTS
|
|
The file specified by
|
|
.Ar path
|
|
exists and
|
|
.Dv ZIP_EXCL
|
|
is set.
|
|
.It Bq Er ZIP_ER_INCONS
|
|
Inconsistencies were found in the file specified by
|
|
.Ar path .
|
|
This error is often caused by specifying
|
|
.Dv ZIP_CHECKCONS
|
|
but can also happen without it.
|
|
.It Bq Er ZIP_ER_INVAL
|
|
The
|
|
.Ar path
|
|
argument is
|
|
.Dv NULL .
|
|
.It Bq Er ZIP_ER_MEMORY
|
|
Required memory could not be allocated.
|
|
.It Bq Er ZIP_ER_NOENT
|
|
The file specified by
|
|
.Ar path
|
|
does not exist and
|
|
.Dv ZIP_CREATE
|
|
is not set.
|
|
.It Bq Er ZIP_ER_NOZIP
|
|
The file specified by
|
|
.Ar path
|
|
is not a zip archive.
|
|
.It Bq Er ZIP_ER_OPEN
|
|
The file specified by
|
|
.Ar path
|
|
could not be opened.
|
|
.It Bq Er ZIP_ER_READ
|
|
A read error occurred; see
|
|
.Va errno
|
|
for details.
|
|
.It Bq Er ZIP_ER_SEEK
|
|
The file specified by
|
|
.Ar path
|
|
does not allow seeks.
|
|
.El
|
|
For newly created archives,
|
|
.Fn zip_open
|
|
does not try to create the file; this is done when calling
|
|
.Xr zip_close 3
|
|
and any errors, like missing write permissions, will
|
|
be reported then.
|
|
.Sh SEE ALSO
|
|
.Xr libzip 3 ,
|
|
.Xr zip_close 3 ,
|
|
.Xr zip_error_strerror 3 ,
|
|
.Xr zip_fdopen 3
|
|
.Sh HISTORY
|
|
.Fn zip_open
|
|
and
|
|
.Fn zip_open_from_source
|
|
were added in libzip 1.0.
|
|
.Sh AUTHORS
|
|
.An -nosplit
|
|
.An Dieter Baron Aq Mt dillo@nih.at
|
|
and
|
|
.An Thomas Klausner Aq Mt tk@giga.or.at
|