331 lines
7.3 KiB
Text
331 lines
7.3 KiB
Text
|
.\" ziptool.mdoc -- modify zip archives in multiple ways
|
||
|
.\" Copyright (C) 2016-2017 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 ZIPTOOL 1
|
||
|
.Os
|
||
|
.Sh NAME
|
||
|
.Nm ziptool
|
||
|
.Nd modify zip archives
|
||
|
.Sh SYNOPSIS
|
||
|
.Nm
|
||
|
.Op Fl ceghnrst
|
||
|
.Op Fl l Ar length
|
||
|
.Op Fl o Ar offset
|
||
|
.Ar zip-archive
|
||
|
.Cm command Op Ar command-args ...
|
||
|
.Op Cm command Oo Ar command-args ... Oc ...
|
||
|
.Sh DESCRIPTION
|
||
|
.Nm
|
||
|
modifies the zip archive
|
||
|
.Ar zip-archive
|
||
|
according to the
|
||
|
.Ar commands
|
||
|
given.
|
||
|
.Pp
|
||
|
Supported options:
|
||
|
.Bl -tag -width MoMoffsetMM
|
||
|
.It Fl c
|
||
|
Check zip archive consistency when opening it.
|
||
|
.It Fl e
|
||
|
Error if archive already exists (only useful with
|
||
|
.Fl n ) .
|
||
|
.It Fl g
|
||
|
Guess file name encoding (for
|
||
|
.Cm stat
|
||
|
command).
|
||
|
.It Fl h
|
||
|
Display help.
|
||
|
.It Fl l Ar length
|
||
|
Only read
|
||
|
.Ar length
|
||
|
bytes of archive.
|
||
|
See also
|
||
|
.Fl o .
|
||
|
.It Fl n
|
||
|
Create archive if it doesn't exist.
|
||
|
See also
|
||
|
.Fl e .
|
||
|
.It Fl o Ar offset
|
||
|
Start reading input archive from
|
||
|
.Ar offset .
|
||
|
See also
|
||
|
.Fl l .
|
||
|
.It Fl r
|
||
|
Print raw file name encoding without translation (for
|
||
|
.Cm stat
|
||
|
command).
|
||
|
.It Fl s
|
||
|
Follow file name convention strictly (for
|
||
|
.Cm stat
|
||
|
command).
|
||
|
.It Fl t
|
||
|
Disregard current file contents, if any.
|
||
|
.Em Note :
|
||
|
use this with care, it deletes all existing file contents when
|
||
|
you modify the archive.
|
||
|
.El
|
||
|
.Ss Commands
|
||
|
For all commands below, the index is zero-based.
|
||
|
In other words, the first entry in the zip archive has index 0.
|
||
|
.Pp
|
||
|
Supported commands and arguments are:
|
||
|
.Bl -tag -width 10n
|
||
|
.It Cm add Ar name content
|
||
|
Add file called
|
||
|
.Ar name
|
||
|
using the string
|
||
|
.Ar content
|
||
|
from the command line as data.
|
||
|
.It Cm add_dir Ar name
|
||
|
Add directory
|
||
|
.Ar name .
|
||
|
.It Cm add_file Ar name file_to_add offset len
|
||
|
Add file
|
||
|
.Ar name
|
||
|
to archive, using
|
||
|
.Ar len
|
||
|
bytes from the file
|
||
|
.Ar file_to_add
|
||
|
as input data, starting at
|
||
|
.Ar offset .
|
||
|
.It Cm add_from_zip Ar name archivename index offset len
|
||
|
Add file called
|
||
|
.Ar name
|
||
|
to archive using data from another zip archive
|
||
|
.Ar archivename
|
||
|
using the entry with index
|
||
|
.Ar index
|
||
|
and reading
|
||
|
.Ar len
|
||
|
bytes from
|
||
|
.Ar offset .
|
||
|
.It Cm cat Ar index
|
||
|
Output file contents for entry
|
||
|
.Ar index
|
||
|
to stdout.
|
||
|
.It Cm count_extra Ar index flags
|
||
|
Print the number of extra fields for archive entry
|
||
|
.Ar index
|
||
|
using
|
||
|
.Ar flags .
|
||
|
.It Cm count_extra_by_id Ar index extra_id flags
|
||
|
Print number of extra fields of type
|
||
|
.Ar extra_id
|
||
|
for archive entry
|
||
|
.Ar index
|
||
|
using
|
||
|
.Ar flags .
|
||
|
.It Cm delete Ar index
|
||
|
Remove entry at
|
||
|
.Ar index
|
||
|
from zip archive.
|
||
|
.It Cm delete_extra Ar index extra_idx flags
|
||
|
Remove extra field number
|
||
|
.Ar extra_idx
|
||
|
from archive entry
|
||
|
.Ar index
|
||
|
using
|
||
|
.Ar flags .
|
||
|
.It Cm delete_extra_by_id Ar index extra_id extra_index flags
|
||
|
Remove extra field number
|
||
|
.Ar extra_index
|
||
|
of type
|
||
|
.Ar extra_id
|
||
|
from archive entry
|
||
|
.Ar index
|
||
|
using
|
||
|
.Ar flags .
|
||
|
.It Cm get_archive_comment
|
||
|
Print archive comment.
|
||
|
.It Cm get_extra Ar index extra_index flags
|
||
|
Print extra field
|
||
|
.Ar extra_index
|
||
|
for archive entry
|
||
|
.Ar index
|
||
|
using
|
||
|
.Ar flags .
|
||
|
.It Cm get_extra_by_id Ar index extra_id extra_index flags
|
||
|
Print extra field
|
||
|
.Ar extra_index
|
||
|
of type
|
||
|
.Ar extra_id
|
||
|
for archive entry
|
||
|
.Ar index
|
||
|
using
|
||
|
.Ar flags .
|
||
|
.It Cm get_file_comment Ar index
|
||
|
Get file comment for archive entry
|
||
|
.Ar index .
|
||
|
.It Cm get_num_entries Ar flags
|
||
|
Print number of entries in archive using
|
||
|
.Ar flags .
|
||
|
.It Cm name_locate Ar name flags
|
||
|
Find entry in archive with the filename
|
||
|
.Ar name
|
||
|
using
|
||
|
.Ar flags
|
||
|
and print its index.
|
||
|
.It Cm rename Ar index name
|
||
|
Rename archive entry
|
||
|
.Ar index
|
||
|
to
|
||
|
.Ar name .
|
||
|
.It Cm replace_file_contents Ar index data
|
||
|
Replace file contents for archive entry
|
||
|
.Ar index
|
||
|
with the string
|
||
|
.Ar data .
|
||
|
.It Cm set_archive_comment Ar comment
|
||
|
Set archive comment to
|
||
|
.Ar comment .
|
||
|
.It Cm set_extra Ar index extra_id extra_index flags value
|
||
|
Set extra field number
|
||
|
.Ar extra_index
|
||
|
of type
|
||
|
.Ar extra_id
|
||
|
for archive entry
|
||
|
.Ar index
|
||
|
using
|
||
|
.Ar flags
|
||
|
to
|
||
|
.Ar value .
|
||
|
.It Cm set_file_comment Ar index comment
|
||
|
Set file comment for archive entry
|
||
|
.Ar index
|
||
|
to string
|
||
|
.Ar comment .
|
||
|
.It Cm set_file_compression Ar index method compression_flags
|
||
|
Set file compression method for archive entry
|
||
|
.Ar index
|
||
|
to
|
||
|
.Ar method
|
||
|
using
|
||
|
.Ar compression_flags .
|
||
|
.Em Note :
|
||
|
Currently,
|
||
|
.Ar compression_flags
|
||
|
are ignored.
|
||
|
.It Cm set_file_encryption Ar index method password
|
||
|
Set file encryption method for archive entry
|
||
|
.Ar index
|
||
|
to
|
||
|
.Ar method
|
||
|
with password
|
||
|
.Ar password .
|
||
|
.It Cm set_file_mtime Ar index timestamp
|
||
|
Set file modification time for archive entry
|
||
|
.Ar index
|
||
|
to UNIX mtime
|
||
|
.Ar timestamp .
|
||
|
.It Cm set_file_mtime_all Ar timestamp
|
||
|
Set file modification time for all archive entries to UNIX mtime
|
||
|
.Ar timestamp .
|
||
|
.It Cm set_password Ar password
|
||
|
Set default password for encryption/decryption to
|
||
|
.Ar password .
|
||
|
.It Cm stat Ar index
|
||
|
Print information about archive entry
|
||
|
.Ar index .
|
||
|
.El
|
||
|
.Ss Flags
|
||
|
Some commands take flag arguments.
|
||
|
Supported flags are:
|
||
|
.Bl -tag -width MMM -compact -offset indent
|
||
|
.It Ar C
|
||
|
.Dv ZIP_FL_NOCASE
|
||
|
.It Ar c
|
||
|
.Dv ZIP_FL_CENTRAL
|
||
|
.It Ar d
|
||
|
.Dv ZIP_FL_NODIR
|
||
|
.It Ar l
|
||
|
.Dv ZIP_FL_LOCAL
|
||
|
.It Ar u
|
||
|
.Dv ZIP_FL_UNCHANGED
|
||
|
.El
|
||
|
.Ss Compression Methods
|
||
|
Some commands take compression method arguments.
|
||
|
Supported methods are:
|
||
|
.Bl -bullet -compact -offset indent
|
||
|
.It
|
||
|
.Dv default
|
||
|
.It
|
||
|
.Dv deflate
|
||
|
.It
|
||
|
.Dv store
|
||
|
.El
|
||
|
.Ss Encryption Methods
|
||
|
Some commands take encryption method arguments.
|
||
|
Supported methods are:
|
||
|
.Bl -bullet -compact -offset indent
|
||
|
.It
|
||
|
.Dv none
|
||
|
.It
|
||
|
.Dv AES-128
|
||
|
.It
|
||
|
.Dv AES-192
|
||
|
.It
|
||
|
.Dv AES-256
|
||
|
.El
|
||
|
.Sh EXIT STATUS
|
||
|
.Ex -std
|
||
|
.Sh EXAMPLES
|
||
|
Add a file called
|
||
|
.Pa teststring.txt
|
||
|
to the zip archive
|
||
|
.Pa testbuffer.zip
|
||
|
with data
|
||
|
.Dq This is a test.\en
|
||
|
where
|
||
|
.Dq \en
|
||
|
is replaced with a newline character:
|
||
|
.Bd -literal -offset indent
|
||
|
ziptool testbuffer.zip add teststring.txt \\"This is a test.\en\\"
|
||
|
.Ed
|
||
|
.Pp
|
||
|
Delete the first file from the zip archive
|
||
|
.Pa testfile.zip :
|
||
|
.Bd -literal -offset indent
|
||
|
ziptool testfile.zip delete 0
|
||
|
.Ed
|
||
|
.Sh SEE ALSO
|
||
|
.Xr zipcmp 1 ,
|
||
|
.Xr zipmerge 1 ,
|
||
|
.Xr libzip 3
|
||
|
.Sh HISTORY
|
||
|
.Nm
|
||
|
was added in libzip 1.1.
|
||
|
.Sh AUTHORS
|
||
|
.An -nosplit
|
||
|
.An Dieter Baron Aq Mt dillo@nih.at
|
||
|
and
|
||
|
.An Thomas Klausner Aq Mt tk@giga.or.at
|