#
# 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_FEATURE_READLINK_FOLLOW
	bool "Enable canonicalization by following all symlinks (-f)"
	default n
	depends on CONFIG_READLINK
	help
	  Enable the readlink option (-f).

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

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

config CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on CONFIG_START_STOP_DAEMON && CONFIG_GETOPT_LONG
	help
	  Support long options for the start-stop-daemon applet.

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

endmenu

