/* vi: set sw=4 ts=4: */
// This file defines the feature set to be compiled into busybox.
// When you turn things off here, they won't be compiled in at all.
//
//// This file is parsed by sed.  You MUST use single line comments.
//   i.e.,  //#define CONFIG_BLAH
//
//
// BusyBox Applications
//#define CONFIG_ADJTIMEX
//#define CONFIG_AR
//#define CONFIG_ASH
#define CONFIG_BASENAME
#define CONFIG_CAT
#define CONFIG_CHGRP
#define CONFIG_CHMOD
#define CONFIG_CHOWN
#define CONFIG_CHROOT
#define CONFIG_CHVT
#define CONFIG_CLEAR
//#define CONFIG_CMP
#define CONFIG_CP
//#define CONFIG_CPIO
#define CONFIG_CUT
#define CONFIG_DATE
//#define CONFIG_DC
#define CONFIG_DD
//#define CONFIG_DEALLOCVT
#define CONFIG_DF
#define CONFIG_DIRNAME
#define CONFIG_DMESG
//#define CONFIG_DOS2UNIX
//#define CONFIG_DPKG
//#define CONFIG_DPKG_DEB
//#define CONFIG_DUTMP
#define CONFIG_DU
//#define CONFIG_DUMPKMAP
#define CONFIG_ECHO
#define CONFIG_ENV
#define CONFIG_EXPR
//#define CONFIG_FBSET
//#define CONFIG_FDFLUSH
#define CONFIG_FIND
#define CONFIG_FREE
#define CONFIG_FREERAMDISK
//#define CONFIG_FSCK_MINIX
//#define CONFIG_GETOPT
#define CONFIG_GREP
#define CONFIG_GUNZIP
#define CONFIG_GZIP
#define CONFIG_HALT
#define CONFIG_HEAD
//#define CONFIG_HOSTID
//#define CONFIG_HOSTNAME
//#define CONFIG_HUSH
#define CONFIG_ID
//#define CONFIG_IFCONFIG
#define CONFIG_INIT
//#define CONFIG_INSMOD
#define CONFIG_KILL
#define CONFIG_KILLALL
#define CONFIG_KLOGD
//#define CONFIG_LASH
//#define CONFIG_LENGTH
#define CONFIG_LN
//#define CONFIG_LOADACM
//#define CONFIG_LOADFONT
#define CONFIG_LOADKMAP
#define CONFIG_LOGGER
//#define CONFIG_LOGNAME
#define CONFIG_LS
#define CONFIG_LSMOD
//#define CONFIG_MAKEDEVS
#define CONFIG_MD5SUM
#define CONFIG_MKDIR
//#define CONFIG_MKFIFO
//#define CONFIG_MKFS_MINIX
#define CONFIG_MKNOD
#define CONFIG_MKSWAP
//#define CONFIG_MKTEMP
//#define CONFIG_MODPROBE
#define CONFIG_MORE
#define CONFIG_MOUNT
//#define CONFIG_MSH
//#define CONFIG_MT
#define CONFIG_MV
//#define CONFIG_NC
//#define CONFIG_NSLOOKUP
//#define CONFIG_PIDOF
#define CONFIG_PING
#define CONFIG_PIVOT_ROOT
#define CONFIG_POWEROFF
//#define CONFIG_PRINTF
#define CONFIG_PS
#define CONFIG_PWD
//#define CONFIG_RDATE
//#define CONFIG_READLINK
#define CONFIG_REBOOT
//#define CONFIG_RENICE
#define CONFIG_RESET
#define CONFIG_RM
#define CONFIG_RMDIR
//#define CONFIG_RMMOD
//#define CONFIG_ROUTE
//#define CONFIG_RPM2CPIO
#define CONFIG_SED
//#define CONFIG_SETKEYCODES
#define CONFIG_SLEEP
#define CONFIG_SORT
//#define CONFIG_STTY
#define CONFIG_SWAPONOFF
#define CONFIG_SYNC
#define CONFIG_SYSLOGD
#define CONFIG_TAIL
#define CONFIG_TAR
//#define CONFIG_TEE
//#define CONFIG_TEST
#define CONFIG_TELNET
//#define CONFIG_TFTP
#define CONFIG_TOUCH
#define CONFIG_TR
//#define CONFIG_TRACEROUTE
#define CONFIG_TRUE_FALSE
#define CONFIG_TTY
//#define CONFIG_UNIX2DOS
//#define CONFIG_UUENCODE
//#define CONFIG_UUDECODE
#define CONFIG_UMOUNT
#define CONFIG_UNIQ
#define CONFIG_UNAME
//#define CONFIG_UPDATE
#define CONFIG_UPTIME
//#define CONFIG_USLEEP
#define CONFIG_VI
//#define CONFIG_WATCHDOG
#define CONFIG_WC
#define CONFIG_WGET
#define CONFIG_WHICH
#define CONFIG_WHOAMI
#define CONFIG_XARGS
#define CONFIG_YES
// End of Applications List
//
//
//
// ---------------------------------------------------------
// This is where feature definitions go.  Generally speaking,
// turning this stuff off makes things a bit smaller (and less 
// pretty/useful).
//
//
// If you enabled one or more of the shells, you may select which one
// should be run when sh is invoked:
//#define CONFIG_FEATURE_SH_IS_ASH
//#define CONFIG_FEATURE_SH_IS_HUSH
//#define CONFIG_FEATURE_SH_IS_LASH
#define CONFIG_FEATURE_SH_IS_MSH
//
// BusyBox will, by default, malloc space for its buffers.  This costs code
// size for the call to xmalloc.  You can use the following feature to have
// them put on the stack.  For some very small machines with limited stack
// space, this can be deadly.  For most folks, this works just fine...
//#define CONFIG_FEATURE_BUFFERS_GO_ON_STACK
// The third alternative for buffer allocation is to use BSS.  This works
// beautifully for computers with a real MMU (and OS support), but wastes
// runtime RAM for uCLinux.  This behavior was the only one available for
// BusyBox versions 0.48 and earlier.
//#define CONFIG_FEATURE_BUFFERS_GO_IN_BSS
//
// Turn this on to use Erik's very cool devps, and devmtab kernel drivers,
// thereby eliminating the need for the /proc filesystem and thereby saving
// lots and lots memory for more important things.  NOTE:  If you enable this
// feature, you _must_ have patched the kernel to include the devps patch that
// is included in the busybox/kernel-patches directory.  You will also need to
// create some device special files in /dev on your embedded system:
//        mknod /dev/mtab c 10 22
//        mknod /dev/ps c 10 21
// I emailed Linus and this patch will not be going into the stock kernel.
//#define CONFIG_FEATURE_USE_DEVPS_PATCH
//
// show verbose usage messages
//#define CONFIG_FEATURE_VERBOSE_USAGE
//
// Use termios to manipulate the screen ('more' is prettier with this on)
#define CONFIG_FEATURE_USE_TERMIOS
//
// calculate terminal & column widths (for more and ls)
#define CONFIG_FEATURE_AUTOWIDTH
//
// show username/groupnames for ls
#define CONFIG_FEATURE_LS_USERNAME
//
// show file timestamps in ls
#define CONFIG_FEATURE_LS_TIMESTAMPS
//
// enable ls -p and -F
#define CONFIG_FEATURE_LS_FILETYPES
//
// sort the file names
#define CONFIG_FEATURE_LS_SORTFILES
//
// enable ls -R
#define CONFIG_FEATURE_LS_RECURSIVE
//
// enable ls -L
#define CONFIG_FEATURE_LS_FOLLOWLINKS
//
// Disable for a smaller (but less functional) ping
#define CONFIG_FEATURE_FANCY_PING
//
// Make init use a simplified /etc/inittab file (recommended).
#define CONFIG_FEATURE_USE_INITTAB
//
//Enable init being called as /linuxrc
#define CONFIG_FEATURE_INITRD
//
//Have init enable core dumping for child processes (for debugging only) 
//#define CONFIG_FEATURE_INIT_COREDUMPS
//
//Make sure nothing is printed to the console on boot
//#define CONFIG_FEATURE_EXTRA_QUIET
//
// enable syslogd -R remotehost
#define CONFIG_FEATURE_REMOTE_LOG
//
// enable syslogd -C
//#define CONFIG_FEATURE_IPC_SYSLOG
//
//Disable for a simple tail implementation (2.34k vs 3k for the full one).
//Both provide 'tail -f', but this cuts out -c, -q, -s, and -v. 
#define CONFIG_FEATURE_FANCY_TAIL
//
// Enable support for loop devices in mount
#define CONFIG_FEATURE_MOUNT_LOOP
//
// Enable support for a real /etc/mtab file instead of /proc/mounts
//#define CONFIG_FEATURE_MTAB_SUPPORT
//
// Enable support for mounting remote NFS volumes. 
// You may need to mount with "-o nolock" if you are
// not running a local portmapper daemon...
#define CONFIG_FEATURE_NFSMOUNT
//
// Enable support forced filesystem unmounting 
// (i.e., in case of an unreachable NFS system).
#define CONFIG_FEATURE_MOUNT_FORCE
//
// Enable support for creation of tar files.
#define CONFIG_FEATURE_TAR_CREATE
//
// Enable support for "--exclude" and "-X" for excluding files
#define CONFIG_FEATURE_TAR_EXCLUDE
//
// Enable support for tar -z option (currently only works for inflating)
#define CONFIG_FEATURE_TAR_GZIP 
//
// Enable reverse sort
#define CONFIG_FEATURE_SORT_REVERSE
//
// Enable uniqe sort
#define CONFIG_FEATURE_SORT_UNIQUE
//
// Enable command line editing in the shell.  
// Only relevant if a shell is enabled. On by default.
#define CONFIG_FEATURE_COMMAND_EDITING
//
// Enable tab completion in the shell.  This is now working quite nicely.
// This feature adds a bit over 4k. Only relevant if a shell is enabled.
#define CONFIG_FEATURE_COMMAND_TAB_COMPLETION
//
// Attempts to match usernames in a ~-prefixed path
//#define CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
//
//Allow the shell to invoke all the compiled in BusyBox applets as if they
//were shell builtins.  Nice for staticly linking an emergency rescue shell,
//among other things. Off by default.
// Only relevant if a shell is enabled.
//#define CONFIG_FEATURE_SH_STANDALONE_SHELL
//
//When this is enabled, busybox shell applets can be called using full path
//names.  This causes applets (i.e., most busybox commands) to override
//real commands on the filesystem.  For example, if you run run /bin/cat, it
//will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_
//busybox.  Some systems want this, others do not.  Choose wisely.  :-) This
//only has meaning when CONFIG_FEATURE_SH_STANDALONE_SHELL is enabled.
// Only relevant if a shell is enabled. Off by default.
//#define CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
//
// Uncomment this option for a fancy shell prompt that includes the
// current username and hostname.  On systems that don't have usernames
// or hostnames, this can look hideous.
// Only relevant if a shell is enabled.
//#define CONFIG_FEATURE_SH_FANCY_PROMPT
//
//Turn on extra fbset options
//#define CONFIG_FEATURE_FBSET_FANCY
//
//Turn on fbset readmode support
//#define CONFIG_FEATURE_FBSET_READMODE
//
// Support insmod/lsmod/rmmod for post 2.1 kernels
//#define CONFIG_FEATURE_NEW_MODULE_INTERFACE
//
// Support insmod/lsmod/rmmod for pre 2.1 kernels
//#define CONFIG_FEATURE_OLD_MODULE_INTERFACE
//
// Support module version checking
//#define CONFIG_FEATURE_INSMOD_VERSION_CHECKING
//
// Support for uClinux memory usage optimization, which will load the image
// directly into the kernel memory.  This divides memory requrements by three.
// If you are not running uClinux (i.e., your CPU has an MMU) leave this
// disabled...
//#define CONFIG_FEATURE_INSMOD_LOADINKMEM
//
// Support for Minix filesystem, version 2
//#define CONFIG_FEATURE_MINIX2
//
// Enable ifconfig status reporting output -- this feature adds 12k.
#define CONFIG_FEATURE_IFCONFIG_STATUS
//
// Enable ifconfig slip-specific options "keepalive" and "outfill"
//#define CONFIG_FEATURE_IFCONFIG_SLIP
//
// Enable ifconfig options "mem_start", "io_addr", and "irq".
//#define CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
//
// Enable ifconfig option "hw".  Currently works for only with "ether".
#define CONFIG_FEATURE_IFCONFIG_HW
//
// Enable busybox --install [-s]
// to create links (or symlinks) for all the commands that are 
// compiled into the binary.  (needs /proc filesystem)
#define CONFIG_FEATURE_INSTALLER
//
// Enable a nifty progress meter in wget (adds just under 2k)
#define CONFIG_FEATURE_WGET_STATUSBAR
//
// Enable HTTP authentication in wget
#define CONFIG_FEATURE_WGET_AUTHENTICATION
//
// Clean up all memory before exiting -- usually not needed
// as the OS can clean up...  Don't enable this unless you
// have a really good reason for cleaning things up manually.
//#define CONFIG_FEATURE_CLEAN_UP
//
// Support for human readable output by ls, du, etc.(example 13k, 23M, 235G)
#define CONFIG_FEATURE_HUMAN_READABLE
//
// Support for the find -type option.
#define CONFIG_FEATURE_FIND_TYPE
//
// Support for the find -perm option.
#define CONFIG_FEATURE_FIND_PERM
//
// Support for the find -mtine option.
#define CONFIG_FEATURE_FIND_MTIME
//
// Support for the -A -B and -C context flags in grep
//#define CONFIG_FEATURE_GREP_CONTEXT
//
// Support for the EGREP applet (alias to the grep applet)
//#define CONFIG_FEATURE_GREP_EGREP_ALIAS
//
// Tell tftp what commands that should be supported.
#define CONFIG_FEATURE_TFTP_PUT
#define CONFIG_FEATURE_TFTP_GET
//
// features for vi
#define CONFIG_FEATURE_VI_COLON		// ":" colon commands, no "ex" mode
#define CONFIG_FEATURE_VI_YANKMARK		// Yank/Put commands and Mark cmds
#define CONFIG_FEATURE_VI_SEARCH		// search and replace cmds
#define CONFIG_FEATURE_VI_USE_SIGNALS	// catch signals
#define CONFIG_FEATURE_VI_DOT_CMD		// remember previous cmd and "." cmd
#define CONFIG_FEATURE_VI_READONLY		// vi -R and "view" mode
#define CONFIG_FEATURE_VI_SETOPTS		// set-able options,  ai ic showmatch
#define CONFIG_FEATURE_VI_SET		// :set
#define CONFIG_FEATURE_VI_WIN_RESIZE	// handle window resize
//
// Enable a if you system have setuped locale
//#define CONFIG_LOCALE_SUPPORT
//
// Support for TELNET to pass TERM type to remote host.  Adds 384 bytes.
#define CONFIG_FEATURE_TELNET_TTYPE
//
// End of Features List
//
//
//
//
//
//
//---------------------------------------------------
// Nothing beyond this point should ever be touched by 
// mere mortals so leave this stuff alone.
//
#include <features.h>
#if defined __UCLIBC__ && ! defined __UCLIBC_HAS_MMU__
	#undef CONFIG_RPM2CPIO		/* Uses gz_open(), which uses fork() */
	#undef CONFIG_DPKG_DEB		/* Uses gz_open(), which uses fork() */
	#undef CONFIG_ASH			/* Uses fork() */
	#undef CONFIG_HUSH			/* Uses fork() */
	#undef CONFIG_LASH			/* Uses fork() */
	#undef CONFIG_INIT			/* Uses fork() */
	#undef CONFIG_FEATURE_TAR_GZIP	/* Uses fork() */
	#undef CONFIG_SYSLOGD		/* Uses daemon() */
	#undef CONFIG_KLOGD			/* Uses daemon() */
	#undef CONFIG_UPDATE		/* Uses daemon() */
#endif
#if defined CONFIG_ASH || defined CONFIG_HUSH || defined CONFIG_LASH || defined CONFIG_MSH
	#if defined CONFIG_FEATURE_COMMAND_EDITING
		#define CONFIG_CMDEDIT
	#else
		#undef CONFIG_FEATURE_COMMAND_EDITING
		#undef CONFIG_FEATURE_COMMAND_TAB_COMPLETION
		#undef CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
		#undef CONFIG_FEATURE_SH_FANCY_PROMPT
	#endif
#else
	#undef CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
	#undef CONFIG_FEATURE_SH_STANDALONE_SHELL
	#undef CONFIG_FEATURE_SH_FANCY_PROMPT
#endif
//
#ifdef CONFIG_KILLALL
	#ifndef CONFIG_KILL
		#define CONFIG_KILL
	#endif
#endif
//
#ifndef CONFIG_INIT
	#undef CONFIG_FEATURE_INITRD
#endif
//
#if defined CONFIG_MOUNT && defined CONFIG_FEATURE_NFSMOUNT
	#define CONFIG_NFSMOUNT
#endif
//
#if defined CONFIG_FEATURE_AUTOWIDTH
	#ifndef CONFIG_FEATURE_USE_TERMIOS
		#define CONFIG_FEATURE_USE_TERMIOS
	#endif
#endif
//
#if defined CONFIG_INSMOD || defined CONFIG_LSMOD
	#if ! defined CONFIG_FEATURE_NEW_MODULE_INTERFACE && ! defined CONFIG_FEATURE_OLD_MODULE_INTERFACE
		#define CONFIG_FEATURE_NEW_MODULE_INTERFACE
	#endif
#endif
//
#ifdef CONFIG_UNIX2DOS
	#define CONFIG_DOS2UNIX
#endif	
//
#ifdef CONFIG_SYSLOGD
	#if defined CONFIG_FEATURE_IPC_SYSLOG
		#define CONFIG_LOGREAD
	#endif
#endif
//
#if defined CONFIG_ASH && defined CONFIG_FEATURE_SH_IS_ASH
# define shell_main ash_main
#elif defined CONFIG_HUSH && defined CONFIG_FEATURE_SH_IS_HUSH
# define shell_main hush_main
#elif defined CONFIG_LASH && defined CONFIG_FEATURE_SH_IS_LASH
# define shell_main lash_main
#elif defined CONFIG_MSH && defined CONFIG_FEATURE_SH_IS_MSH
# define shell_main msh_main
#endif
