#
# 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
	select CONFIG_FEATURE_SYSLOG
	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
	select CONFIG_FEATURE_SYSLOG
	help
	  This is deprecated, and will be removed at the end of 2008.

	  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 is obsolete and will be going away at the end of 2008..

	  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.

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_READAHEAD
        bool "readahead"
	default n
	help
 	  Preload the files listed on the command line into RAM cache so that
	  subsequent reads on these files will not block on disk I/O.

	  This applet just calls the readahead(2) system call on each file.
	  It is mainly useful in system startup scripts to preload files
	  or executables before they are used.  When used at the right time
	  (in particular when a CPU boundprocess is running) it can
	  significantly speed up system startup.

	  As readahead(2) blocks until each file has been read, it is best to
	  run this applet as a background job. 

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

