blob: 0c4801ecacf9b935043847abbaee0da8e2ac9ef9 [file] [log] [blame]
.TH "ZIP_FILE_GET_EXTERNAL_ATTRIBUTES" "3" "December 18, 2017" "NiH" "Library Functions Manual"
.nh
.if n .ad l
.SH "NAME"
\fBzip_file_get_external_attributes\fR
\- get external attributes for file in zip
.SH "LIBRARY"
libzip (-lzip)
.SH "SYNOPSIS"
\fB#include <zip.h>\fR
.sp
\fIint\fR
.br
.PD 0
.HP 4n
\fBzip_file_get_external_attributes\fR(\fIzip_t\ *archive\fR, \fIzip_uint64_t\ index\fR, \fIzip_flags_t\ flags\fR, \fIzip_uint8_t\ *opsys\fR, \fIzip_uint32_t\ *attributes\fR);
.PD
.SH "DESCRIPTION"
The
\fBzip_file_get_external_attributes\fR()
function returns the operating system and external attributes for the
file at position
\fIindex\fR
in the zip archive.
The external attributes usually contain the operating system-specific
file permissions.
If
\fIflags\fR
is set to
\fRZIP_FL_UNCHANGED\fR,
the original unchanged values are returned.
If
\fIopsys\fR
or
\fIattributes\fR
are
\fRNULL\fR,
they are not filled in.
.PP
The following operating systems are defined by the zip specification:
.RS 6n
.PD 0
.PP
\fRZIP_OPSYS_ACORN_RISC\fR
.PP
\fRZIP_OPSYS_ALTERNATE_MVS\fR
.PP
\fRZIP_OPSYS_AMIGA\fR
.PP
\fRZIP_OPSYS_ATARI_ST\fR
.PP
\fRZIP_OPSYS_BEOS\fR
.PP
\fRZIP_OPSYS_CPM\fR
.PP
\fRZIP_OPSYS_DOS\fR
.PP
\fRZIP_OPSYS_MACINTOSH\fR
.PP
\fRZIP_OPSYS_MVS\fR
.PP
\fRZIP_OPSYS_OPENVMS\fR
.PP
\fRZIP_OPSYS_OS_2\fR
.PP
\fRZIP_OPSYS_OS_400\fR
.PP
\fRZIP_OPSYS_OS_X\fR
.PP
\fRZIP_OPSYS_TANDEM\fR
.PP
\fRZIP_OPSYS_UNIX\fR
.PP
\fRZIP_OPSYS_VFAT\fR
.PP
\fRZIP_OPSYS_VM_CMS\fR
.PP
\fRZIP_OPSYS_VSE\fR
.PP
\fRZIP_OPSYS_WINDOWS_NTFS\fR
(uncommon, use
\fRZIP_OPSYS_DOS\fR
instead)
.PP
\fRZIP_OPSYS_Z_SYSTEM\fR
.RE
.PD
.PP
The defines above follow the PKWARE Inc. Appnote; please note that
the InfoZIP Appnote has a slightly different mapping.
.SH "RETURN VALUES"
Upon successful completion, 0 is returned.
In case of an error,
\fR\-1\fR
is returned and the error code in
\fIarchive\fR
is set to indicate the error.
.SH "EXAMPLES"
The following code can be used to expand
\fIattributes\fR
if the operating system is
\fRZIP_OPSYS_DOS\fR.
.nf
.sp
.RS 0n
#include <sys/stat.h>
#define FA_RDONLY 0x01 // FILE_ATTRIBUTE_READONLY
#define FA_DIREC 0x10 // FILE_ATTRIBUTE_DIRECTORY
static mode_t
_zip_dos_attr2mode(zip_uint32_t attr)
{
mode_t m = S_IRUSR | S_IRGRP | S_IROTH;
if (0 == (attr & FA_RDONLY))
m |= S_IWUSR | S_IWGRP | S_IWOTH;
if (attr & FA_DIREC)
m = (S_IFDIR | (m & ~S_IFMT)) | S_IXUSR | S_IXGRP | S_IXOTH;
return m;
}
.RE
.fi
.SH "ERRORS"
\fBzip_file_get_external_attributes\fR()
fails if:
.TP 19n
[\fRZIP_ER_INVAL\fR]
\fIindex\fR
is not a valid file index in
\fIarchive\fR.
.SH "SEE ALSO"
libzip(3),
zip_file_set_external_attributes(3)
.SH "HISTORY"
\fBzip_file_get_external_attributes\fR()
was added in libzip 0.11.2.
.SH "AUTHORS"
Dieter Baron <\fIdillo@nih.at\fR>
and
Thomas Klausner <\fItk@giga.or.at\fR>