| .\" zip_stat.mdoc -- get information about file | 
 | .\" Copyright (C) 2003-2015 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 July 22, 2012 | 
 | .Dt ZIP_STAT 3 | 
 | .Os | 
 | .Sh NAME | 
 | .Nm zip_stat , | 
 | .Nm zip_stat_index | 
 | .Nd get information about file | 
 | .Sh LIBRARY | 
 | libzip (-lzip) | 
 | .Sh SYNOPSIS | 
 | .In zip.h | 
 | .Ft int | 
 | .Fn zip_stat "zip_t *archive" "const char *fname" "zip_flags_t flags" "zip_stat_t *sb" | 
 | .Ft int | 
 | .Fn zip_stat_index "zip_t *archive" "int index" "zip_flags_t flags" "zip_stat_t *sb" | 
 | .Sh DESCRIPTION | 
 | The | 
 | .Fn zip_stat | 
 | function obtains information about the file named | 
 | .Ar fname | 
 | in | 
 | .Ar archive . | 
 | The | 
 | .Ar flags | 
 | argument specifies how the name lookup should be done. | 
 | Its values are described in | 
 | .Xr zip_name_locate 3 . | 
 | Also, | 
 | .Dv ZIP_FL_UNCHANGED | 
 | may be | 
 | .Em or Ns No 'ed | 
 | to it to request information about the original file in the archive, | 
 | ignoring any changes made. | 
 | .Pp | 
 | The | 
 | .Fn zip_stat_index | 
 | function obtains information about the file at position | 
 | .Ar index . | 
 | .Pp | 
 | The | 
 | .Ar sb | 
 | argument is a pointer to a | 
 | .Ft struct zip_stat | 
 | (shown below), into which information about the file is placed. | 
 | .Bd -literal | 
 | struct zip_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 allocated before calling | 
 | .Fn zip_stat | 
 | or | 
 | .Fn zip_stat_index . | 
 | .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 | 
 | .Sh RETURN VALUES | 
 | Upon successful completion 0 is returned. | 
 | Otherwise, \-1 is returned and the error information in | 
 | .Ar archive | 
 | is set to indicate the error. | 
 | .Sh ERRORS | 
 | The function | 
 | .Fn zip_stat | 
 | can fail for any of the errors specified for the routine | 
 | .Xr zip_name_locate 3 . | 
 | .Pp | 
 | The function | 
 | .Fn zip_stat_index | 
 | fails and sets the error information to | 
 | .Er ZIP_ER_INVAL | 
 | if | 
 | .Ar index | 
 | is invalid. | 
 | If | 
 | .Dv ZIP_FL_UNCHANGED | 
 | is not set and no information can be obtained from the source | 
 | callback, the error information is set to | 
 | .Er ZIP_ER_CHANGED . | 
 | .Sh SEE ALSO | 
 | .Xr libzip 3 , | 
 | .Xr zip_get_num_entries 3 , | 
 | .Xr zip_name_locate 3 , | 
 | .Xr zip_stat_init 3 | 
 | .Sh AUTHORS | 
 | .An -nosplit | 
 | .An Dieter Baron Aq Mt dillo@nih.at | 
 | and | 
 | .An Thomas Klausner Aq Mt tk@giga.or.at |