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