#
# 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 && GETOPT_LONG
	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 && 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

