.\" zip_source_stat.mdoc -- get information about zip source
.\" Copyright (C) 2014-2021 Dieter Baron and Thomas Klausner
.\"
.\" This file is part of libzip, a library to manipulate ZIP archives.
.\" The authors can be contacted at <libzip@nih.at>
.\"
.\" 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 December 18, 2017
.Dt ZIP_SOURCE_STAT 3
.Os
.Sh NAME
.Nm zip_source_stat
.Nd get information about zip_source
.Sh LIBRARY
libzip (-lzip)
.Sh SYNOPSIS
.In zip.h
.Ft int
.Fn zip_source_stat "zip_source_t *source" "zip_stat_t *sb"
.Sh DESCRIPTION
The
.Fn zip_source_stat
function obtains information about the zip source
.Ar source
.Pp
The
.Ar sb
argument is a pointer to a
.Ft struct zip_source_stat
(shown below), into which information about the zip source is placed.
.Bd -literal
struct zip_source_stat {
    zip_uint64_t valid;                 /* which fields have valid values */
    const char *name;                   /* name of the file */
    zip_uint64_t index;                 /* index within archive */
    zip_uint64_t size;                  /* size of file (uncompressed) */
    zip_uint64_t comp_size;             /* size of file (compressed) */
    time_t mtime;                       /* modification time */
    zip_uint32_t crc;                   /* crc of file data */
    zip_uint16_t comp_method;           /* compression method used */
    zip_uint16_t encryption_method;     /* encryption method used */
    zip_uint32_t flags;                 /* reserved for future use */
};
.Ed
The structure pointed to by
.Ar sb
must be initialized with
.Fn zip_stat_init 3
before calling
.Fn zip_source_stat .
.Pp
The
.Ar valid
field of the structure specifies which other fields are valid.
Check if the flag defined by the following defines are in
.Ar valid
before accessing the fields:
.Bl -tag -width ZIP_STAT_ENCRYPTION_METHODXX -compact -offset indent
.It Dv ZIP_STAT_NAME
.Ar name
.It Dv ZIP_STAT_INDEX
.Ar index
.It Dv ZIP_STAT_SIZE
.Ar size
.It Dv ZIP_STAT_COMP_SIZE
.Ar comp_size
.It Dv ZIP_STAT_MTIME
.Ar mtime
.It Dv ZIP_STAT_CRC
.Ar crc
.It Dv ZIP_STAT_COMP_METHOD
.Ar comp_method
.It Dv ZIP_STAT_ENCRYPTION_METHOD
.Ar encryption_method
.It Dv ZIP_STAT_FLAGS
.Ar flags
.El
.Pp
.Em NOTE :
Some fields may only be filled out after all data has been read from
the source, for example the
.Ar crc
or
.Ar size
fields.
.Sh RETURN VALUES
Upon successful completion 0 is returned.
Otherwise, \-1 is returned and the error information in
.Ar source
is set to indicate the error.
.Sh SEE ALSO
.Xr libzip 3 ,
.Xr zip_source 3
.Sh HISTORY
.Fn zip_source_stat
was 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
