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

menu "Runit Utilities"

config RUNSV
	bool "runsv"
	default n
	help
	  runsv starts and monitors a service and optionally an appendant log
	  service.

config RUNSVDIR
	bool "runsvdir"
	default n
	help
	  runsvdir starts a runsv process for each subdirectory, or symlink to
	  a directory, in the services directory dir, up to a limit of 1000
	  subdirectories, and restarts a runsv process if it terminates.

config SV
	bool "sv"
	default n
	help
	  sv reports the current status and controls the state of services
	  monitored by the runsv supervisor.

config SVLOGD
	bool "svlogd"
	default n
	help
	  svlogd continuously reads log data from its standard input, optionally
	  filters log messages, and writes the data to one or more automatically
	  rotated logs.

config CHPST
	bool "chpst"
	default n
	help
	  chpst changes the process state according to the given options, and
	  execs specified program.

config SETUIDGID
	bool "setuidgid"
	help
	  Sets soft resource limits as specified by options

config ENVUIDGID
	bool "envuidgid"
	help
	  Sets $UID to account's uid and $GID to account's gid

config ENVDIR
	bool "envdir"
	help
	  Sets various environment variables as specified by files
	  in the given directory

config SOFTLIMIT
	bool "softlimit"
	help
	  Sets soft resource limits as specified by options

endmenu
