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

menu "Debian Utilities"

config CONFIG_MKTEMP
	bool "mktemp"
	default n
	help
	  mktemp is used to create unique temporary files

config CONFIG_PIPE_PROGRESS
	bool "pipe_progress"
	default n
	help
	  Display a dot to indicate pipe activity.

config CONFIG_READLINK
	bool "readlink"
	default n
	help
	  This program reads a symbolic link and returns the name
	  of the file it points to

config CONFIG_FEATURE_READLINK_FOLLOW
	bool "  Enable canonicalization by following all symlinks (-f)"
	default n
	depends on CONFIG_READLINK
	help
	  Enable the readlink option (-f).

config CONFIG_RUN_PARTS
	bool "run-parts"
	default n
	help
	  run-parts is a utility designed to run all the scripts in a directory.

	  It is useful to set up a directory like cron.daily, where you need to
	  execute all the scripts in that directory.

	  In this implementation of run-parts some features (such as report mode)
	  are not implemented.

	  Unless you know that run-parts is used in some of your scripts
	  you can safely say N here.

config CONFIG_START_STOP_DAEMON
	bool "start-stop-daemon"
	default y
	help
	  start-stop-daemon is used to control the creation and
	  termination of system-level processes, usually the ones
	  started during the startup of the system.

config CONFIG_WHICH
	bool "which"
	default n
	help
	  which is used to find programs in your PATH and
	  print out their pathnames.

endmenu

