/* 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
