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

mainmenu_option next_comment
comment 'Archival Utilities'

bool 'ar'	    CONFIG_AR
if [ "$CONFIG_AR" = "y" ] ; then
    bool '  Enable support for long filenames (not need for debs)'	CONFIG_FEATURE_AR_LONG_FILENAMES
fi
bool 'bunzip2'	    CONFIG_BUNZIP2
bool 'cpio'	    CONFIG_CPIO
bool 'dpkg'	    CONFIG_DPKG
bool 'dpkg_deb'	    CONFIG_DPKG_DEB
if [ "$CONFIG_DPKG_DEB" = "y" ] ; then
    bool '  -x support only'	CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
fi
bool 'gunzip'	    CONFIG_GUNZIP
bool 'gzip'	    CONFIG_GZIP
bool 'rpm2cpio'     CONFIG_RPM2CPIO
bool 'tar'	    CONFIG_TAR
if [ "$CONFIG_TAR" = "y" ] ; then
    bool '  Enable archive creation'	CONFIG_FEATURE_TAR_CREATE
    bool '  Enable -X and --exclude options (exclude files)'	CONFIG_FEATURE_TAR_EXCLUDE
    bool '  Enable -z option'	CONFIG_FEATURE_TAR_GZIP
    bool '  Enable support for old tar header format'	CONFIG_FEATURE_TAR_OLD_FORMAT
    bool '  Enable support for GNU long filenames' CONFIG_FEATURE_GNUTAR_LONG_FILENAME
fi
if [ "$CONFIG_CPIO" = "y" -o "$CONFIG_TAR" = "y" ] ; then
    bool '  Enable tape drive support' CONFIG_FEATURE_UNARCHIVE_TAPE
fi
bool 'unzip'	    CONFIG_UNZIP
endmenu
