123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480 |
- .\" 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 writing 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 either
- .Cm ARCHIVE_OK
- if the option was successfully handled or
- .Cm ARCHIVE_WARN
- if the option was unrecognized by the module or could otherwise
- not be handled.
- 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 Fn archive_write_set_option
- 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 Fn archive_write_set_options
- .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
- More 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
|