#
# 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 RPM packages.

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
