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

menu "Archival Utilities"

config 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 CONFIG_FEATURE_AR_LONG_FILENAMES
	bool "Enable support for long filenames (not need for debs)"
	default n
	depends on CONFIG_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 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 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 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 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 CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
	bool "extract only (-x)"
	default n
	depends on CONFIG_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 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 CONFIG_FEATURE_GUNZIP_UNCOMPRESS
	bool "Uncompress support"
	default n
	depends on CONFIG_GUNZIP
	help
	  Enable if you want gunzip to have the ability to decompress
	  archives created by the program compress (not much
	  used anymore).

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

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

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

config 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 CONFIG_FEATURE_TAR_CREATE
	bool "Enable archive creation"
	default y
	depends on CONFIG_TAR
	help
	  If you enable this option you'll be able to create
	  tar archives using the `-c' option.

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

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

config CONFIG_FEATURE_TAR_FROM
	bool "Enable -X (exclude from) and -T (include from) options)"
	default n
	depends on CONFIG_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 CONFIG_FEATURE_TAR_GZIP
	bool "Enable -z option"
	default y
	depends on CONFIG_TAR
	help
	  If you enable this option tar will be able to call gzip,
	  when creating or extracting tar gziped archives.

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

config CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
	bool "Enable support for old tar header format"
	default N
	depends on CONFIG_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 CONFIG_FEATURE_TAR_GNU_EXTENSIONS
	bool "Enable support for some GNU tar extensions"
	default y
	depends on CONFIG_TAR
	help
	  With this option busybox supports GNU long filenames and
	  linknames.

config CONFIG_FEATURE_TAR_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on CONFIG_TAR && CONFIG_GETOPT_LONG
	help
		Enable use of long options, increases size by about 400 Bytes

config 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 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 CONFIG_FEATURE_LZMA_FAST
	bool "Optimze unlzma for speed"
	default n
	depends on CONFIG_UNLZMA
	help
	  This option reduce decompression time by about 33% at the cost of
	  a 2K bigger binary.

config 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 CONFIG_CPIO || CONFIG_TAR

config CONFIG_FEATURE_UNARCHIVE_TAPE
	bool "Enable tape drive support"
	default n
	depends on CONFIG_CPIO || CONFIG_TAR
	help
	  I don't think this is needed anymore.

comment "Common options for dpkg and dpkg_deb"
	depends on CONFIG_DPKG || CONFIG_DPKG_DEB

config CONFIG_FEATURE_DEB_TAR_GZ
	bool "gzip debian packages (normal)"
	default y if CONFIG_DPKG || CONFIG_DPKG_DEB
	depends on CONFIG_DPKG || CONFIG_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 CONFIG_FEATURE_DEB_TAR_BZ2
	bool "bzip2 debian packages"
	default n
	depends on CONFIG_DPKG || CONFIG_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 CONFIG_FEATURE_DEB_TAR_LZMA
	bool "lzma debian packages"
	default n
	depends on CONFIG_DPKG || CONFIG_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
