#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "Archival Utilities"

config AR
	bool "ar"
	default n
	help
	  ar is an archival utility program used to create, modify, and
	  extract contents from archives.  An archive is a single file holding
	  a collection of other files in a structure that makes it possible to
	  retrieve the original individual files (called archive members).
	  The original files' contents, mode (permissions), timestamp, owner,
	  and group are preserved in the archive, and can be restored on
	  extraction.

	  The stored filename is limited to 15 characters. (for more information
	  see long filename support).
	  ar has 60 bytes of overheads for every stored file.

	  This implementation of ar can extract archives, it cannot create or
	  modify them.
	  On an x86 system, the ar applet adds about 1K.

	  Unless you have a specific application which requires ar, you should
	  probably say N here.

config FEATURE_AR_LONG_FILENAMES
	bool "Enable support for long filenames (not need for debs)"
	default n
	depends on AR
	help
	  By default the ar format can only store the first 15 characters of the
	  filename, this option removes that limitation.
	  It supports the GNU ar long filename method which moves multiple long
	  filenames into a the data section of a new ar entry.

config BUNZIP2
	bool "bunzip2"
	default n
	help
	  bunzip2 is a compression utility using the Burrows-Wheeler block
	  sorting text compression algorithm, and Huffman coding.  Compression
	  is generally considerably better than that achieved by more
	  conventional LZ77/LZ78-based compressors, and approaches the
	  performance of the PPM family of statistical compressors.

	  The BusyBox bunzip2 applet is limited to de-compression only.
	  On an x86 system, this applet adds about 11K.

	  Unless you have a specific application which requires bunzip2, you
	  should probably say N here.

config CPIO
	bool "cpio"
	default n
	help
	  cpio is an archival utility program used to create, modify, and extract
	  contents from archives.
	  cpio has 110 bytes of overheads for every stored file.

	  This implementation of cpio can extract cpio archives created in the
	  "newc" or "crc" format, it cannot create or modify them.

	  Unless you have a specific application which requires cpio, you should
	  probably say N here.

config DPKG
	bool "dpkg"
	default n
	help
	  dpkg is a medium-level tool to install, build, remove and manage Debian packages.

	  This implementation of dpkg has a number of limitations, you should use the
	  official dpkg if possible.

config DPKG_DEB
	bool "dpkg_deb"
	default n
	help
	  dpkg-deb packs, unpacks and provides information about Debian archives.

	  This implementation of dpkg-deb cannot pack archives.

	  Unless you have a specific application which requires dpkg-deb, you should
	  probably say N here.

config FEATURE_DPKG_DEB_EXTRACT_ONLY
	bool "extract only (-x)"
	default n
	depends on DPKG_DEB
	help
	  This reduces dpkg-deb to the equivalent of "ar -p <deb> data.tar.gz | tar -zx".
	  However it saves space as none of the extra dpkg-deb, ar or tar options are
	  needed, they are linked to internally.

config GUNZIP
	bool "gunzip"
	default n
	help
	  gunzip is used to decompress archives created by gzip.
	  You can use the `-t' option to test the integrity of
	  an archive, without decompressing it.

config FEATURE_GUNZIP_UNCOMPRESS
	bool "Uncompress support"
	default n
	depends on GUNZIP
	help
	  Enable if you want gunzip to have the ability to decompress
	  archives created by the program compress (not much
	  used anymore).

config GZIP
	bool "gzip"
	default n
	help
	  gzip is used to compress files.
	  It's probably the most widely used UNIX compression program.

config RPM2CPIO
	bool "rpm2cpio"
	default n
	help
	  Converts an RPM file into a CPIO archive.

config RPM
	bool "rpm"
	default n
	help
	  Mini RPM applet - queries and extracts

config TAR
	bool "tar"
	default n
	help
	  tar is an archiving program. It's commonly used with gzip to
	  create compressed archives. It's probably the most widely used
	  UNIX archive program.

config FEATURE_TAR_CREATE
	bool "Enable archive creation"
	default y
	depends on TAR
	help
	  If you enable this option you'll be able to create
	  tar archives using the `-c' option.

config FEATURE_TAR_BZIP2
	bool "Enable -j option to handle .tar.bz2 files"
	default n
	depends on TAR
	help
	  If you enable this option you'll be able to extract
	  archives compressed with bzip2.

config FEATURE_TAR_LZMA
	bool "Enable -a option to handle .tar.lzma files"
	default n
	depends on TAR
	help
	  If you enable this option you'll be able to extract
	  archives compressed with lzma.

config FEATURE_TAR_FROM
	bool "Enable -X (exclude from) and -T (include from) options)"
	default n
	depends on TAR
	help
	  If you enable this option you'll be able to specify
	  a list of files to include or exclude from an archive.

config FEATURE_TAR_GZIP
	bool "Enable -z option"
	default y
	depends on TAR
	help
	  If you enable this option tar will be able to call gzip,
	  when creating or extracting tar gziped archives.

config FEATURE_TAR_COMPRESS
	bool "Enable -Z option"
	default n
	depends on TAR
	help
	  If you enable this option tar will be able to call uncompress,
	  when extracting .tar.Z archives.

config FEATURE_TAR_OLDGNU_COMPATIBILITY
	bool "Enable support for old tar header format"
	default N
	depends on TAR
	help
	  This option is required to unpack archives created in
	  the old GNU format; help to kill this old format by
	  repacking your ancient archives with the new format.

config FEATURE_TAR_GNU_EXTENSIONS
	bool "Enable support for some GNU tar extensions"
	default y
	depends on TAR
	help
	  With this option busybox supports GNU long filenames and
	  linknames.

config FEATURE_TAR_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on TAR && GETOPT_LONG
	help
		Enable use of long options, increases size by about 400 Bytes

config UNCOMPRESS
	bool "uncompress"
	default n
	help
	  uncompress is used to decompress archives created by compress.
	  Not much used anymore, replaced by gzip/gunzip.

config UNLZMA
	bool "unlzma"
	default n
	help
	  unlzma is a compression utility using the Lempel-Ziv-Markov chain
	  compression algorithm, and range coding.  Compression
	  is generally considerably better than that achieved by the bzip2
	  compressors.

	  The BusyBox unlzma applet is limited to de-compression only.
	  On an x86 system, this applet adds about 4K.

	  Unless you have a specific application which requires unlzma, you
	  should probably say N here.

config FEATURE_LZMA_FAST
	bool "Optimze unlzma for speed"
	default n
	depends on UNLZMA
	help
	  This option reduces decompression time by about 33% at the cost of
	  a 2K bigger binary.

config UNZIP
	bool "unzip"
	default n
	help
	  unzip will list or extract files from a ZIP archive,
	  commonly found on DOS/WIN systems. The default behavior
	  (with no options) is to extract the archive into the
	  current directory. Use the `-d' option to extract to a
	  directory of your choice.

comment "Common options for cpio and tar"
	depends on CPIO || TAR

config FEATURE_UNARCHIVE_TAPE
	bool "Enable tape drive support"
	default n
	depends on CPIO || TAR
	help
	  I don't think this is needed anymore.

comment "Common options for dpkg and dpkg_deb"
	depends on DPKG || DPKG_DEB

config FEATURE_DEB_TAR_GZ
	bool "gzip debian packages (normal)"
	default y if DPKG || DPKG_DEB
	depends on DPKG || DPKG_DEB
	help
	  This is the default compression method inside the debian ar file.

	  If you want compatibility with standard .deb's you should say yes here.

config FEATURE_DEB_TAR_BZ2
	bool "bzip2 debian packages"
	default n
	depends on DPKG || DPKG_DEB
	help
	  This allows dpkg and dpkg-deb to extract deb's that are compressed internally
	  with bzip2 instead of gzip.

	  You only want this if you are creating your own custom debian packages that
	  use an internal control.tar.bz2 or data.tar.bz2.

config FEATURE_DEB_TAR_LZMA
	bool "lzma debian packages"
	default n
	depends on DPKG || DPKG_DEB
	help
	  This allows dpkg and dpkg-deb to extract deb's that are compressed
	  internally with lzma instead of gzip.

	  You only want this if you are creating your own custom debian
	  packages that use an internal control.tar.lzma or data.tar.lzma.

endmenu
