#
# 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_READLINK
	bool "readlink"
	default n
	help
	  This program reads a symbolic link and returns the name
	  of the file it points to

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.

	  This implementation of run-parts does not accept long options, and
	  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

