#
# 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 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 && LONG_OPTS
	help
	  Support long options for the run-parts applet.

config FEATURE_RUN_PARTS_FANCY
	bool "Support additional arguments"
	default n
	depends on RUN_PARTS
	help
	  Support additional options:
	  -l --list print the names of the all matching files (not
	            limited to executables), but don't actually run them.

config START_STOP_DAEMON
	bool "start-stop-daemon"
	default n
	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 n
	depends on START_STOP_DAEMON
	help
	  Support additional arguments.
	  -o|--oknodo ignored since we exit with 0 anyway
	  -v|--verbose
	  -N|--nicelevel N

config FEATURE_START_STOP_DAEMON_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on START_STOP_DAEMON && LONG_OPTS
	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

