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

menu "Miscellaneous Utilities"

config CONFIG_ADJTIMEX
	bool "adjtimex"
	default n
	help
	  Adjtimex reads and optionally sets adjustment parameters for
	  the Linux clock adjustment algorithm.

config CONFIG_BBCONFIG
	bool "bbconfig"
	default n
	help
	  The bbconfig applet will print the config file with which
	  busybox was built.

config CONFIG_CROND
	bool "crond"
	default n
	select CONFIG_FEATURE_SUID
	help
	  Crond is a background daemon that parses individual crontab
	  files and executes commands on behalf of the users in question.
	  This is a port of dcron from slackware.  It uses files of the
	  format /var/spool/cron/crontabs/<username> files, for example:
	      $ cat /var/spool/cron/crontabs/root
	      # Run daily cron jobs at 4:40 every day:
	      40 4 * * * /etc/cron/daily > /dev/null 2>&1
	  Note that Busybox binary must be setuid root for this applet to
	  work properly.

config CONFIG_DEBUG_CROND_OPTION
	bool "Support debug option -d"
	depends on CONFIG_CROND
	default n
	help
	  Support option -d to enter debug mode.

config CONFIG_FEATURE_CROND_CALL_SENDMAIL
	bool "Using /usr/sbin/sendmail?"
	default n
	depends on CONFIG_CROND
	help
	  Support calling /usr/sbin/sendmail for send cmd outputs.

config CONFIG_CRONTAB
	bool "crontab"
	default n
	select CONFIG_FEATURE_SUID
	help
	  Crontab manipulates the crontab for a particular user.  Only
	  the superuser may specify a different user and/or crontab directory.

config CONFIG_DC
	bool "dc"
	default n
	help
	  Dc is a reverse-polish desk calculator which supports unlimited
	  precision arithmetic.

config CONFIG_DEVFSD
	bool "devfsd (obsolete)"
	default n
	help
	  This is deprecated, and will be going away in a future release.

	  Provides compatibility with old device names on a devfs systems.
	  You should set it to true if you have devfs enabled.
	  The following keywords in devsfd.conf are supported:
	  "CLEAR_CONFIG", "INCLUDE", "OPTIONAL_INCLUDE", "RESTORE",
	  "PERMISSIONS", "EXECUTE", "COPY", "IGNORE",
	  "MKOLDCOMPAT", "MKNEWCOMPAT","RMOLDCOMPAT", "RMNEWCOMPAT".

	   But only if they are written UPPERCASE!!!!!!!!

config CONFIG_DEVFSD_MODLOAD
	bool "Adds support for MODLOAD keyword in devsfd.conf"
	default n
	depends on CONFIG_DEVFSD
	help
	  This actually doesn't work with busybox modutils but needs
	  the external modutils.

config CONFIG_DEVFSD_FG_NP
	bool "Enables the -fg and -np options"
	default n
	depends on CONFIG_DEVFSD
	help
		-fg	Run the daemon in the foreground.
		-np	Exit  after  parsing  the configuration file. Do not poll for events.

config CONFIG_DEVFSD_VERBOSE
	bool "Increases logging (and size)"
	default n
	depends on CONFIG_DEVFSD
	help
	  Increases logging to stderr or syslog.

config CONFIG_FEATURE_DEVFS
	bool "  Use devfs names for all devices (obsolete)"
	default n
	help
	  This tells busybox to look for names like /dev/loop/0 instead of
	  /dev/loop0.  If your /dev directory has normal names instead of
	  devfs names, you don't want this.

	  This is obsolete and will be going away someday.  Consider it
	  deprecated.

config CONFIG_EJECT
	bool "eject"
	default n
	help
	  Used to eject cdroms.  (defaults to /dev/cdrom)

config CONFIG_LAST
	bool "last"
	default n
	select CONFIG_FEATURE_WTMP
	help
	  'last' displays a list of the last users that logged into the system.

config CONFIG_LESS
	bool "less"
	default n
	help
	  'less' is a pager, meaning that it displays text files. It possesses
	  a wide array of features, and is an improvement over 'more'.

config CONFIG_FEATURE_LESS_BRACKETS
	bool "Enable bracket searching"
	default y
	depends on CONFIG_LESS
	help
	  This option adds the capability to search for matching left and right
	  brackets, facilitating programming.

config CONFIG_FEATURE_LESS_FLAGS
	bool "Enable extra flags"
	default y
	depends on CONFIG_LESS
	help
	  The extra flags provided do the following:

	  The -M flag enables a more sophisticated status line.
	  The -m flag enables a simpler status line with a percentage.

config CONFIG_FEATURE_LESS_FLAGCS
	bool "Enable flag changes"
	default n
	depends on CONFIG_LESS
	help
	  This enables the ability to change command-line flags within
	  less itself.

config CONFIG_FEATURE_LESS_MARKS
	bool "Enable marks"
	default n
	depends on CONFIG_LESS
	help
	  Marks enable positions in a file to be stored for easy reference.

config CONFIG_FEATURE_LESS_REGEXP
	bool "Enable regular expressions"
	default n
	depends on CONFIG_LESS
	help
	  Enable regular expressions, allowing complex file searches.

config CONFIG_HDPARM
	bool "hdparm"
	default n
	help
	  Get/Set hard drive parameters.  Primarily intended for ATA
	  drives.  Adds about 13k (or around 30k if you enable the
	  CONFIG_FEATURE_HDPARM_GET_IDENTITY option)....

config CONFIG_FEATURE_HDPARM_GET_IDENTITY
	bool "Support obtaining detailed information directly from drives"
	default y
	depends on CONFIG_HDPARM
	help
	  Enables the -I and -i options to obtain detailed information
	  directly from drives about their capabilities and supported ATA
	  feature set. If no device name is specified, hdparm will read
	  identify data from stdin. Enabling this option will add about 16k...

config CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF
	bool "Register an IDE interface (DANGEROUS)"
	default n
	depends on CONFIG_HDPARM
	help
	  Enables the 'hdparm -R' option to register an IDE interface.
	  This is dangerous stuff, so you should probably say N.

config CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
	bool "Un-register an IDE interface (DANGEROUS)"
	default n
	depends on CONFIG_HDPARM
	help
	  Enables the 'hdparm -U' option to un-register an IDE interface.
	  This is dangerous stuff, so you should probably say N.

config CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
	bool "perform device reset (DANGEROUS)"
	default n
	depends on CONFIG_HDPARM
	help
	  Enables the 'hdparm -w' option to perform a device reset.
	  This is dangerous stuff, so you should probably say N.

config CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
	bool "tristate device for hotswap (DANGEROUS)"
	default n
	depends on CONFIG_HDPARM
	help
	  Enables the 'hdparm -x' option to tristate device for hotswap,
	  and the '-b' option to get/set bus state.  This is dangerous
	  stuff, so you should probably say N.

config CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
	bool "get/set using_dma flag (DANGEROUS)"
	default n
	depends on CONFIG_HDPARM
	help
	  Enables the 'hdparm -d' option to get/set using_dma flag.
	  This is dangerous stuff, so you should probably say N.

config CONFIG_MAKEDEVS
	bool "makedevs"
	default n
	help
	  'makedevs' is a utility used to create a batch of devices with
	  one command.
	  .
	  There are two choices for command line behaviour, the interface
	  as used by LEAF/Linux Router Project, or a device table file.
	  .
	  'leaf' is traditionally what busybox follows, it allows multiple
	  devices of a particluar type to be created per command.
	  e.g. /dev/hda[0-9]
          Device properties are passed as command line arguments.
	  .
	  'table' reads device properties from a file or stdin, allowing
	  a batch of unrelated devices to be made with one command.
          User/group names are allowed as an alternative to uid/gid.

choice
	prompt "Choose makedevs behaviour"
	depends CONFIG_MAKEDEVS
	default CONFIG_FEATURE_MAKEDEVS_TABLE

config CONFIG_FEATURE_MAKEDEVS_LEAF
        bool "leaf"

config CONFIG_FEATURE_MAKEDEVS_TABLE
	bool "table"

endchoice

config CONFIG_MOUNTPOINT
	bool "mountpoint"
	default n
	help
	  mountpoint checks if the directory is a mountpoint.

config CONFIG_MT
	bool "mt"
	default n
	help
	  mt is used to control tape devices.  You can use the mt utility
	  to advance or rewind a tape past a specified number of archive
	  files on the tape.

config CONFIG_RUNLEVEL
        bool "runlevel"
	default n
	help
 	  find the current and previous system runlevel.

	  This applet uses utmp but does not rely on busybox supporing
	  utmp on purpose. It is used by e.g. emdebian via /etc/init.d/rc.

config CONFIG_RX
        bool "rx"
	default n
	help
 	  Receive files using the Xmodem protocol.

config CONFIG_STRINGS
	bool "strings"
	default n
	help
	  strings prints the printable character sequences for each file
	  specified.

config CONFIG_SETSID
	bool "setsid"
	default n
	help
	  setsid runs a program in a new session

config CONFIG_TASKSET
	bool "taskset"
	default n
	help
	  Retrieve or set a processes's CPU affinity

config CONFIG_TIME
	bool "time"
	default n
	help
	  The time command runs the specified program with the given arguments.
	  When the command finishes, time writes a message to standard output
	  giving timing statistics about this program run.

config CONFIG_WATCHDOG
	bool "watchdog"
	default n
	help
	  The watchdog utility is used with hardware or software watchdog
	  device drivers.  It opens the specified watchdog device special file
	  and periodically writes a magic character to the device.  If the
	  watchdog applet ever fails to write the magic character within a
	  certain amount of time, the watchdog device assumes the system has
	  hung, and will cause the hardware to reboot.

endmenu

