diff options
Diffstat (limited to 'applets')
-rw-r--r-- | applets/busybox.c | 222 | ||||
-rwxr-xr-x | applets/busybox.mkll | 16 | ||||
-rwxr-xr-x | applets/busybox.sh | 5 |
3 files changed, 134 insertions, 109 deletions
diff --git a/applets/busybox.c b/applets/busybox.c index 9aa46ea..7582647 100644 --- a/applets/busybox.c +++ b/applets/busybox.c @@ -34,282 +34,304 @@ int atexit(void (*__func) (void)) void *__libc_stack_end; #endif - static const struct Applet applets[] = { #ifdef BB_BASENAME //usr/bin/basename - {"basename", basename_main}, + {"basename", basename_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_BUSYBOX //bin - {"busybox", busybox_main}, + {"busybox", busybox_main, _BB_DIR_BIN}, #endif #ifdef BB_BLOCK_DEVICE //sbin - {"block_device", block_device_main}, + {"block_device", block_device_main, _BB_DIR_SBIN}, #endif #ifdef BB_CAT //bin - {"cat", cat_main}, + {"cat", cat_main, _BB_DIR_BIN}, +#endif +#ifdef BB_CHMOD_CHOWN_CHGRP //bin + {"chmod", chmod_chown_chgrp_main, _BB_DIR_BIN}, +#endif +#ifdef BB_CHMOD_CHOWN_CHGRP //bin + {"chown", chmod_chown_chgrp_main, _BB_DIR_BIN}, #endif #ifdef BB_CHMOD_CHOWN_CHGRP //bin - {"chmod", chmod_chown_chgrp_main}, - {"chown", chmod_chown_chgrp_main}, - {"chgrp", chmod_chown_chgrp_main}, + {"chgrp", chmod_chown_chgrp_main, _BB_DIR_BIN}, #endif #ifdef BB_CHROOT //sbin - {"chroot", chroot_main}, + {"chroot", chroot_main, _BB_DIR_SBIN}, #endif #ifdef BB_CLEAR //usr/bin - {"clear", clear_main}, + {"clear", clear_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_CHVT //usr/bin - {"chvt", chvt_main}, + {"chvt", chvt_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_CP_MV //bin - {"cp", cp_mv_main}, - {"mv", cp_mv_main}, + {"cp", cp_mv_main, _BB_DIR_BIN}, +#endif +#ifdef BB_CP_MV //bin + {"mv", cp_mv_main, _BB_DIR_BIN}, #endif #ifdef BB_DATE //bin - {"date", date_main}, + {"date", date_main, _BB_DIR_BIN}, #endif #ifdef BB_DD //bin - {"dd", dd_main}, + {"dd", dd_main, _BB_DIR_BIN}, #endif #ifdef BB_DF //bin - {"df", df_main}, + {"df", df_main, _BB_DIR_BIN}, #endif #ifdef BB_DIRNAME //usr/bin - {"dirname", dirname_main}, + {"dirname", dirname_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_DMESG //bin - {"dmesg", dmesg_main}, + {"dmesg", dmesg_main, _BB_DIR_BIN}, #endif #ifdef BB_DU //bin - {"du", du_main}, + {"du", du_main, _BB_DIR_BIN}, #endif #ifdef BB_DUTMP //usr/sbin - {"dutmp", dutmp_main}, + {"dutmp", dutmp_main, _BB_DIR_USR_SBIN}, +#endif +#ifdef BB_ECHO //bin + {"echo", echo_main, _BB_DIR_BIN}, #endif #ifdef BB_FBSET //usr/sbin - {"fbset", fbset_main}, + {"fbset", fbset_main, _BB_DIR_USR_SBIN}, #endif #ifdef BB_FDFLUSH //bin - {"fdflush", fdflush_main}, + {"fdflush", fdflush_main, _BB_DIR_BIN}, #endif #ifdef BB_FIND //usr/bin - {"find", find_main}, + {"find", find_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_FREE //usr/bin - {"free", free_main}, + {"free", free_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_FREERAMDISK //sbin - {"freeramdisk", freeramdisk_main}, + {"freeramdisk", freeramdisk_main, _BB_DIR_SBIN}, #endif #ifdef BB_DEALLOCVT //usr/bin - {"deallocvt", deallocvt_main}, + {"deallocvt", deallocvt_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_FSCK_MINIX //sbin - {"fsck.minix", fsck_minix_main}, + {"fsck.minix", fsck_minix_main, _BB_DIR_SBIN}, #endif #ifdef BB_MKFS_MINIX //sbin - {"mkfs.minix", mkfs_minix_main}, + {"mkfs.minix", mkfs_minix_main, _BB_DIR_SBIN}, #endif #ifdef BB_GREP //bin - {"grep", grep_main}, + {"grep", grep_main, _BB_DIR_BIN}, #endif #ifdef BB_HALT //sbin - {"halt", halt_main}, + {"halt", halt_main, _BB_DIR_SBIN}, #endif #ifdef BB_HEAD //bin - {"head", head_main}, + {"head", head_main, _BB_DIR_BIN}, #endif #ifdef BB_HOSTID //usr/bin - {"hostid", hostid_main}, + {"hostid", hostid_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_HOSTNAME //bin - {"hostname", hostname_main}, + {"hostname", hostname_main, _BB_DIR_BIN}, #endif #ifdef BB_INIT //sbin - {"init", init_main}, + {"init", init_main, _BB_DIR_SBIN}, #endif #ifdef BB_INSMOD //sbin - {"insmod", insmod_main}, + {"insmod", insmod_main, _BB_DIR_SBIN}, #endif #ifdef BB_FEATURE_LINUXRC // - {"linuxrc", init_main}, + {"linuxrc", init_main, _BB_DIR_ROOT}, #endif #ifdef BB_KILL //bin - {"kill", kill_main}, + {"kill", kill_main, _BB_DIR_BIN}, #endif #ifdef BB_KILLALL //usr/bin - {"killall", kill_main}, + {"killall", kill_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_LENGTH //usr/bin - {"length", length_main}, + {"length", length_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_LN //bin - {"ln", ln_main}, + {"ln", ln_main, _BB_DIR_BIN}, #endif #ifdef BB_LOADACM //usr/bin - {"loadacm", loadacm_main}, + {"loadacm", loadacm_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_LOADFONT //usr/bin - {"loadfont", loadfont_main}, + {"loadfont", loadfont_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_LOADKMAP //sbin - {"loadkmap", loadkmap_main}, + {"loadkmap", loadkmap_main, _BB_DIR_SBIN}, #endif #ifdef BB_LS //bin - {"ls", ls_main}, + {"ls", ls_main, _BB_DIR_BIN}, #endif #ifdef BB_LSMOD //sbin - {"lsmod", lsmod_main}, + {"lsmod", lsmod_main, _BB_DIR_SBIN}, #endif #ifdef BB_MAKEDEVS //sbin - {"makedevs", makedevs_main}, + {"makedevs", makedevs_main, _BB_DIR_SBIN}, #endif #ifdef BB_MATH //usr/bin - {"math", math_main}, + {"math", math_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_MKDIR //bin - {"mkdir", mkdir_main}, + {"mkdir", mkdir_main, _BB_DIR_BIN}, #endif #ifdef BB_MKFIFO //usr/bin - {"mkfifo", mkfifo_main}, + {"mkfifo", mkfifo_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_MKNOD //bin - {"mknod", mknod_main}, + {"mknod", mknod_main, _BB_DIR_BIN}, #endif #ifdef BB_MKSWAP //sbin - {"mkswap", mkswap_main}, + {"mkswap", mkswap_main, _BB_DIR_SBIN}, #endif #ifdef BB_MNC //usr/bin - {"mnc", mnc_main}, + {"mnc", mnc_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_MORE //bin - {"more", more_main}, + {"more", more_main, _BB_DIR_BIN}, #endif #ifdef BB_MOUNT //bin - {"mount", mount_main}, + {"mount", mount_main, _BB_DIR_BIN}, #endif #ifdef BB_MT //bin - {"mt", mt_main}, + {"mt", mt_main, _BB_DIR_BIN}, #endif #ifdef BB_NSLOOKUP //usr/bin - {"nslookup", nslookup_main}, + {"nslookup", nslookup_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_PING //bin - {"ping", ping_main}, + {"ping", ping_main, _BB_DIR_BIN}, #endif #ifdef BB_POWEROFF //sbin - {"poweroff", poweroff_main}, + {"poweroff", poweroff_main, _BB_DIR_SBIN}, #endif #ifdef BB_PRINTF //usr/bin - {"printf", printf_main}, + {"printf", printf_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_PS //bin - {"ps", ps_main}, + {"ps", ps_main, _BB_DIR_BIN}, #endif #ifdef BB_PWD //bin - {"pwd", pwd_main}, + {"pwd", pwd_main, _BB_DIR_BIN}, #endif #ifdef BB_REBOOT //sbin - {"reboot", reboot_main}, + {"reboot", reboot_main, _BB_DIR_SBIN}, #endif #ifdef BB_RM //bin - {"rm", rm_main}, + {"rm", rm_main, _BB_DIR_BIN}, #endif #ifdef BB_RMDIR //bin - {"rmdir", rmdir_main}, + {"rmdir", rmdir_main, _BB_DIR_BIN}, #endif #ifdef BB_RMMOD //sbin - {"rmmod", rmmod_main}, + {"rmmod", rmmod_main, _BB_DIR_SBIN}, #endif #ifdef BB_SED //bin - {"sed", sed_main}, + {"sed", sed_main, _BB_DIR_BIN}, #endif #ifdef BB_SH //bin - {"sh", shell_main}, + {"sh", shell_main, _BB_DIR_BIN}, #endif #ifdef BB_SFDISK //sbin - {"fdisk", sfdisk_main}, - {"sfdisk", sfdisk_main}, + {"fdisk", sfdisk_main, _BB_DIR_SBIN}, +#ifdef BB_SFDISK //sbin +#endif + {"sfdisk", sfdisk_main, _BB_DIR_SBIN}, #endif #ifdef BB_SLEEP //bin - {"sleep", sleep_main}, + {"sleep", sleep_main, _BB_DIR_BIN}, #endif #ifdef BB_SORT //bin - {"sort", sort_main}, + {"sort", sort_main, _BB_DIR_BIN}, #endif #ifdef BB_SYNC //bin - {"sync", sync_main}, + {"sync", sync_main, _BB_DIR_BIN}, #endif #ifdef BB_SYSLOGD //sbin - {"syslogd", syslogd_main}, + {"syslogd", syslogd_main, _BB_DIR_SBIN}, #endif #ifdef BB_LOGGER //usr/bin - {"logger", logger_main}, + {"logger", logger_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_LOGNAME //usr/bin - {"logname", logname_main}, + {"logname", logname_main, _BB_DIR_USR_BIN}, +#endif +#ifdef BB_SWAPONOFF //sbin + {"swapon", swap_on_off_main, _BB_DIR_SBIN}, #endif #ifdef BB_SWAPONOFF //sbin - {"swapon", swap_on_off_main}, - {"swapoff", swap_on_off_main}, + {"swapoff", swap_on_off_main, _BB_DIR_SBIN}, #endif #ifdef BB_TAIL //usr/bin - {"tail", tail_main}, + {"tail", tail_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_TAR //bin - {"tar", tar_main}, + {"tar", tar_main, _BB_DIR_BIN}, #endif #ifdef BB_TELNET //usr/bin - {"telnet", telnet_main}, + {"telnet", telnet_main, _BB_DIR_USR_BIN}, +#endif +#ifdef BB_TEST //usr/bin + {"[", test_main, _BB_DIR_USR_BIN}, +#endif +#ifdef BB_TEST //usr/bin + {"test", test_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_TEE //bin - {"tee", tee_main}, + {"tee", tee_main, _BB_DIR_BIN}, #endif #ifdef BB_TOUCH //usr/bin - {"touch", touch_main}, + {"touch", touch_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_TR //usr/bin - {"tr", tr_main}, + {"tr", tr_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_TRUE_FALSE //bin - {"true", true_main}, - {"false", false_main}, + {"true", true_main, _BB_DIR_BIN}, +#endif +#ifdef BB_TRUE_FALSE //bin + {"false", false_main, _BB_DIR_BIN}, #endif #ifdef BB_TTY //usr/bin - {"tty", tty_main}, + {"tty", tty_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_UMOUNT //bin - {"umount", umount_main}, + {"umount", umount_main, _BB_DIR_BIN}, #endif #ifdef BB_UNAME //bin - {"uname", uname_main}, + {"uname", uname_main, _BB_DIR_BIN}, #endif #ifdef BB_UPTIME //usr/bin - {"uptime", uptime_main}, + {"uptime", uptime_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_UNIQ //bin - {"uniq", uniq_main}, + {"uniq", uniq_main, _BB_DIR_BIN}, #endif #ifdef BB_UPDATE //sbin - {"update", update_main}, + {"update", update_main, _BB_DIR_SBIN}, #endif #ifdef BB_WC //usr/bin - {"wc", wc_main}, + {"wc", wc_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_WHOAMI //usr/bin - {"whoami", whoami_main}, + {"whoami", whoami_main, _BB_DIR_USR_BIN}, #endif #ifdef BB_YES //usr/bin - {"yes", yes_main}, + {"yes", yes_main, _BB_DIR_USR_BIN}, +#endif +#ifdef BB_GUNZIP //bin + {"zcat", gunzip_main, _BB_DIR_BIN}, #endif #ifdef BB_GUNZIP //bin - {"zcat", gunzip_main}, - {"gunzip", gunzip_main}, + {"gunzip", gunzip_main, _BB_DIR_BIN}, #endif #ifdef BB_GZIP //bin - {"gzip", gzip_main}, + {"gzip", gzip_main, _BB_DIR_BIN}, #endif {0} }; @@ -318,11 +340,11 @@ static const struct Applet applets[] = { int main(int argc, char **argv) { - char *s = argv[0]; - char *name = argv[0]; + char *s; + char *name; const struct Applet *a = applets; - while (*s != '\0') { + for (s = name = argv[0]; *s != '\0';) { if (*s++ == '/') name = s; } diff --git a/applets/busybox.mkll b/applets/busybox.mkll index c4420f5..fa1bff2 100755 --- a/applets/busybox.mkll +++ b/applets/busybox.mkll @@ -4,12 +4,16 @@ DF="busybox.def.h" MF="busybox.c" -LIST="$(sed -n '/^#define/{s/^#define //p;}' $DF)" +LIST="$(sed -n '/^#define/{s/^#define BB_FEATURE_.*//g;s/^#define //p;}' $DF)" for def in ${LIST}; do - i=`sed -n 's/^#ifdef \<'$def'\>.*\/\/\(.*$\)/\/\1\//gp' $MF` - j=`sed -n '/^#ifdef \<'$def'\>.*/,/^#endif/{ s/.*\"\(.*\)\".*/\1/gp; }' $MF` - for k in $j; do - echo $i$k - done + i=`sed -n '/^#ifdef \<'$def'\>.*/,/^#endif/{ s/.*\"\(.*\)\".*\(_BB_DIR_[A-Z_]*\).*$/\2\/\1/gp; }' $MF` + for j in $i; do + if [ -z $j ] ; then + continue; + fi; + echo $j | sed -e 's/_BB_DIR_ROOT//g;s/_BB_DIR_BIN/\/bin/g;' \ + -e 's/_BB_DIR_SBIN/\/sbin/g;s/_BB_DIR_USR_BIN/\/usr\/bin/g;' \ + -e 's/_BB_DIR_USR_SBIN/\/usr\/sbin/g;' + done; done diff --git a/applets/busybox.sh b/applets/busybox.sh index cab248f..304ac87 100755 --- a/applets/busybox.sh +++ b/applets/busybox.sh @@ -1,4 +1,3 @@ #!/bin/sh -ls -1 `sed -n '/^#define/{s/.*BB_// ; s/$/.c/p; }' busybox.def.h | \ -tr [:upper:] [:lower:]` 2> /dev/null | sed -e 's/\.c$/\.o/g' - +sed -n -e 's/^#define.*BB_FEATURE.*$//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;' \ + -e '/^#define/{s/.*bb_//;s/$/.o/p;}' busybox.def.h |