You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
480 lines
16 KiB
480 lines
16 KiB
.\" Copyright (c) 2003-2010 Tim Kientzle
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" 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.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR OR CONTRIBUTORS 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.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd February 2, 2012
|
|
.Dt ARCHIVE_WRITE_OPTIONS 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm archive_write_set_filter_option ,
|
|
.Nm archive_write_set_format_option ,
|
|
.Nm archive_write_set_option ,
|
|
.Nm archive_write_set_options
|
|
.Nd functions controlling options for reading archives
|
|
.Sh LIBRARY
|
|
Streaming Archive Library (libarchive, -larchive)
|
|
.Sh SYNOPSIS
|
|
.Ft int
|
|
.Fo archive_write_set_filter_option
|
|
.Fa "struct archive *"
|
|
.Fa "const char *module"
|
|
.Fa "const char *option"
|
|
.Fa "const char *value"
|
|
.Fc
|
|
.Ft int
|
|
.Fo archive_write_set_format_option
|
|
.Fa "struct archive *"
|
|
.Fa "const char *module"
|
|
.Fa "const char *option"
|
|
.Fa "const char *value"
|
|
.Fc
|
|
.Ft int
|
|
.Fo archive_write_set_option
|
|
.Fa "struct archive *"
|
|
.Fa "const char *module"
|
|
.Fa "const char *option"
|
|
.Fa "const char *value"
|
|
.Fc
|
|
.Ft int
|
|
.Fo archive_write_set_options
|
|
.Fa "struct archive *"
|
|
.Fa "const char *options"
|
|
.Fc
|
|
.Sh DESCRIPTION
|
|
These functions provide a way for libarchive clients to configure
|
|
specific write modules.
|
|
.Bl -tag -width indent
|
|
.It Xo
|
|
.Fn archive_write_set_filter_option ,
|
|
.Fn archive_write_set_format_option
|
|
.Xc
|
|
Specifies an option that will be passed to currently-registered
|
|
filters (including decompression filters) or format readers.
|
|
.Pp
|
|
If
|
|
.Ar option
|
|
and
|
|
.Ar value
|
|
are both
|
|
.Dv NULL ,
|
|
these functions will do nothing and
|
|
.Cm ARCHIVE_OK
|
|
will be returned.
|
|
If
|
|
.Ar option
|
|
is
|
|
.Dv NULL
|
|
but
|
|
.Ar value
|
|
is not, these functions will do nothing and
|
|
.Cm ARCHIVE_FAILED
|
|
will be returned.
|
|
.Pp
|
|
If
|
|
.Ar module
|
|
is not
|
|
.Dv NULL ,
|
|
.Ar option
|
|
and
|
|
.Ar value
|
|
will be provided to the filter or reader named
|
|
.Ar module .
|
|
The return value will be that of the module.
|
|
If there is no such module,
|
|
.Cm ARCHIVE_FAILED
|
|
will be returned.
|
|
.Pp
|
|
If
|
|
.Ar module
|
|
is
|
|
.Dv NULL ,
|
|
.Ar option
|
|
and
|
|
.Ar value
|
|
will be provided to every registered module.
|
|
If any module returns
|
|
.Cm ARCHIVE_FATAL ,
|
|
this value will be returned immediately.
|
|
Otherwise,
|
|
.Cm ARCHIVE_OK
|
|
will be returned if any module accepts the option, and
|
|
.Cm ARCHIVE_FAILED
|
|
in all other cases.
|
|
.\"
|
|
.It Xo
|
|
.Fn archive_write_set_option
|
|
.Xc
|
|
Calls
|
|
.Fn archive_write_set_format_option ,
|
|
then
|
|
.Fn archive_write_set_filter_option .
|
|
If either function returns
|
|
.Cm ARCHIVE_FATAL ,
|
|
.Cm ARCHIVE_FATAL
|
|
will be returned
|
|
immediately.
|
|
Otherwise, greater of the two values will be returned.
|
|
.\"
|
|
.It Xo
|
|
.Fn archive_write_set_options
|
|
.Xc
|
|
.Ar options
|
|
is a comma-separated list of options.
|
|
If
|
|
.Ar options
|
|
is
|
|
.Dv NULL
|
|
or empty,
|
|
.Cm ARCHIVE_OK
|
|
will be returned immediately.
|
|
.Pp
|
|
Individual options have one of the following forms:
|
|
.Bl -tag -compact -width indent
|
|
.It Ar option=value
|
|
The option/value pair will be provided to every module.
|
|
Modules that do not accept an option with this name will ignore it.
|
|
.It Ar option
|
|
The option will be provided to every module with a value of
|
|
.Dq 1 .
|
|
.It Ar !option
|
|
The option will be provided to every module with a NULL value.
|
|
.It Ar module:option=value , Ar module:option , Ar module:!option
|
|
As above, but the corresponding option and value will be provided
|
|
only to modules whose name matches
|
|
.Ar module .
|
|
.El
|
|
.El
|
|
.\"
|
|
.Sh OPTIONS
|
|
.Bl -tag -compact -width indent
|
|
.It Filter gzip
|
|
.Bl -tag -compact -width indent
|
|
.It Cm compression-level
|
|
The value is interpreted as a decimal integer specifying the
|
|
gzip compression level.
|
|
.El
|
|
.It Filter xz
|
|
.Bl -tag -compact -width indent
|
|
.It Cm compression-level
|
|
The value is interpreted as a decimal integer specifying the
|
|
compression level.
|
|
.El
|
|
.It Format mtree
|
|
.Bl -tag -compact -width indent
|
|
.It Cm cksum , Cm device , Cm flags , Cm gid , Cm gname , Cm indent , Cm link , Cm md5 , Cm mode , Cm nlink , Cm rmd160 , Cm sha1 , Cm sha256 , Cm sha384 , Cm sha512 , Cm size , Cm time , Cm uid , Cm uname
|
|
Enable a particular keyword in the mtree output.
|
|
Prefix with an exclamation mark to disable the corresponding keyword.
|
|
The default is equivalent to
|
|
.Dq device, flags, gid, gname, link, mode, nlink, size, time, type, uid, uname .
|
|
.It Cm all
|
|
Enables all of the above keywords.
|
|
.It Cm use-set
|
|
Enables generation of
|
|
.Cm /set
|
|
lines that specify default values for the following files and/or directories.
|
|
.It Cm indent
|
|
XXX needs explanation XXX
|
|
.El
|
|
.It Format iso9660 - volume metadata
|
|
These options are used to set standard ISO9660 metadata.
|
|
.Bl -tag -compact -width indent
|
|
.It Cm abstract-file Ns = Ns Ar filename
|
|
The file with the specified name will be identified in the ISO9660 metadata
|
|
as holding the abstract for this volume. Default: none.
|
|
.It Cm application-id Ns = Ns Ar filename
|
|
The file with the specified name will be identified in the ISO9660 metadata
|
|
as holding the application identifier for this volume. Default: none.
|
|
.It Cm biblio-file Ns = Ns Ar filename
|
|
The file with the specified name will be identified in the ISO9660 metadata
|
|
as holding the bibliography for this volume. Default: none.
|
|
.It Cm copyright-file Ns = Ns Ar filename
|
|
The file with the specified name will be identified in the ISO9660 metadata
|
|
as holding the copyright for this volume. Default: none.
|
|
.It Cm publisher Ns = Ns Ar filename
|
|
The file with the specified name will be identified in the ISO9660 metadata
|
|
as holding the publisher information for this volume. Default: none.
|
|
.It Cm volume-id Ns = Ns Ar string
|
|
The specified string will be used as the Volume Identifier in the ISO9660 metadata.
|
|
It is limited to 32 bytes. Default: none.
|
|
.El
|
|
.It Format iso9660 - boot support
|
|
These options are used to make an ISO9660 image that can be directly
|
|
booted on various systems.
|
|
.Bl -tag -compact -width indent
|
|
.It Cm boot Ns = Ns Ar filename
|
|
The file matching this name will be used as the El Torito boot image file.
|
|
.It Cm boot-catalog Ns = Ns Ar name
|
|
The name that will be used for the El Torito boot catalog.
|
|
Default:
|
|
.Ar boot.catalog
|
|
.It Cm boot-info-table
|
|
The boot image file provided by the
|
|
.Cm boot Ns = Ns Ar filename
|
|
option will be edited with appropriate boot information in bytes 8 through 64.
|
|
Default: disabled
|
|
.It Cm boot-load-seg Ns = Ns Ar hexadecimal-number
|
|
The load segment for a no-emulation boot image.
|
|
.It Cm boot-load-size Ns = Ns Ar decimal-number
|
|
The number of "virtual" 512-byte sectors to be loaded from a no-emulation boot image.
|
|
Some very old BIOSes can only load very small images, setting this
|
|
value to 4 will often allow such BIOSes to load the first part of
|
|
the boot image (which will then need to be intelligent enough to
|
|
load the rest of itself).
|
|
This should not be needed unless you are trying to support systems with very old BIOSes.
|
|
This defaults to the full size of the image.
|
|
.It Cm boot-type Ns = Ns Ar value
|
|
Specifies the boot semantics used by the El Torito boot image:
|
|
If the
|
|
.Ar value
|
|
is
|
|
.Cm fd ,
|
|
then the boot image is assumed to be a bootable floppy image.
|
|
If the
|
|
.Ar value
|
|
is
|
|
.Cm hd ,
|
|
then the boot image is assumed to be a bootable hard disk image.
|
|
If the
|
|
.Ar value
|
|
is
|
|
.Cm no-emulation ,
|
|
the boot image is used without floppy or hard disk emulation.
|
|
If the boot image is exactly 1.2MB, 1.44MB, or 2.88MB, then
|
|
the default is
|
|
.Cm fd ,
|
|
otherwise the default is
|
|
.Cm no-emulation.
|
|
.El
|
|
.It Format iso9660 - filename and size extensions
|
|
Various extensions to the base ISO9660 format.
|
|
.Bl -tag -compact -width indent
|
|
.It Cm allow-ldots
|
|
If enabled, allows filenames to begin with a leading period.
|
|
If disabled, filenames that begin with a leading period will have
|
|
that period replaced by an underscore character in the standard ISO9660
|
|
namespace.
|
|
This does not impact names stored in the Rockridge or Joliet extension area.
|
|
Default: disabled.
|
|
.It Cm allow-lowercase
|
|
If enabled, allows filenames to contain lowercase characters.
|
|
If disabled, filenames will be forced to uppercase.
|
|
This does not impact names stored in the Rockridge or Joliet extension area.
|
|
Default: disabled.
|
|
.It Cm allow-multidot
|
|
If enabled, allows filenames to contain multiple period characters, in violation of the ISO9660 specification.
|
|
If disabled, additional periods will be converted to underscore characters.
|
|
This does not impact names stored in the Rockridge or Joliet extension area.
|
|
Default: disabled.
|
|
.It Cm allow-period
|
|
If enabled, allows filenames to contain trailing period characters, in violation of the ISO9660 specification.
|
|
If disabled,trailing periods will be converted to underscore characters.
|
|
This does not impact names stored in the Rockridge or Joliet extension area.
|
|
Default: disabled.
|
|
.It Cm allow-pvd-lowercase
|
|
If enabled, the Primary Volume Descriptor may contain lowercase ASCII characters, in violation of the ISO9660 specification.
|
|
If disabled, characters will be converted to uppercase ASCII.
|
|
Default: disabled.
|
|
.It Cm allow-sharp-tilde
|
|
If enabled, sharp and tilde characters will be permitted in filenames, in violation if the ISO9660 specification.
|
|
If disabled, such characters will be converted to underscore characters.
|
|
Default: disabled.
|
|
.It Cm allow-vernum
|
|
If enabled, version numbers will be included with files.
|
|
If disabled, version numbers will be suppressed, in violation of the ISO9660 standard.
|
|
This does not impact names stored in the Rockridge or Joliet extension area.
|
|
Default: enabled.
|
|
.It Cm iso-level
|
|
This enables support for file size and file name extensions in the
|
|
core ISO9660 area.
|
|
The name extensions specified here do not affect the names stored in the Rockridge or Joliet extension areas.
|
|
.Bl -tag -compact -width indent
|
|
.It Cm iso-level=1
|
|
The most compliant form of ISO9660 image.
|
|
Filenames are limited to 8.3 uppercase format,
|
|
directory names are limited to 8 uppercase characters,
|
|
files are limited to 4 GiB,
|
|
the complete ISO9660 image cannot exceed 4 GiB.
|
|
.It Cm iso-level=2
|
|
Filenames are limited to 30 uppercase characters with a 30-character extension,
|
|
directory names are limited to 30 characters,
|
|
files are limited to 4 GiB.
|
|
.It Cm iso-level=3
|
|
As with
|
|
.Cm iso-level=2 ,
|
|
except that files may exceed 4 GiB.
|
|
.It Cm iso-level=4
|
|
As with
|
|
.Cm iso-level=3 ,
|
|
except that filenames may be up to 193 characters
|
|
and may include arbitrary 8-bit characters.
|
|
.El
|
|
.It Cm joliet
|
|
Microsoft's Joliet extensions store a completely separate set of directory information about each file.
|
|
In particular, this information includes Unicode filenames of up to 255 characters.
|
|
Default: enabled.
|
|
.It Cm limit-depth
|
|
If enabled, libarchive will use directory relocation records to ensure that
|
|
no pathname exceeds the ISO9660 limit of 8 directory levels.
|
|
If disabled, no relocation will occur.
|
|
Default: enabled.
|
|
.It Cm limit-dirs
|
|
If enabled, libarchive will cause an error if there are more than
|
|
65536 directories.
|
|
If disabled, there is no limit on the number of directories.
|
|
Default: enabled
|
|
.It Cm pad
|
|
If enabled, 300 kiB of zero bytes will be appended to the end of the archive.
|
|
Default: enabled
|
|
.It Cm relaxed-filenames
|
|
If enabled, all 7-bit ASCII characters are permitted in filenames
|
|
(except lowercase characters unless
|
|
.Cm allow-lowercase
|
|
is also specified).
|
|
This violates ISO9660 standards.
|
|
This does not impact names stored in the Rockridge or Joliet extension area.
|
|
Default: disabled.
|
|
.It Cm rockridge
|
|
The Rockridge extensions store an additional set of POSIX-style file
|
|
information with each file, including mtime, atime, ctime, permissions,
|
|
and long filenames with arbitrary 8-bit characters.
|
|
These extensions also support symbolic links and other POSIX file types.
|
|
Default: enabled.
|
|
.El
|
|
.It Format iso9660 - zisofs support
|
|
The zisofs extensions permit each file to be independently compressed
|
|
using a gzip-compatible compression.
|
|
This can provide significant size savings, but requires the reading
|
|
system to have support for these extensions.
|
|
These extensions are disabled by default.
|
|
.Bl -tag -compact -width indent
|
|
.It Cm compression-level Ns = Ns number
|
|
The compression level used by the deflate compressor.
|
|
Ranges from 0 (least effort) to 9 (most effort).
|
|
Default: 6
|
|
.It Cm zisofs
|
|
Synonym for
|
|
.Cm zisofs=direct .
|
|
.It Cm zisofs=direct
|
|
Compress each file in the archive.
|
|
Unlike
|
|
.Cm zisofs=indirect ,
|
|
this is handled entirely within libarchive and does not require a
|
|
separate utility.
|
|
For best results, libarchive tests each file and will store
|
|
the file uncompressed if the compression does not actually save any space.
|
|
In particular, files under 2k will never be compressed.
|
|
Note that boot image files are never compressed.
|
|
.It Cm zisofs=indirect
|
|
Recognizes files that have already been compressed with the
|
|
.Cm mkzftree
|
|
utility and sets up the necessary file metadata so that
|
|
readers will correctly identify these as zisofs-compressed files.
|
|
.It Cm zisofs-exclude Ns = Ns Ar filename
|
|
Specifies a filename that should not be compressed when using
|
|
.Cm zisofs=direct .
|
|
This option can be provided multiple times to suppress compression
|
|
on many files.
|
|
.El
|
|
.It Format zip
|
|
.Bl -tag -compact -width indent
|
|
.It Cm compression
|
|
The value is either
|
|
.Dq store
|
|
or
|
|
.Dq deflate
|
|
to indicate how the following entries should be compressed.
|
|
Note that this setting is ignored for directories, symbolic links,
|
|
and other special entries.
|
|
.It Cm experimental
|
|
This boolean option enables or disables experimental Zip features
|
|
that may not be compatible with other Zip implementations.
|
|
.It Cm fakecrc32
|
|
This boolean option disables CRC calculations.
|
|
All CRC fields are set to zero.
|
|
It should not be used except for testing purposes.
|
|
.It Cm hdrcharset
|
|
This sets the character set used for filenames.
|
|
.It Cm zip64
|
|
Zip64 extensions provide additional file size information
|
|
for entries larger than 4 GiB.
|
|
They also provide extended file offset and archive size information
|
|
when archives exceed 4 GiB.
|
|
By default, the Zip writer selectively enables these extensions only as needed.
|
|
In particular, if the file size is unknown, the Zip writer will
|
|
include Zip64 extensions to guard against the possibility that the
|
|
file might be larger than 4 GiB.
|
|
.Pp
|
|
Setting this boolean option will force the writer to use Zip64 extensions
|
|
even for small files that would not otherwise require them.
|
|
This is primarily useful for testing.
|
|
.Pp
|
|
Disabling this option with
|
|
.Cm !zip64
|
|
will force the Zip writer to avoid Zip64 extensions:
|
|
It will reject files with size greater than 4 GiB,
|
|
it will reject any new entries once the total archive size reaches 4 GiB,
|
|
and it will not use Zip64 extensions for files with unknown size.
|
|
In particular, this can improve compatibility when generating archives
|
|
where the entry sizes are not known in advance.
|
|
.El
|
|
.El
|
|
.Sh EXAMPLES
|
|
The following example creates an archive write handle to
|
|
create a gzip-compressed ISO9660 format image.
|
|
The two options here specify that the ISO9660 archive will use
|
|
.Ar kernel.img
|
|
as the boot image for El Torito booting, and that the gzip
|
|
compressor should use the maximum compression level.
|
|
.Bd -literal -offset indent
|
|
a = archive_write_new();
|
|
archive_write_add_filter_gzip(a);
|
|
archive_write_set_format_iso9660(a);
|
|
archive_write_set_options(a, "boot=kernel.img,compression=9");
|
|
archive_write_open_filename(a, filename, blocksize);
|
|
.Ed
|
|
.\"
|
|
.Sh ERRORS
|
|
Detailed error codes and textual descriptions are available from the
|
|
.Fn archive_errno
|
|
and
|
|
.Fn archive_error_string
|
|
functions.
|
|
.\"
|
|
.Sh SEE ALSO
|
|
.Xr tar 1 ,
|
|
.Xr libarchive 3 ,
|
|
.Xr archive_read_set_options 3 ,
|
|
.Xr archive_write 3
|
|
.Sh HISTORY
|
|
The
|
|
.Nm libarchive
|
|
library first appeared in
|
|
.Fx 5.3 .
|
|
.Sh AUTHORS
|
|
.An -nosplit
|
|
The options support for libarchive was originally implemented by
|
|
.An Michihiro NAKAJIMA .
|
|
.Sh BUGS
|