/*
 * applets.h - a listing of all busybox applets.
 *
 * If you write a new applet, you need to add an entry to this list to make
 * busybox aware of it.
 *
 * It is CRUCIAL that this listing be kept in ascii order, otherwise the binary
 * search lookup contributed by Gaute B Strokkenes stops working. If you value
 * your kneecaps, you'll be sure to *make sure* that any changes made to this
 * file result in the listing remaining in ascii order. You have been warned.
 */

#if defined(PROTOTYPES)
#define APPLET(a,b,c,d) \
	extern int b(int argc, char **argv); \
	extern const char d[];
#define APPLET_NOUSAGE(a,b,c) \
	extern int b(int argc, char **argv);
#elif defined(MAKE_LINKS)
#define APPLET(a,b,c,d) LINK c a
#define APPLET_NOUSAGE(a,b,c) LINK c a
#else
const struct BB_applet applets[] = {
#define APPLET(a,b,c,d) {a,b,c,d},
#define APPLET_NOUSAGE(a,b,c) {a,b,c,NULL},
#endif

#ifdef BB_TEST
	APPLET("[", test_main, _BB_DIR_USR_BIN, test_usage)
#endif
#ifdef BB_AR
	APPLET("ar", ar_main, _BB_DIR_USR_BIN, ar_usage)
#endif
#ifdef BB_BASENAME
	APPLET("basename", basename_main, _BB_DIR_USR_BIN, basename_usage)
#endif
	APPLET_NOUSAGE("busybox", busybox_main, _BB_DIR_BIN)
#ifdef BB_CAT
	APPLET("cat", cat_main, _BB_DIR_BIN, cat_usage)
#endif
#ifdef BB_CHMOD_CHOWN_CHGRP
	APPLET("chgrp", chmod_chown_chgrp_main, _BB_DIR_BIN, chgrp_usage)
#endif
#ifdef BB_CHMOD_CHOWN_CHGRP
	APPLET("chmod", chmod_chown_chgrp_main, _BB_DIR_BIN, chmod_usage)
#endif
#ifdef BB_CHMOD_CHOWN_CHGRP
	APPLET("chown", chmod_chown_chgrp_main, _BB_DIR_BIN, chown_usage)
#endif
#ifdef BB_CHROOT
	APPLET("chroot", chroot_main, _BB_DIR_USR_SBIN, chroot_usage)
#endif
#ifdef BB_CHVT
	APPLET("chvt", chvt_main, _BB_DIR_USR_BIN, chvt_usage)
#endif
#ifdef BB_CLEAR
	APPLET("clear", clear_main, _BB_DIR_USR_BIN, clear_usage)
#endif
#ifdef BB_CMP
	APPLET("cmp", cmp_main, _BB_DIR_USR_BIN, cmp_usage)
#endif
#ifdef BB_CP_MV
	APPLET("cp", cp_mv_main, _BB_DIR_BIN, cp_usage)
#endif
#ifdef BB_CUT
	APPLET("cut", cut_main, _BB_DIR_USR_BIN, cut_usage)
#endif
#ifdef BB_DATE
	APPLET("date", date_main, _BB_DIR_BIN, date_usage)
#endif
#ifdef BB_DC
	APPLET("dc", dc_main, _BB_DIR_USR_BIN, dc_usage)
#endif
#ifdef BB_DD
	APPLET("dd", dd_main, _BB_DIR_BIN, dd_usage)
#endif
#ifdef BB_DEALLOCVT
	APPLET("deallocvt", deallocvt_main, _BB_DIR_USR_BIN, deallocvt_usage)
#endif
#ifdef BB_DF
	APPLET("df", df_main, _BB_DIR_BIN, df_usage)
#endif
#ifdef BB_DIRNAME
	APPLET("dirname", dirname_main, _BB_DIR_USR_BIN, dirname_usage)
#endif
#ifdef BB_DMESG
	APPLET("dmesg", dmesg_main, _BB_DIR_BIN, dmesg_usage)
#endif
#ifdef BB_DOS2UNIX
	APPLET("dos2unix", dos2unix_main, _BB_DIR_USR_BIN, dos2unix_usage)
#endif
#ifdef BB_DPKG_DEB
	APPLET("dpkg-deb", dpkg_deb_main, _BB_DIR_USR_BIN, dpkg_deb_usage)
#endif
#ifdef BB_DU
	APPLET("du", du_main, _BB_DIR_USR_BIN, du_usage)
#endif
#ifdef BB_DUMPKMAP
	APPLET("dumpkmap", dumpkmap_main, _BB_DIR_BIN, dumpkmap_usage)
#endif
#ifdef BB_DUTMP
	APPLET("dutmp", dutmp_main, _BB_DIR_USR_SBIN, dutmp_usage)
#endif
#ifdef BB_ECHO
	APPLET("echo", echo_main, _BB_DIR_BIN, echo_usage)
#endif
#ifdef BB_EXPR
	APPLET("expr", expr_main, _BB_DIR_USR_BIN, expr_usage)
#endif
#ifdef BB_TRUE_FALSE
	APPLET("false", false_main, _BB_DIR_BIN, false_usage)
#endif
#ifdef BB_FBSET
	APPLET_NOUSAGE("fbset", fbset_main, _BB_DIR_USR_SBIN)
#endif
#ifdef BB_FDFLUSH
	APPLET("fdflush", fdflush_main, _BB_DIR_BIN, fdflush_usage)
#endif
#ifdef BB_FIND
	APPLET("find", find_main, _BB_DIR_USR_BIN, find_usage)
#endif
#ifdef BB_FREE
	APPLET("free", free_main, _BB_DIR_USR_BIN, free_usage)
#endif
#ifdef BB_FREERAMDISK
	APPLET("freeramdisk", freeramdisk_main, _BB_DIR_SBIN, freeramdisk_usage)
#endif
#ifdef BB_FSCK_MINIX
	APPLET("fsck.minix", fsck_minix_main, _BB_DIR_SBIN, fsck_minix_usage)
#endif
#ifdef BB_GETOPT
	APPLET("getopt", getopt_main, _BB_DIR_BIN, getopt_usage)
#endif
#ifdef BB_GREP
	APPLET("grep", grep_main, _BB_DIR_BIN, grep_usage)
#endif
#ifdef BB_GUNZIP
	APPLET("gunzip", gunzip_main, _BB_DIR_BIN, gunzip_usage)
#endif
#ifdef BB_GZIP
	APPLET("gzip", gzip_main, _BB_DIR_BIN, gzip_usage)
#endif
#ifdef BB_HALT
	APPLET("halt", halt_main, _BB_DIR_SBIN, halt_usage)
#endif
#ifdef BB_HEAD
	APPLET("head", head_main, _BB_DIR_USR_BIN, head_usage)
#endif
#ifdef BB_HOSTID
	APPLET("hostid", hostid_main, _BB_DIR_USR_BIN, hostid_usage)
#endif
#ifdef BB_HOSTNAME
	APPLET("hostname", hostname_main, _BB_DIR_BIN, hostname_usage)
#endif
#ifdef BB_ID
	APPLET("id", id_main, _BB_DIR_USR_BIN, id_usage)
#endif
#ifdef BB_INIT
	APPLET_NOUSAGE("init", init_main, _BB_DIR_SBIN)
#endif
#ifdef BB_INSMOD
	APPLET("insmod", insmod_main, _BB_DIR_SBIN, insmod_usage)
#endif
#ifdef BB_KILL
	APPLET("kill", kill_main, _BB_DIR_BIN, kill_usage)
#endif
#ifdef BB_KILLALL
	APPLET("killall", kill_main, _BB_DIR_USR_BIN, killall_usage)
#endif
#ifdef BB_LENGTH
	APPLET("length", length_main, _BB_DIR_USR_BIN, length_usage)
#endif
#ifdef BB_LINUXRC
	APPLET_NOUSAGE("linuxrc", init_main, _BB_DIR_ROOT)
#endif
#ifdef BB_LN
	APPLET("ln", ln_main, _BB_DIR_BIN, ln_usage)
#endif
#ifdef BB_LOADACM
	APPLET("loadacm", loadacm_main, _BB_DIR_USR_BIN, loadacm_usage)
#endif
#ifdef BB_LOADFONT
	APPLET("loadfont", loadfont_main, _BB_DIR_USR_BIN, loadfont_usage)
#endif
#ifdef BB_LOADKMAP
	APPLET("loadkmap", loadkmap_main, _BB_DIR_SBIN, loadkmap_usage)
#endif
#ifdef BB_LOGGER
	APPLET("logger", logger_main, _BB_DIR_USR_BIN, logger_usage)
#endif
#ifdef BB_LOGNAME
	APPLET("logname", logname_main, _BB_DIR_USR_BIN, logname_usage)
#endif
#ifdef BB_LS
	APPLET("ls", ls_main, _BB_DIR_BIN, ls_usage)
#endif
#ifdef BB_LSMOD
	APPLET("lsmod", lsmod_main, _BB_DIR_SBIN, lsmod_usage)
#endif
#ifdef BB_MAKEDEVS
	APPLET("makedevs", makedevs_main, _BB_DIR_SBIN, makedevs_usage)
#endif
#ifdef BB_MD5SUM
	APPLET("md5sum", md5sum_main, _BB_DIR_USR_BIN, md5sum_usage)
#endif
#ifdef BB_MKDIR
	APPLET("mkdir", mkdir_main, _BB_DIR_BIN, mkdir_usage)
#endif
#ifdef BB_MKFIFO
	APPLET("mkfifo", mkfifo_main, _BB_DIR_USR_BIN, mkfifo_usage)
#endif
#ifdef BB_MKFS_MINIX
	APPLET("mkfs.minix", mkfs_minix_main, _BB_DIR_SBIN, mkfs_minix_usage)
#endif
#ifdef BB_MKNOD
	APPLET("mknod", mknod_main, _BB_DIR_BIN, mknod_usage)
#endif
#ifdef BB_MKSWAP
	APPLET("mkswap", mkswap_main, _BB_DIR_SBIN, mkswap_usage)
#endif
#ifdef BB_MKTEMP
	APPLET("mktemp", mktemp_main, _BB_DIR_BIN, mktemp_usage)
#endif
#ifdef BB_MORE
	APPLET("more", more_main, _BB_DIR_BIN, more_usage)
#endif
#ifdef BB_MOUNT
	APPLET("mount", mount_main, _BB_DIR_BIN, mount_usage)
#endif
#ifdef BB_MT
	APPLET("mt", mt_main, _BB_DIR_BIN, mt_usage)
#endif
#ifdef BB_CP_MV
	APPLET("mv", cp_mv_main, _BB_DIR_BIN, mv_usage)
#endif
#ifdef BB_NC
	APPLET("nc", nc_main, _BB_DIR_USR_BIN, nc_usage)
#endif
#ifdef BB_NSLOOKUP
	APPLET("nslookup", nslookup_main, _BB_DIR_USR_BIN, nslookup_usage)
#endif
#ifdef BB_PING
	APPLET("ping", ping_main, _BB_DIR_BIN, ping_usage)
#endif
#ifdef BB_POWEROFF
	APPLET("poweroff", poweroff_main, _BB_DIR_SBIN, poweroff_usage)
#endif
#ifdef BB_PRINTF
	APPLET("printf", printf_main, _BB_DIR_USR_BIN, printf_usage)
#endif
#ifdef BB_PS
	APPLET("ps", ps_main, _BB_DIR_BIN, ps_usage)
#endif
#ifdef BB_PWD
	APPLET("pwd", pwd_main, _BB_DIR_BIN, pwd_usage)
#endif
#ifdef BB_RDATE
	APPLET("rdate", rdate_main, _BB_DIR_USR_BIN, rdate_usage)
#endif
#ifdef BB_READLINK
	APPLET("readlink", readlink_main, _BB_DIR_USR_BIN, readlink_usage)
#endif
#ifdef BB_REBOOT
	APPLET("reboot", reboot_main, _BB_DIR_SBIN, reboot_usage)
#endif
#ifdef BB_RENICE
	APPLET("renice", renice_main, _BB_DIR_USR_BIN, renice_usage)
#endif
#ifdef BB_RESET
	APPLET("reset", reset_main, _BB_DIR_USR_BIN, reset_usage)
#endif
#ifdef BB_RM
	APPLET("rm", rm_main, _BB_DIR_BIN, rm_usage)
#endif
#ifdef BB_RMDIR
	APPLET("rmdir", rmdir_main, _BB_DIR_BIN, rmdir_usage)
#endif
#ifdef BB_RMMOD
	APPLET("rmmod", rmmod_main, _BB_DIR_SBIN, rmmod_usage)
#endif
#ifdef BB_RPMUNPACK
	APPLET("rpmunpack", rpmunpack_main, _BB_DIR_USR_BIN, rpmunpack_usage)
#endif
#ifdef BB_SED
	APPLET("sed", sed_main, _BB_DIR_BIN, sed_usage)
#endif
#ifdef BB_SETKEYCODES
	APPLET("setkeycodes", setkeycodes_main, _BB_DIR_USR_BIN, setkeycodes_usage)
#endif
#ifdef BB_SH
	APPLET("sh", shell_main, _BB_DIR_BIN, shell_usage)
#endif
#ifdef BB_SLEEP
	APPLET("sleep", sleep_main, _BB_DIR_BIN, sleep_usage)
#endif
#ifdef BB_SORT
	APPLET("sort", sort_main, _BB_DIR_USR_BIN, sort_usage)
#endif
#ifdef BB_SWAPONOFF
	APPLET("swapoff", swap_on_off_main, _BB_DIR_SBIN, swapoff_usage)
#endif
#ifdef BB_SWAPONOFF
	APPLET("swapon", swap_on_off_main, _BB_DIR_SBIN, swapon_usage)
#endif
#ifdef BB_SYNC
	APPLET("sync", sync_main, _BB_DIR_BIN, sync_usage)
#endif
#ifdef BB_SYSLOGD
	APPLET("syslogd", syslogd_main, _BB_DIR_SBIN, syslogd_usage)
#endif
#ifdef BB_TAIL
	APPLET("tail", tail_main, _BB_DIR_USR_BIN, tail_usage)
#endif
#ifdef BB_TAR
	APPLET("tar", tar_main, _BB_DIR_BIN, tar_usage)
#endif
#ifdef BB_TEE
	APPLET("tee", tee_main, _BB_DIR_USR_BIN, tee_usage)
#endif
#ifdef BB_TELNET
	APPLET("telnet", telnet_main, _BB_DIR_USR_BIN, telnet_usage)
#endif
#ifdef BB_TEST
	APPLET("test", test_main, _BB_DIR_USR_BIN, test_usage)
#endif
#ifdef BB_TOUCH
	APPLET("touch", touch_main, _BB_DIR_BIN, touch_usage)
#endif
#ifdef BB_TR
	APPLET("tr", tr_main, _BB_DIR_USR_BIN, tr_usage)
#endif
#ifdef BB_TRUE_FALSE
	APPLET("true", true_main, _BB_DIR_BIN, true_usage)
#endif
#ifdef BB_TTY
	APPLET("tty", tty_main, _BB_DIR_USR_BIN, tty_usage)
#endif
#ifdef BB_UMOUNT
	APPLET("umount", umount_main, _BB_DIR_BIN, umount_usage)
#endif
#ifdef BB_UNAME
	APPLET("uname", uname_main, _BB_DIR_BIN, uname_usage)
#endif
#ifdef BB_UNIQ
	APPLET("uniq", uniq_main, _BB_DIR_USR_BIN, uniq_usage)
#endif
#ifdef BB_UNIX2DOS
	APPLET("unix2dos", unix2dos_main, _BB_DIR_USR_BIN, unix2dos_usage)
#endif
#ifdef BB_UPDATE
	APPLET("update", update_main, _BB_DIR_SBIN, update_usage)
#endif
#ifdef BB_UPTIME
	APPLET("uptime", uptime_main, _BB_DIR_USR_BIN, uptime_usage)
#endif
#ifdef BB_USLEEP
	APPLET("usleep", usleep_main, _BB_DIR_BIN, usleep_usage)
#endif
#ifdef BB_UUDECODE
	APPLET("uudecode", uudecode_main, _BB_DIR_USR_BIN, uudecode_usage)
#endif
#ifdef BB_UUENCODE
	APPLET("uuencode", uuencode_main, _BB_DIR_USR_BIN, uuencode_usage)
#endif
#ifdef BB_WC
	APPLET("wc", wc_main, _BB_DIR_USR_BIN, wc_usage)
#endif
#ifdef BB_WGET
	APPLET("wget", wget_main, _BB_DIR_USR_BIN, wget_usage)
#endif
#ifdef BB_WHICH
	APPLET("which", which_main, _BB_DIR_USR_BIN, which_usage)
#endif
#ifdef BB_WHOAMI
	APPLET("whoami", whoami_main, _BB_DIR_USR_BIN, whoami_usage)
#endif
#ifdef BB_XARGS
	APPLET("xargs", xargs_main, _BB_DIR_USR_BIN, xargs_usage)
#endif
#ifdef BB_YES
	APPLET("yes", yes_main, _BB_DIR_USR_BIN, yes_usage)
#endif
#ifdef BB_GUNZIP
	APPLET("zcat", gunzip_main, _BB_DIR_BIN, gunzip_usage)
#endif

#if !defined(PROTOTYPES) && !defined(MAKE_LINKS)
	{ 0,NULL,0,NULL}
};

/* The -1 arises because of the {0,NULL,0,NULL} entry above. */
size_t NUM_APPLETS = (sizeof (applets) / sizeof (struct BB_applet) - 1);

#endif
