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

menu "Debian Utilities"

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

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

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

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

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 FEATURE_RUN_PARTS_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on RUN_PARTS && GETOPT_LONG
	help
	  Support long options for the run-parts applet.

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 FEATURE_START_STOP_DAEMON_FANCY
	bool "Support additional arguments"
	default y
	depends on START_STOP_DAEMON
	help
	  Support additional arguments.
	  -o|--oknodo ignored since we exit with 0 anyway
	  -v|--verbose

config FEATURE_START_STOP_DAEMON_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on START_STOP_DAEMON && GETOPT_LONG
	help
	  Support long options for the start-stop-daemon applet.

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

endmenu

