#
# 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_COMPATABILITY
	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
	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
