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

