toybox: deprecate busybox and toolbox utils

Starting with android-10.0 we should only use tools from toybox.
Toyxbox in android-10.0 is specified as a recovery target, so
we just move the symlinks in our relink target.

Change-Id: Ic0116a7d583519b39422ac4d82d30e00918eb29d
diff --git a/Android.mk b/Android.mk
index f017ce5..2134c69 100755
--- a/Android.mk
+++ b/Android.mk
@@ -418,22 +418,12 @@
 else
     LOCAL_LDFLAGS += -Wl,-dynamic-linker,/sbin/linker64
 endif
-ifneq ($(TW_USE_TOOLBOX), true)
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
-        LOCAL_POST_INSTALL_CMD := \
-            $(hide) mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/sbin && \
-            ln -sf /sbin/busybox $(TARGET_RECOVERY_ROOT_OUT)/sbin/sh
-    endif
-else
-    ifneq ($(wildcard external/toybox/Android.mk),)
-        TWRP_REQUIRED_MODULES += toybox_symlinks
-    endif
-    ifneq ($(wildcard external/zip/Android.mk),)
-        TWRP_REQUIRED_MODULES += zip
-    endif
-    ifneq ($(wildcard external/unzip/Android.mk),)
-        TWRP_REQUIRED_MODULES += unzip
-    endif
+
+ifneq ($(wildcard external/zip/Android.mk),)
+    TWRP_REQUIRED_MODULES += zip
+endif
+ifneq ($(wildcard external/unzip/Android.mk),)
+    TWRP_REQUIRED_MODULES += unzip
 endif
 
 ifneq ($(TW_NO_EXFAT), true)
@@ -561,48 +551,7 @@
 LOCAL_POST_INSTALL_CMD := \
     $(hide) cp -f $(PRODUCT_OUT)/obj/ETC/file_contexts.bin_intermediates/file_contexts.concat.tmp $(TARGET_RECOVERY_ROOT_OUT)/file_contexts
 
-#include $(BUILD_PHONY_PACKAGE)
-
-ifneq ($(TW_USE_TOOLBOX), true)
-include $(CLEAR_VARS)
-# Create busybox symlinks... gzip and gunzip are excluded because those need to link to pigz instead
-BUSYBOX_LINKS := $(shell cat external/busybox/busybox-full.links)
-exclude := tune2fs mke2fs mkdosfs mkfs.vfat gzip gunzip
-
-# Having /sbin/modprobe present on 32 bit devices with can cause a massive
-# performance problem if the kernel has CONFIG_MODULES=y
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 22; echo $$?),0)
-    ifneq ($(TARGET_ARCH), arm64)
-        ifneq ($(TARGET_ARCH), x86_64)
-            exclude += modprobe
-        endif
-    endif
-endif
-
-# If busybox does not have restorecon, assume it does not have SELinux support.
-# Then, let toolbox provide 'ls' so -Z is available to list SELinux contexts.
-ifeq ($(filter restorecon, $(notdir $(BUSYBOX_LINKS))),)
-    exclude += ls
-endif
-
-RECOVERY_BUSYBOX_TOOLS := $(filter-out $(exclude), $(notdir $(BUSYBOX_LINKS)))
-RECOVERY_BUSYBOX_SYMLINKS := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/sbin/, $(RECOVERY_BUSYBOX_TOOLS))
-$(RECOVERY_BUSYBOX_SYMLINKS): BUSYBOX_BINARY := busybox
-$(RECOVERY_BUSYBOX_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
-	@echo "Symlink: $@ -> $(BUSYBOX_BINARY)"
-	@mkdir -p $(dir $@)
-	@rm -rf $@
-	$(hide) ln -sf $(BUSYBOX_BINARY) $@
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := busybox_symlinks
-LOCAL_MODULE_TAGS := optional
-LOCAL_ADDITIONAL_DEPENDENCIES := $(RECOVERY_BUSYBOX_SYMLINKS)
-ifneq (,$(filter $(PLATFORM_SDK_VERSION),16 17 18))
-ALL_DEFAULT_INSTALLED_MODULES += $(RECOVERY_BUSYBOX_SYMLINKS)
-endif
-RECOVERY_BUSYBOX_SYMLINKS :=
-endif # !TW_USE_TOOLBOX
+include $(BUILD_PHONY_PACKAGE)
 
 # recovery-persist (system partition dynamic executable run after /data mounts)
 # ===============================
@@ -858,7 +807,6 @@
     $(commands_TWRP_local_path)/minzip/Android.mk \
     $(commands_TWRP_local_path)/dosfstools/Android.mk \
     $(commands_TWRP_local_path)/etc/Android.mk \
-    $(commands_TWRP_local_path)/toybox/Android.mk \
     $(commands_TWRP_local_path)/simg2img/Android.mk \
     $(commands_TWRP_local_path)/adbbu/Android.mk \
     $(commands_TWRP_local_path)/libpixelflinger/Android.mk \
diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk
index 689d58b..cd806a8 100755
--- a/prebuilt/Android.mk
+++ b/prebuilt/Android.mk
@@ -15,51 +15,48 @@
 RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/flash_image
 RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/erase_image
 RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/bu
-ifneq ($(TW_USE_TOOLBOX), true)
-    RELINK_SOURCE_FILES += $(TARGET_OUT_OPTIONAL_EXECUTABLES)/busybox
+
+ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 29; echo $$?),0)
+    RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/sh
 else
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 29; echo $$?),0)
-        RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/sh
+    RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/bin/sh
+endif
+RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libcrypto.so
+ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 23; echo $$?),0)
+    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 29; echo $$?),0)
+        RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/bin/grep
     else
-        RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/bin/sh
+        RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/grep
     endif
-    RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libcrypto.so
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 23; echo $$?),0)
-        ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 29; echo $$?),0)
-            RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/bin/grep
-        else
-            RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/grep
+    LOCAL_POST_INSTALL_CMD += $(hide) if [ -e "$(TARGET_RECOVERY_ROOT_OUT)/sbin/egrep" ]; then \
+                                rm $(TARGET_RECOVERY_ROOT_OUT)/sbin/egrep; fi; ln -s $(TARGET_RECOVERY_ROOT_OUT)/sbin/grep $(TARGET_RECOVERY_ROOT_OUT)/sbin/egrep; \
+                                if [ -e "$(TARGET_RECOVERY_ROOT_OUT)/sbin/fgrep" ]; then \
+                                rm $(TARGET_RECOVERY_ROOT_OUT)/sbin/fgrep; fi; ln -s $(TARGET_RECOVERY_ROOT_OUT)/sbin/grep $(TARGET_RECOVERY_ROOT_OUT)/sbin/fgrep;
+    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
+        ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 29; echo $$?),0)
+            RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/dd
         endif
-        LOCAL_POST_INSTALL_CMD += $(hide) if [ -e "$(TARGET_RECOVERY_ROOT_OUT)/sbin/egrep" ]; then \
-                                    rm $(TARGET_RECOVERY_ROOT_OUT)/sbin/egrep; fi; ln -s $(TARGET_RECOVERY_ROOT_OUT)/sbin/grep $(TARGET_RECOVERY_ROOT_OUT)/sbin/egrep; \
-                                    if [ -e "$(TARGET_RECOVERY_ROOT_OUT)/sbin/fgrep" ]; then \
-                                    rm $(TARGET_RECOVERY_ROOT_OUT)/sbin/fgrep; fi; ln -s $(TARGET_RECOVERY_ROOT_OUT)/sbin/grep $(TARGET_RECOVERY_ROOT_OUT)/sbin/fgrep;
-        # RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/toybox
-        ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
-            ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 29; echo $$?),0)
-                RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/dd
-            endif
-        endif
-        ifneq ($(wildcard external/zip/Android.mk),)
-            RELINK_SOURCE_FILES += $(TARGET_OUT_OPTIONAL_EXECUTABLES)/zip
-        endif
-        ifneq ($(wildcard external/unzip/Android.mk),)
-            RELINK_SOURCE_FILES += $(TARGET_OUT_OPTIONAL_EXECUTABLES)/unzip
-        endif
-        ifneq ($(wildcard system/core/libziparchive/Android.bp),)
-            RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/unzip
-        endif
-        ifneq ($(wildcard external/one-true-awk/Android.bp),)
-            RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/awk
-        endif
+    endif
+    ifneq ($(wildcard external/zip/Android.mk),)
+        RELINK_SOURCE_FILES += $(TARGET_OUT_OPTIONAL_EXECUTABLES)/zip
+    endif
+    ifneq ($(wildcard external/unzip/Android.mk),)
+        RELINK_SOURCE_FILES += $(TARGET_OUT_OPTIONAL_EXECUTABLES)/unzip
+    endif
+    ifneq ($(wildcard system/core/libziparchive/Android.bp),)
+        RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/unzip
+    endif
+    ifneq ($(wildcard external/one-true-awk/Android.bp),)
+        RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/awk
     endif
 endif
+
 RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/pigz
 RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/fsck.fat
 RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/fatlabel
 RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/mkfs.fat
 ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 27; echo $$?),0)
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -le 29; echo $$?),0)    
+    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -le 29; echo $$?),0)
         RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/adbd
     else
         RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/bin/adbd
@@ -105,12 +102,14 @@
     RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/libadbd_services.so
     RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/libcap.so
     RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/libminijail.so
+    RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/bin/toybox
     # RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/lib64/libinit.so
     RELINK_SOURCE_FILES += $(TARGET_ROOT_OUT)/../system/lib64/libdl_android.so
 else
     RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libc.so
     RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libdl.so
     RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libm.so
+    RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/toybox
 endif
 RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libcutils.so
 RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libcrecovery.so
@@ -454,22 +453,29 @@
     RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libext2_misc.so
 endif
 
-TW_BB_SYMLINKS :=
-ifneq ($(TW_USE_TOOLBOX), true)
-    TW_BB_SYMLINKS := busybox_symlinks
-endif
+#toybox links
+toybox_links := acpi base64 basename bc blockdev cal cat chcon chgrp chmod chown chroot chrt cksum clear \
+    cmp comm cp cpio cut date dd devmem df diff dirname dmesg dos2unix du echo env expand expr fallocate \
+    false file find flock fmt free fsync getconf getenforce groups gunzip gzip head hostname hwclock i2cdetect \
+    i2cdump i2cget i2cset iconv id ifconfig inotifyd insmod install ionice iorenice kill killall ln load_policy \
+    log logname losetup ls lsmod lsof lspci lsusb md5sum microcom mkdir mkfifo mknod mkswap mktemp modinfo modprobe \
+    more mount mountpoint mv nc netcat netstat nice nl nohup nproc nsenter od paste patch pgrep pidof pkill pmap \
+    printenv printf ps pwd readlink realpath renice restorecon rm rmdir rmmod runcon sed sendevent seq setenforce \
+    setprop setsid sha1sum sha224sum sha256sum sha384sum sha512sum sleep sort split start stat stop strings stty \
+    swapoff swapon sync sysctl tac tail tar taskset tee time timeout top touch toybox tr true truncate tty ulimit \
+    umount uname uniq unix2dos unlink unshare uptime usleep uudecode uuencode uuidgen vmstat watch wc which whoami \
+    xargs xxd yes zcat
+TOYBOX_LINKS := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/system/bin/, $(toybox_links))
 
-# GEN := $(intermediates)/teamwin
-# $(GEN): $(RELINK) $(TW_BB_SYMLINKS) toolbox_symlinks
-
-#relink recovery executables linker to /sbin
+#relink recovery executables linker to /sbin and move symlinks
 include $(CLEAR_VARS)
 LOCAL_MODULE := relink
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
 LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-LOCAL_POST_INSTALL_CMD += $(RELINK) $(TARGET_RECOVERY_ROOT_OUT)/sbin $(RELINK_SOURCE_FILES)
-LOCAL_REQUIRED_MODULES := linker toolbox_symlinks adbd libdl_android
+LOCAL_POST_INSTALL_CMD += $(RELINK) $(TARGET_RECOVERY_ROOT_OUT)/sbin $(RELINK_SOURCE_FILES) && \
+    mv $(TOYBOX_LINKS) $(TARGET_RECOVERY_ROOT_OUT)/sbin/
+LOCAL_REQUIRED_MODULES := linker adbd libdl_android toybox
 include $(BUILD_PHONY_PACKAGE)
 
 #relink init
@@ -602,16 +608,16 @@
 	include $(BUILD_PREBUILT)
 endif
 
-#ifeq ($(TW_USE_TOOLBOX), true)
-#    include $(CLEAR_VARS)
-#    LOCAL_MODULE := mkshrc_twrp
-#    LOCAL_MODULE_STEM := mkshrc
-#    LOCAL_MODULE_TAGS := optional
-#    LOCAL_MODULE_CLASS := ETC
-#    LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/etc
-#    LOCAL_SRC_FILES := $(LOCAL_MODULE)
-#    include $(BUILD_PREBUILT)
-#endif
+ifeq ($(TW_USE_TOOLBOX), true)
+   include $(CLEAR_VARS)
+   LOCAL_MODULE := mkshrc_twrp
+   LOCAL_MODULE_STEM := mkshrc
+   LOCAL_MODULE_TAGS := optional
+   LOCAL_MODULE_CLASS := ETC
+   LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/etc
+   LOCAL_SRC_FILES := $(LOCAL_MODULE)
+   include $(BUILD_PREBUILT)
+endif
 
 #TWRP App "placeholder"
 include $(CLEAR_VARS)
diff --git a/prebuilt/fix_permissions.sh b/prebuilt/fix_permissions.sh
deleted file mode 100755
index 3723a12..0000000
--- a/prebuilt/fix_permissions.sh
+++ /dev/null
@@ -1,484 +0,0 @@
-#!/sbin/sh
-#
-# Warning: if you want to run this script in cm-recovery change the above to #!/sbin/sh
-#
-# fix_permissions - fixes permissions on Android data directories after upgrade
-# shade@chemlab.org
-#
-# original concept: http://blog.elsdoerfer.name/2009/05/25/android-fix-package-uid-mismatches/
-# implementation by: Cyanogen
-# improved by: ankn, smeat, thenefield, farmatito, rikupw, Kastro
-#
-# v1.1-v1.31r3 - many improvements and concepts from XDA developers.
-# v1.34 through v2.00 -  A lot of frustration [by Kastro]
-# v2.01	- Completely rewrote the script for SPEED, thanks for the input farmatito
-#         /data/data depth recursion is tweaked;
-#         fixed single mode;
-#         functions created for modularity;
-#         logging can be disabled via CLI for more speed;
-#         runtime computation added to end (Runtime: mins secs);
-#         progress (current # of total) added to screen;
-#         fixed CLI argument parsing, now you can have more than one option!;
-#         debug cli option;
-#         verbosity can be disabled via CLI option for less noise;;
-#         [by Kastro, (XDA: k4str0), twitter;mattcarver]
-# v2.02 - ignore com.htc.resources.apk if it exists and minor code cleanups,
-#         fix help text, implement simulated run (-s) [farmatito]
-# v2.03 - fixed chown group ownership output [Kastro]
-# v2.04 - replaced /system/sd with $SD_EXT_DIRECTORY [Firerat]
-VERSION="2.04"
-
-# Defaults
-DEBUG=0 # Debug off by default
-LOGGING=1 # Logging on by default
-VERBOSE=1 # Verbose on by default
-
-# Messages
-UID_MSG="Changing user ownership for:"
-GID_MSG="Changing group ownership for:"
-PERM_MSG="Changing permissions for:"
-
-# Programs needed
-ECHO="busybox echo"
-GREP="busybox grep"
-EGREP="busybox egrep"
-CAT="busybox cat"
-CHOWN="busybox chown"
-CHMOD="busybox chmod"
-MOUNT="busybox mount"
-UMOUNT="busybox umount"
-CUT="busybox cut"
-FIND="busybox find"
-LS="busybox ls"
-TR="busybox tr"
-TEE="busybox tee"
-TEST="busybox test"
-SED="busybox sed"
-RM="busybox rm"
-WC="busybox wc"
-EXPR="busybox expr"
-DATE="busybox date"
-
-# Initialise vars
-CODEPATH=""
-UID=""
-GID=""
-PACKAGE=""
-REMOVE=0
-NOSYSTEM=0
-ONLY_ONE=""
-SIMULATE=0
-SYSREMOUNT=0
-SYSMOUNT=0
-DATAMOUNT=0
-SYSSDMOUNT=0
-FP_STARTTIME=$( $DATE +"%m-%d-%Y %H:%M:%S" )
-FP_STARTEPOCH=$( $DATE +%s )
-if $TEST "$SD_EXT_DIRECTORY" = ""; then
-    #check for mount point, /system/sd included in tests for backward compatibility
-    for MP in /sd-ext /system/sd;do
-        if $TEST -d $MP; then
-            SD_EXT_DIRECTORY=$MP
-            break
-        fi
-    done
-fi
-fp_usage()
-{
-   $ECHO "Usage $0 [OPTIONS] [APK_PATH]"
-   $ECHO "      -d         turn on debug"
-   $ECHO "      -f         fix only package APK_PATH"
-   $ECHO "      -l         disable logging for this run (faster)"
-   $ECHO "      -r         remove stale data directories"
-   $ECHO "                 of uninstalled packages while fixing permissions"
-   $ECHO "      -s         simulate only"
-   $ECHO "      -u         check only non-system directories"
-   $ECHO "      -v         disable verbosity for this run (less output)"
-   $ECHO "      -V         print version"
-   $ECHO "      -h         this help"
-}
-
-fp_parseargs()
-{
-   # Parse options
-   while $TEST $# -ne 0; do
-      case "$1" in
-         -d)
-            DEBUG=1
-         ;;
-         -f)
-            if $TEST $# -lt 2; then
-               $ECHO "$0: missing argument for option $1"
-               exit 1
-            else
-               if $TEST $( $ECHO $2 | $CUT -c1 ) != "-"; then
-                  ONLY_ONE=$2
-                  shift;
-               else
-                  $ECHO "$0: missing argument for option $1"
-                  exit 1
-               fi
-            fi
-         ;;
-         -r)
-            REMOVE=1
-         ;;
-         -s)
-            SIMULATE=1
-         ;;
-         -l)
-            if $TEST $LOGGING -eq 0; then
-               LOGGING=1
-            else
-               LOGGING=0
-            fi
-         ;;
-         -v)
-            if $TEST $VERBOSE -eq 0; then
-               VERBOSE=1
-            else
-               VERBOSE=0
-            fi
-         ;;
-         -u)
-            NOSYSTEM=1
-         ;;
-         -V)
-            $ECHO "$0 $VERSION"
-            exit 0
-         ;;
-         -h)
-            fp_usage
-            exit 0
-         ;;
-         -*)
-            $ECHO "$0: unknown option $1"
-            $ECHO
-            fp_usage
-            exit 1
-         ;;
-      esac
-      shift;
-   done
-}
-
-fp_print()
-{
-   MSG=$@
-   if $TEST $LOGGING -eq 1; then
-      $ECHO $MSG | $TEE -a $LOG_FILE
-   else
-      $ECHO $MSG
-   fi
-}
-
-fp_start()
-{
-   if $TEST $SIMULATE -eq 0 ; then
-      if $TEST $( $GREP -c " /system " "/proc/mounts" ) -ne 0; then
-         DEVICE=$( $GREP " /system " "/proc/mounts" | $CUT -d ' ' -f1 )
-         if $TEST $DEBUG -eq 1; then
-            fp_print "/system mounted on $DEVICE"
-         fi
-         if $TEST $( $GREP " /system " "/proc/mounts" | $GREP -c " ro " ) -ne 0; then
-            $MOUNT -o remount,rw $DEVICE /system
-            SYSREMOUNT=1
-         fi
-      else
-         $MOUNT /system > /dev/null 2>&1
-         SYSMOUNT=1
-      fi
-
-      if $TEST $( $GREP -c " /data " "/proc/mounts" ) -eq 0; then
-         $MOUNT /data > /dev/null 2>&1
-         DATAMOUNT=1
-      fi
-
-      if $TEST -e /dev/block/mmcblk0p2 && $TEST $( $GREP -c " $SD_EXT_DIRECTORY " "/proc/mounts" ) -eq 0; then
-         $MOUNT $SD_EXT_DIRECTORY > /dev/null 2>&1
-         SYSSDMOUNT=1
-      fi
-   fi
-   if $TEST $( $MOUNT | $GREP -c /sdcard ) -eq 0; then
-      LOG_FILE="/data/fix_permissions.log"
-   else
-      LOG_FILE="/sdcard/fix_permissions.log"
-   fi
-   if $TEST ! -e "$LOG_FILE"; then
-      > $LOG_FILE
-   fi
-
-   fp_print "$0 $VERSION started at $FP_STARTTIME"
-}
-
-fp_chown_uid()
-{
-   FP_OLDUID=$1
-   FP_UID=$2
-   FP_FILE=$3
-
-   #if user ownership doesn't equal then change them
-   if $TEST "$FP_OLDUID" != "$FP_UID"; then
-      if $TEST $VERBOSE -ne 0; then
-         fp_print "$UID_MSG $FP_FILE from '$FP_OLDUID' to '$FP_UID'"
-      fi
-      if $TEST $SIMULATE -eq 0; then
-         $CHOWN $FP_UID "$FP_FILE"
-      fi
-   fi
-}
-
-fp_chown_gid()
-{
-   FP_OLDGID=$1
-   FP_GID=$2
-   FP_FILE=$3
-
-   #if group ownership doesn't equal then change them
-   if $TEST "$FP_OLDGID" != "$FP_GID"; then
-      if $TEST $VERBOSE -ne 0; then
-         fp_print "$GID_MSG $FP_FILE from '$FP_OLDGID' to '$FP_GID'"
-      fi
-      if $TEST $SIMULATE -eq 0; then
-         $CHOWN :$FP_GID "$FP_FILE"
-      fi
-   fi
-}
-
-fp_chmod()
-{
-   FP_OLDPER=$1
-   FP_OLDPER=$( $ECHO $FP_OLDPER | cut -c2-10 )
-   FP_PERSTR=$2
-   FP_PERNUM=$3
-   FP_FILE=$4
-
-   #if the permissions are not equal
-   if $TEST "$FP_OLDPER" != "$FP_PERSTR"; then
-      if $TEST $VERBOSE -ne 0; then
-         fp_print "$PERM_MSG $FP_FILE from '$FP_OLDPER' to '$FP_PERSTR' ($FP_PERNUM)"
-      fi
-      #change the permissions
-      if $TEST $SIMULATE -eq 0; then
-         $CHMOD $FP_PERNUM "$FP_FILE"
-      fi
-   fi
-}
-
-fp_all()
-{
-   FP_NUMS=$( $CAT /data/system/packages.xml | $EGREP "^<package.*serId" | $GREP -v framework-res.apk | $GREP -v com.htc.resources.apk | $WC -l )
-   I=0
-   $CAT /data/system/packages.xml | $EGREP "^<package.*serId" | $GREP -v framework-res.apk | $GREP -v com.htc.resources.apk | while read all_line; do
-      I=$( $EXPR $I + 1 )
-      fp_package "$all_line" $I $FP_NUMS
-   done
-}
-
-fp_single()
-{
-   FP_SFOUND=$( $CAT /data/system/packages.xml | $EGREP "^<package.*serId" | $GREP -v framework-res.apk | $GREP -v com.htc.resources.apk | $GREP -i $ONLY_ONE | wc -l )
-   if $TEST $FP_SFOUND -gt 1; then
-      fp_print "Cannot perform single operation on $FP_SFOUND matched package(s)."
-      elif $TEST $FP_SFOUND = "" -o $FP_SFOUND -eq 0; then
-      fp_print "Could not find the package you specified in the packages.xml file."
-   else
-      FP_SPKG=$( $CAT /data/system/packages.xml | $EGREP "^<package.*serId" | $GREP -v framework-res.apk | $GREP -v com.htc.resources.apk | $GREP -i $ONLY_ONE )
-      fp_package "${FP_SPKG}" 1 1
-   fi
-}
-
-fp_package()
-{
-   pkgline=$1
-   curnum=$2
-   endnum=$3
-   CODEPATH=$( $ECHO $pkgline | $SED 's%.* codePath="\(.*\)".*%\1%' |  $CUT -d '"' -f1 )
-   PACKAGE=$( $ECHO $pkgline | $SED 's%.* name="\(.*\)".*%\1%' | $CUT -d '"' -f1 )
-   UID=$( $ECHO $pkgline | $SED 's%.*serId="\(.*\)".*%\1%' |  $CUT -d '"' -f1 )
-   GID=$UID
-   APPDIR=$( $ECHO $CODEPATH | $SED 's%^\(.*\)/.*%\1%' )
-   APK=$( $ECHO $CODEPATH | $SED 's%^.*/\(.*\..*\)$%\1%' )
-
-   #debug
-   if $TEST $DEBUG -eq 1; then
-      fp_print "CODEPATH: $CODEPATH APPDIR: $APPDIR APK:$APK UID/GID:$UID:$GID"
-   fi
-
-   #check for existence of apk
-   if $TEST -e $CODEPATH;  then
-      fp_print "Processing ($curnum of $endnum): $PACKAGE..."
-
-      #lets get existing permissions of CODEPATH
-      OLD_UGD=$( $LS -ln "$CODEPATH" )
-      OLD_PER=$( $ECHO $OLD_UGD | $CUT -d ' ' -f1 )
-      OLD_UID=$( $ECHO $OLD_UGD | $CUT -d ' ' -f3 )
-      OLD_GID=$( $ECHO $OLD_UGD | $CUT -d ' ' -f4 )
-
-      #apk source dirs
-      if $TEST "$APPDIR" = "/system/app"; then
-         #skip system apps if set
-         if $TEST "$NOSYSTEM" = "1"; then
-            fp_print "***SKIPPING SYSTEM APP ($PACKAGE)!"
-            return
-         fi
-         fp_chown_uid $OLD_UID 0 "$CODEPATH"
-         fp_chown_gid $OLD_GID 0 "$CODEPATH"
-         fp_chmod $OLD_PER "rw-r--r--" 644 "$CODEPATH"
-         elif $TEST "$APPDIR" = "/data/app" || $TEST "$APPDIR" = "/sd-ext/app"; then
-         fp_chown_uid $OLD_UID 1000 "$CODEPATH"
-         fp_chown_gid $OLD_GID 1000 "$CODEPATH"
-         fp_chmod $OLD_PER "rw-r--r--" 644 "$CODEPATH"
-         elif $TEST "$APPDIR" = "/data/app-private" || $TEST "$APPDIR" = "/sd-ext/app-private"; then
-         fp_chown_uid $OLD_UID 1000 "$CODEPATH"
-         fp_chown_gid $OLD_GID $GID "$CODEPATH"
-         fp_chmod $OLD_PER "rw-r-----" 640 "$CODEPATH"
-      fi
-   else
-      fp_print "$CODEPATH does not exist ($curnum of $endnum). Reinstall..."
-      if $TEST $REMOVE -eq 1; then
-         if $TEST -d /data/data/$PACKAGE ; then
-            fp_print "Removing stale dir /data/data/$PACKAGE"
-            if $TEST $SIMULATE -eq 0 ; then
-               $RM -R /data/data/$PACKAGE
-            fi
-         fi
-      fi
-   fi
-
-   #the data/data for the package
-   if $TEST -d "/data/data/$PACKAGE"; then
-      #find all directories in /data/data/$PACKAGE
-      $FIND /data/data/$PACKAGE -type d -exec $LS -ldn {} \; | while read dataline; do
-         #get existing permissions of that directory
-         OLD_PER=$( $ECHO $dataline | $CUT -d ' ' -f1 )
-         OLD_UID=$( $ECHO $dataline | $CUT -d ' ' -f3 )
-         OLD_GID=$( $ECHO $dataline | $CUT -d ' ' -f4 )
-         FILEDIR=$( $ECHO $dataline | $CUT -d ' ' -f9 )
-         FOURDIR=$( $ECHO $FILEDIR | $CUT -d '/' -f5 )
-
-         #set defaults for iteration
-         ISLIB=0
-         REVPERM=755
-         REVPSTR="rwxr-xr-x"
-         REVUID=$UID
-         REVGID=$GID
-
-         if $TEST "$FOURDIR" = ""; then
-            #package directory, perms:755 owner:$UID:$GID
-            fp_chmod $OLD_PER "rwxr-xr-x" 755 "$FILEDIR"
-            elif $TEST "$FOURDIR" = "lib"; then
-            #lib directory, perms:755 owner:1000:1000
-            #lib files, perms:755 owner:1000:1000
-            ISLIB=1
-            REVPERM=755
-            REVPSTR="rwxr-xr-x"
-            REVUID=1000
-            REVGID=1000
-            fp_chmod $OLD_PER "rwxr-xr-x" 755 "$FILEDIR"
-            elif $TEST "$FOURDIR" = "shared_prefs"; then
-            #shared_prefs directories, perms:771 owner:$UID:$GID
-            #shared_prefs files, perms:660 owner:$UID:$GID
-            REVPERM=660
-            REVPSTR="rw-rw----"
-            fp_chmod $OLD_PER "rwxrwx--x" 771 "$FILEDIR"
-            elif $TEST "$FOURDIR" = "databases"; then
-            #databases directories, perms:771 owner:$UID:$GID
-            #databases files, perms:660 owner:$UID:$GID
-            REVPERM=660
-            REVPSTR="rw-rw----"
-            fp_chmod $OLD_PER "rwxrwx--x" 771 "$FILEDIR"
-            elif $TEST "$FOURDIR" = "cache"; then
-            #cache directories, perms:771 owner:$UID:$GID
-            #cache files, perms:600 owner:$UID:GID
-            REVPERM=600
-            REVPSTR="rw-------"
-            fp_chmod $OLD_PER "rwxrwx--x" 771 "$FILEDIR"
-         else
-            #other directories, perms:771 owner:$UID:$GID
-            REVPERM=771
-            REVPSTR="rwxrwx--x"
-            fp_chmod $OLD_PER "rwxrwx--x" 771 "$FILEDIR"
-         fi
-
-         #change ownership of directories matched
-         if $TEST "$ISLIB" = "1"; then
-            fp_chown_uid $OLD_UID 1000 "$FILEDIR"
-            fp_chown_gid $OLD_GID 1000 "$FILEDIR"
-         else
-            fp_chown_uid $OLD_UID $UID "$FILEDIR"
-            fp_chown_gid $OLD_GID $GID "$FILEDIR"
-         fi
-
-         #if any files exist in directory with improper permissions reset them
-         $FIND $FILEDIR -type f -maxdepth 1 ! -perm $REVPERM -exec $LS -ln {} \; | while read subline; do
-            OLD_PER=$( $ECHO $subline | $CUT -d ' ' -f1 )
-            SUBFILE=$( $ECHO $subline | $CUT -d ' ' -f9 )
-            fp_chmod $OLD_PER $REVPSTR $REVPERM "$SUBFILE"
-         done
-
-         #if any files exist in directory with improper user reset them
-         $FIND $FILEDIR -type f -maxdepth 1 ! -user $REVUID -exec $LS -ln {} \; | while read subline; do
-            OLD_UID=$( $ECHO $subline | $CUT -d ' ' -f3 )
-            SUBFILE=$( $ECHO $subline | $CUT -d ' ' -f9 )
-            fp_chown_uid $OLD_UID $REVUID "$SUBFILE"
-         done
-
-         #if any files exist in directory with improper group reset them
-         $FIND $FILEDIR -type f -maxdepth 1 ! -group $REVGID -exec $LS -ln {} \; | while read subline; do
-            OLD_GID=$( $ECHO $subline | $CUT -d ' ' -f4 )
-            SUBFILE=$( $ECHO $subline | $CUT -d ' ' -f9 )
-            fp_chown_gid $OLD_GID $REVGID "$SUBFILE"
-         done
-      done
-   fi
-}
-
-date_diff()
-{
-   if $TEST $# -ne 2; then
-      FP_DDM="E"
-      FP_DDS="E"
-      return
-   fi
-   FP_DDD=$( $EXPR $2 - $1 )
-   FP_DDM=$( $EXPR $FP_DDD / 60 )
-   FP_DDS=$( $EXPR $FP_DDD % 60 )
-}
-
-fp_end()
-{
-   if $TEST $SYSREMOUNT -eq 1; then
-      $MOUNT -o remount,ro $DEVICE /system > /dev/null 2>&1
-   fi
-
-   if $TEST $SYSSDMOUNT -eq 1; then
-      $UMOUNT $SD_EXT_DIRECTORY > /dev/null 2>&1
-   fi
-
-   if $TEST $SYSMOUNT -eq 1; then
-      $UMOUNT /system > /dev/null 2>&1
-   fi
-
-   if $TEST $DATAMOUNT -eq 1; then
-      $UMOUNT /data > /dev/null 2>&1
-   fi
-
-   FP_ENDTIME=$( $DATE +"%m-%d-%Y %H:%M:%S" )
-   FP_ENDEPOCH=$( $DATE +%s )
-
-   date_diff $FP_STARTEPOCH $FP_ENDEPOCH
-
-   fp_print "$0 $VERSION ended at $FP_ENDTIME (Runtime:${FP_DDM}m${FP_DDS}s)"
-}
-
-#MAIN SCRIPT
-
-fp_parseargs $@
-fp_start
-if $TEST "$ONLY_ONE" != "" -a "$ONLY_ONE" != "0" ; then
-   fp_single "$ONLY_ONE"
-else
-   fp_all
-fi
-fp_end
diff --git a/toolbox/Android.mk b/toolbox/Android.mk
deleted file mode 100755
index 4a2546e..0000000
--- a/toolbox/Android.mk
+++ /dev/null
@@ -1,357 +0,0 @@
-TWRP_TOOLBOX_PATH := $(call my-dir)
-LOCAL_PATH := system/core/toolbox
-include $(CLEAR_VARS)
-
-OUR_TOOLS :=
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
-    OUR_TOOLS := \
-        start \
-        stop
-endif
-    
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
-    OUR_TOOLS += \
-        getprop \
-        setprop
-endif
-
-# If busybox does not have SELinux support, provide these tools with toolbox.
-# Note that RECOVERY_BUSYBOX_TOOLS will be empty if TW_USE_TOOLBOX == true.
-TOOLS_FOR_SELINUX := \
-    ls
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
-    TOOLS_FOR_SELINUX += \
-        load_policy \
-        getenforce \
-        chcon \
-        restorecon \
-        runcon \
-        getsebool \
-        setsebool
-endif
-
-OUR_TOOLS += $(filter-out $(RECOVERY_BUSYBOX_TOOLS), $(TOOLS_FOR_SELINUX))
-
-# toolbox setenforce is used during init, so it needs to be included here
-# symlink is omitted at the very end if busybox already provides this
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
-   OUR_TOOLS += setenforce
-endif
-
-ifeq ($(TW_USE_TOOLBOX), true)
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 22; echo $$?),0)
-        # These are the only toolbox tools in M. The rest are now in toybox.
-        BSD_TOOLS :=
-
-        OUR_TOOLS := \
-            newfs_msdos
-
-        ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 26; echo $$?),0)
-            OUR_TOOLS += \
-                iftop \
-                ioctl \
-                nandread \
-                prlimit \
-                sendevent \
-                start \
-                stop
-        endif
-
-        ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
-            BSD_TOOLS += \
-                dd \
-                du \
-
-            OUR_TOOLS += \
-                df \
-                ionice \
-                log \
-                ls \
-                lsof \
-                mount \
-                ps \
-                renice \
-                top \
-                uptime \
-                watchprops
-        endif
-    else
-        ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
-            OUR_TOOLS += \
-                mknod \
-                nohup
-            BSD_TOOLS := \
-                cat \
-                chown \
-                cp \
-                dd \
-                du \
-                grep \
-                kill \
-                ln \
-                mv \
-                printenv \
-                rm \
-                rmdir \
-                sleep \
-                sync
-        else
-            OUR_TOOLS += \
-                cat \
-                chown \
-                dd \
-                du \
-                kill \
-                ln \
-                mv \
-                printenv \
-                rm \
-                rmdir \
-                setconsole \
-                sleep \
-                sync
-        endif
-
-        OUR_TOOLS += \
-            chmod \
-            clear \
-            cmp \
-            date \
-            df \
-            dmesg \
-            getevent \
-            hd \
-            id \
-            ifconfig \
-            iftop \
-            insmod \
-            ioctl \
-            ionice \
-            log \
-            lsmod \
-            lsof \
-            md5 \
-            mkdir \
-            mkswap \
-            mount \
-            nandread \
-            netstat \
-            newfs_msdos \
-            notify \
-            ps \
-            readlink \
-            renice \
-            rmmod \
-            route \
-            schedtop \
-            sendevent \
-            smd \
-            swapoff \
-            swapon \
-            top \
-            touch \
-            umount \
-            uptime \
-            vmstat \
-            watchprops \
-            wipe
-    endif
-endif
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27; echo $$?),0)
-    # Special rules for 9.0
-    OUR_TOOLS += getevent
-    LOCAL_C_INCLUDES += $(TWRP_TOOLBOX_PATH)
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 29; echo $$?),0)
-        LOCAL_WHOLE_STATIC_LIBRARIES += libtoolbox_dd
-    endif
-
-    ifneq ($(TW_USE_TOOLBOX), true)
-        OUR_TOOLS += newfs_msdos
-    endif
-endif
-
-ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
-    ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
-        OUR_TOOLS += r
-    endif
-endif
-
-LOCAL_SRC_FILES := \
-    toolbox.c \
-    $(patsubst %,%.c,$(OUR_TOOLS))
-
-ifneq ($(wildcard system/core/toolbox/dynarray.c),)
-    LOCAL_SRC_FILES += dynarray.c
-endif
-
-ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
-    LOCAL_SRC_FILES += \
-        pwcache.c \
-        upstream-netbsd/lib/libc/gen/getbsize.c \
-        upstream-netbsd/lib/libc/gen/humanize_number.c \
-        upstream-netbsd/lib/libc/stdlib/strsuftoll.c \
-        upstream-netbsd/lib/libc/string/swab.c \
-        upstream-netbsd/lib/libutil/raise_default_signal.c
-endif
-
-ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22 23))
-    LOCAL_CFLAGS += \
-        -std=gnu99 \
-        -Werror -Wno-unused-parameter \
-        -I$(LOCAL_PATH)/upstream-netbsd/include \
-        -include bsd-compatibility.h
-endif
-
-ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
-    LOCAL_C_INCLUDES += external/openssl/include
-else
-    LOCAL_C_INCLUDES += bionic/libc/bionic
-endif
-
-LOCAL_SHARED_LIBRARIES += libcutils
-
-ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
-    ifeq ($(TW_USE_TOOLBOX), true)
-        LOCAL_SHARED_LIBRARIES += libcrypto
-    endif
-else
-    LOCAL_SHARED_LIBRARIES += \
-        libc \
-        liblog
-endif
-
-LOCAL_SHARED_LIBRARIES += libselinux
-
-ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22 23))
-    # libusbhost is only used by lsusb, and that isn't usually included in toolbox.
-    # The linker strips out all the unused library code in the normal case.
-    LOCAL_STATIC_LIBRARIES := libusbhost
-    LOCAL_WHOLE_STATIC_LIBRARIES := $(patsubst %,libtoolbox_%,$(BSD_TOOLS))
-endif
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 22; echo $$?),0)
-    # Rule to make getprop and setprop in M trees where toybox normally
-    # provides these tools. Toybox does not allow for easy dynamic
-    # configuration, so we would have to include the entire toybox binary
-    # which takes up more space than is necessary so long as we are still
-    # including busybox.
-ifneq ($(TW_USE_TOOLBOX), true)
-    LOCAL_SRC_FILES += \
-        ../../../$(TWRP_TOOLBOX_PATH)/setprop.c \
-        ../../../$(TWRP_TOOLBOX_PATH)/ls.c
-    OUR_TOOLS += setprop
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 28; echo $$?),0)
-        # Special rules for <= 8.1
-        LOCAL_SRC_FILES += \
-            ../../../$(TWRP_TOOLBOX_PATH)/getprop.c
-        OUR_TOOLS += getprop
-    endif
-endif
-endif
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 28; echo $$?),0)
-    # Rule for making start and stop in N trees
-    LOCAL_SRC_FILES += \
-        ../../../$(TWRP_TOOLBOX_PATH)/start.c \
-        ../../../$(TWRP_TOOLBOX_PATH)/stop.c
-    OUR_TOOLS += start stop
-    endif
-endif
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27; echo $$?),0)
-    LOCAL_SRC_FILES += getprop.cpp
-    LOCAL_SHARED_LIBRARIES += libbase
-    LOCAL_STATIC_LIBRARIES += libpropertyinfoparser
-    LOCAL_CPPFLAGS += -std=c++17
-    OUR_TOOLS += getprop
-endif
-
-LOCAL_MODULE := toolbox_recovery
-LOCAL_MODULE_STEM := toolbox
-LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-LOCAL_MODULE_TAGS := optional
-LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-const-variable
-
-# Including this will define $(intermediates) below
-include $(BUILD_EXECUTABLE)
-
-$(LOCAL_PATH)/toolbox.c: $(intermediates)/tools.h
-
-ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22 23))
-    ALL_TOOLS := $(BSD_TOOLS) $(OUR_TOOLS)
-else
-    ALL_TOOLS := $(OUR_TOOLS)
-endif
-
-TOOLS_H := $(intermediates)/tools.h
-$(TOOLS_H): PRIVATE_TOOLS := $(ALL_TOOLS)
-$(TOOLS_H): PRIVATE_CUSTOM_TOOL = echo "/* file generated automatically */" > $@ ; for t in $(PRIVATE_TOOLS) ; do echo "TOOL($$t)" >> $@ ; done
-$(TOOLS_H): 
-	$(transform-generated-source)
-
-# toolbox setenforce is used during init in non-symlink form, so it was
-# required to be included as part of the suite above. if busybox already
-# provides setenforce, we can omit the toolbox symlink
-TEMP_TOOLS := $(filter-out $(RECOVERY_BUSYBOX_TOOLS), $(ALL_TOOLS))
-ALL_TOOLS := $(TEMP_TOOLS)
-
-# Make /sbin/toolbox launchers for each tool
-SYMLINKS := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/sbin/,$(ALL_TOOLS))
-$(SYMLINKS): TOOLBOX_BINARY := $(LOCAL_MODULE_STEM)
-$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
-	@echo "Symlink: $@ -> $(TOOLBOX_BINARY)"
-	@mkdir -p $(dir $@)
-	@rm -rf $@
-	$(hide) ln -sf $(TOOLBOX_BINARY) $@
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := toolbox_symlinks
-LOCAL_MODULE_TAGS := optional
-LOCAL_ADDITIONAL_DEPENDENCIES := $(SYMLINKS)
-include $(BUILD_PHONY_PACKAGE)
-
-ifneq (,$(filter $(PLATFORM_SDK_VERSION),16 17 18))
-    # Only needed if the build system lacks support for LOCAL_ADDITIONAL_DEPENDENCIES
-    ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
-    ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
-        $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
-endif
-
-ifeq ($(TW_USE_TOOLBOX), true)
-    ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
-        include $(CLEAR_VARS)
-        LOCAL_MODULE := dd_twrp
-        LOCAL_MODULE_STEM := dd
-        LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-        LOCAL_MODULE_TAGS := optional
-        LOCAL_CFLAGS := -include bsd-compatibility.h -DNO_CONV -Wno-unused-parameter
-        LOCAL_C_INCLUDES := system/core/toolbox/upstream-netbsd/include/ system/core/toolbox/upstream-netbsd/bin/dd system/core/toolbox
-
-        LOCAL_SHARED_LIBRARIES := \
-	        libcutils \
-
-        LOCAL_SRC_FILES += \
-            upstream-netbsd/bin/dd/args.c \
-            upstream-netbsd/bin/dd/conv.c \
-            upstream-netbsd/bin/dd/dd.c \
-            upstream-netbsd/bin/dd/dd_hostops.c \
-            upstream-netbsd/bin/dd/misc.c \
-            upstream-netbsd/bin/dd/position.c \
-            upstream-netbsd/lib/libc/gen/getbsize.c \
-            upstream-netbsd/lib/libc/gen/humanize_number.c \
-            upstream-netbsd/lib/libc/stdlib/strsuftoll.c \
-            upstream-netbsd/lib/libc/string/swab.c \
-            upstream-netbsd/lib/libutil/raise_default_signal.c
-
-        include $(BUILD_EXECUTABLE)
-    endif
-endif
-
-SYMLINKS :=
-ALL_TOOLS :=
-BSD_TOOLS :=
-OUR_TOOLS :=
-TEMP_TOOLS :=
-TOOLS_FOR_SELINUX :=
diff --git a/toolbox/dynarray.h b/toolbox/dynarray.h
deleted file mode 100644
index 0ca54fd..0000000
--- a/toolbox/dynarray.h
+++ /dev/null
@@ -1,82 +0,0 @@
-#ifndef DYNARRAY_H
-#define DYNARRAY_H
-
-// These functions are now found in system/core/toolbox/ls.c
-
-#include <stddef.h>
-
-/* simple dynamic array of pointers */
-typedef struct {
-    int count;
-    int capacity;
-    void** items;
-} dynarray_t;
-
-#define DYNARRAY_INITIALIZER  { 0, 0, NULL }
-
-void dynarray_init( dynarray_t *a );
-void dynarray_done( dynarray_t *a );
-
-void dynarray_append( dynarray_t *a, void* item );
-
-/* Used to iterate over a dynarray_t
- * _array :: pointer to the array
- * _item_type :: type of objects pointed to by the array
- * _item      :: name of a local variable defined within the loop
- *               with type '_item_type'
- * _stmnt     :: C statement that will be executed in each iteration.
- *
- * You case use 'break' and 'continue' within _stmnt
- *
- * This macro is only intended for simple uses. I.e. do not add or
- * remove items from the array during iteration.
- */
-#define DYNARRAY_FOREACH_TYPE(_array,_item_type,_item,_stmnt) \
-    do { \
-        int _nn_##__LINE__ = 0; \
-        for (;_nn_##__LINE__ < (_array)->count; ++ _nn_##__LINE__) { \
-            _item_type _item = (_item_type)(_array)->items[_nn_##__LINE__]; \
-            _stmnt; \
-        } \
-    } while (0)
-
-#define DYNARRAY_FOREACH(_array,_item,_stmnt) \
-    DYNARRAY_FOREACH_TYPE(_array,void *,_item,_stmnt)
-
-/* Simple dynamic string arrays
- *
- * NOTE: A strlist_t owns the strings it references.
- */
-typedef dynarray_t  strlist_t;
-
-#define  STRLIST_INITIALIZER  DYNARRAY_INITIALIZER
-
-/* Used to iterate over a strlist_t
- * _list   :: pointer to strlist_t object
- * _string :: name of local variable name defined within the loop with
- *            type 'char*'
- * _stmnt  :: C statement executed in each iteration
- *
- * This macro is only intended for simple uses. Do not add or remove items
- * to/from the list during iteration.
- */
-#define  STRLIST_FOREACH(_list,_string,_stmnt) \
-    DYNARRAY_FOREACH_TYPE(_list,char *,_string,_stmnt)
-
-void strlist_init( strlist_t *list );
-
-/* note: strlist_done will free all the strings owned by the list */
-void strlist_done( strlist_t *list );
-
-/* append a new string made of the first 'slen' characters from 'str'
- * followed by a trailing zero.
- */
-void strlist_append_b( strlist_t *list, const void* str, size_t  slen );
-
-/* append the copy of a given input string to a strlist_t */
-void strlist_append_dup( strlist_t *list, const char *str);
-
-/* sort the strings in a given list (using strcmp) */
-void strlist_sort( strlist_t *list );
-
-#endif /* DYNARRAY_H */
diff --git a/toolbox/getprop.c b/toolbox/getprop.c
deleted file mode 100644
index dcc0ea0..0000000
--- a/toolbox/getprop.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <cutils/properties.h>
-
-#include "dynarray.h"
-
-static void record_prop(const char* key, const char* name, void* opaque)
-{
-    strlist_t* list = opaque;
-    char temp[PROP_VALUE_MAX + PROP_NAME_MAX + 16];
-    snprintf(temp, sizeof temp, "[%s]: [%s]", key, name);
-    strlist_append_dup(list, temp);
-}
-
-static void list_properties(void)
-{
-    strlist_t  list[1] = { STRLIST_INITIALIZER };
-
-    /* Record properties in the string list */
-    (void)property_list(record_prop, list);
-
-    /* Sort everything */
-    strlist_sort(list);
-
-    /* print everything */
-    STRLIST_FOREACH(list, str, printf("%s\n", str));
-
-    /* voila */
-    strlist_done(list);
-}
-
-int getprop_main(int argc, char *argv[])
-{
-    if (argc == 1) {
-        list_properties();
-    } else {
-        char value[PROPERTY_VALUE_MAX];
-        char *default_value;
-        if(argc > 2) {
-            default_value = argv[2];
-        } else {
-            default_value = "";
-        }
-
-        property_get(argv[1], value, default_value);
-        printf("%s\n", value);
-    }
-    return 0;
-}
diff --git a/toolbox/input.h-labels.h b/toolbox/input.h-labels.h
deleted file mode 100644
index 430586e..0000000
--- a/toolbox/input.h-labels.h
+++ /dev/null
@@ -1,741 +0,0 @@
-static struct label input_prop_labels[] = {
-    LABEL(INPUT_PROP_POINTER),
-    LABEL(INPUT_PROP_DIRECT),
-    LABEL(INPUT_PROP_BUTTONPAD),
-    LABEL(INPUT_PROP_SEMI_MT),
-    LABEL(INPUT_PROP_TOPBUTTONPAD),
-    LABEL(INPUT_PROP_POINTING_STICK),
-    LABEL(INPUT_PROP_ACCELEROMETER),
-    LABEL(INPUT_PROP_MAX),
-    LABEL_END,
-};
-static struct label ev_labels[] = {
-    LABEL(EV_VERSION),
-    LABEL(EV_SYN),
-    LABEL(EV_KEY),
-    LABEL(EV_REL),
-    LABEL(EV_ABS),
-    LABEL(EV_MSC),
-    LABEL(EV_SW),
-    LABEL(EV_LED),
-    LABEL(EV_SND),
-    LABEL(EV_REP),
-    LABEL(EV_FF),
-    LABEL(EV_PWR),
-    LABEL(EV_FF_STATUS),
-    LABEL(EV_MAX),
-    LABEL_END,
-};
-static struct label syn_labels[] = {
-    LABEL(SYN_REPORT),
-    LABEL(SYN_CONFIG),
-    LABEL(SYN_MT_REPORT),
-    LABEL(SYN_DROPPED),
-    LABEL(SYN_MAX),
-    LABEL_END,
-};
-static struct label key_labels[] = {
-    LABEL(KEY_RESERVED),
-    LABEL(KEY_ESC),
-    LABEL(KEY_1),
-    LABEL(KEY_2),
-    LABEL(KEY_3),
-    LABEL(KEY_4),
-    LABEL(KEY_5),
-    LABEL(KEY_6),
-    LABEL(KEY_7),
-    LABEL(KEY_8),
-    LABEL(KEY_9),
-    LABEL(KEY_0),
-    LABEL(KEY_MINUS),
-    LABEL(KEY_EQUAL),
-    LABEL(KEY_BACKSPACE),
-    LABEL(KEY_TAB),
-    LABEL(KEY_Q),
-    LABEL(KEY_W),
-    LABEL(KEY_E),
-    LABEL(KEY_R),
-    LABEL(KEY_T),
-    LABEL(KEY_Y),
-    LABEL(KEY_U),
-    LABEL(KEY_I),
-    LABEL(KEY_O),
-    LABEL(KEY_P),
-    LABEL(KEY_LEFTBRACE),
-    LABEL(KEY_RIGHTBRACE),
-    LABEL(KEY_ENTER),
-    LABEL(KEY_LEFTCTRL),
-    LABEL(KEY_A),
-    LABEL(KEY_S),
-    LABEL(KEY_D),
-    LABEL(KEY_F),
-    LABEL(KEY_G),
-    LABEL(KEY_H),
-    LABEL(KEY_J),
-    LABEL(KEY_K),
-    LABEL(KEY_L),
-    LABEL(KEY_SEMICOLON),
-    LABEL(KEY_APOSTROPHE),
-    LABEL(KEY_GRAVE),
-    LABEL(KEY_LEFTSHIFT),
-    LABEL(KEY_BACKSLASH),
-    LABEL(KEY_Z),
-    LABEL(KEY_X),
-    LABEL(KEY_C),
-    LABEL(KEY_V),
-    LABEL(KEY_B),
-    LABEL(KEY_N),
-    LABEL(KEY_M),
-    LABEL(KEY_COMMA),
-    LABEL(KEY_DOT),
-    LABEL(KEY_SLASH),
-    LABEL(KEY_RIGHTSHIFT),
-    LABEL(KEY_KPASTERISK),
-    LABEL(KEY_LEFTALT),
-    LABEL(KEY_SPACE),
-    LABEL(KEY_CAPSLOCK),
-    LABEL(KEY_F1),
-    LABEL(KEY_F2),
-    LABEL(KEY_F3),
-    LABEL(KEY_F4),
-    LABEL(KEY_F5),
-    LABEL(KEY_F6),
-    LABEL(KEY_F7),
-    LABEL(KEY_F8),
-    LABEL(KEY_F9),
-    LABEL(KEY_F10),
-    LABEL(KEY_NUMLOCK),
-    LABEL(KEY_SCROLLLOCK),
-    LABEL(KEY_KP7),
-    LABEL(KEY_KP8),
-    LABEL(KEY_KP9),
-    LABEL(KEY_KPMINUS),
-    LABEL(KEY_KP4),
-    LABEL(KEY_KP5),
-    LABEL(KEY_KP6),
-    LABEL(KEY_KPPLUS),
-    LABEL(KEY_KP1),
-    LABEL(KEY_KP2),
-    LABEL(KEY_KP3),
-    LABEL(KEY_KP0),
-    LABEL(KEY_KPDOT),
-    LABEL(KEY_ZENKAKUHANKAKU),
-    LABEL(KEY_102ND),
-    LABEL(KEY_F11),
-    LABEL(KEY_F12),
-    LABEL(KEY_RO),
-    LABEL(KEY_KATAKANA),
-    LABEL(KEY_HIRAGANA),
-    LABEL(KEY_HENKAN),
-    LABEL(KEY_KATAKANAHIRAGANA),
-    LABEL(KEY_MUHENKAN),
-    LABEL(KEY_KPJPCOMMA),
-    LABEL(KEY_KPENTER),
-    LABEL(KEY_RIGHTCTRL),
-    LABEL(KEY_KPSLASH),
-    LABEL(KEY_SYSRQ),
-    LABEL(KEY_RIGHTALT),
-    LABEL(KEY_LINEFEED),
-    LABEL(KEY_HOME),
-    LABEL(KEY_UP),
-    LABEL(KEY_PAGEUP),
-    LABEL(KEY_LEFT),
-    LABEL(KEY_RIGHT),
-    LABEL(KEY_END),
-    LABEL(KEY_DOWN),
-    LABEL(KEY_PAGEDOWN),
-    LABEL(KEY_INSERT),
-    LABEL(KEY_DELETE),
-    LABEL(KEY_MACRO),
-    LABEL(KEY_MUTE),
-    LABEL(KEY_VOLUMEDOWN),
-    LABEL(KEY_VOLUMEUP),
-    LABEL(KEY_POWER),
-    LABEL(KEY_KPEQUAL),
-    LABEL(KEY_KPPLUSMINUS),
-    LABEL(KEY_PAUSE),
-    LABEL(KEY_SCALE),
-    LABEL(KEY_KPCOMMA),
-    LABEL(KEY_HANGEUL),
-    LABEL(KEY_HANJA),
-    LABEL(KEY_YEN),
-    LABEL(KEY_LEFTMETA),
-    LABEL(KEY_RIGHTMETA),
-    LABEL(KEY_COMPOSE),
-    LABEL(KEY_STOP),
-    LABEL(KEY_AGAIN),
-    LABEL(KEY_PROPS),
-    LABEL(KEY_UNDO),
-    LABEL(KEY_FRONT),
-    LABEL(KEY_COPY),
-    LABEL(KEY_OPEN),
-    LABEL(KEY_PASTE),
-    LABEL(KEY_FIND),
-    LABEL(KEY_CUT),
-    LABEL(KEY_HELP),
-    LABEL(KEY_MENU),
-    LABEL(KEY_CALC),
-    LABEL(KEY_SETUP),
-    LABEL(KEY_SLEEP),
-    LABEL(KEY_WAKEUP),
-    LABEL(KEY_FILE),
-    LABEL(KEY_SENDFILE),
-    LABEL(KEY_DELETEFILE),
-    LABEL(KEY_XFER),
-    LABEL(KEY_PROG1),
-    LABEL(KEY_PROG2),
-    LABEL(KEY_WWW),
-    LABEL(KEY_MSDOS),
-    LABEL(KEY_COFFEE),
-    LABEL(KEY_ROTATE_DISPLAY),
-    LABEL(KEY_CYCLEWINDOWS),
-    LABEL(KEY_MAIL),
-    LABEL(KEY_BOOKMARKS),
-    LABEL(KEY_COMPUTER),
-    LABEL(KEY_BACK),
-    LABEL(KEY_FORWARD),
-    LABEL(KEY_CLOSECD),
-    LABEL(KEY_EJECTCD),
-    LABEL(KEY_EJECTCLOSECD),
-    LABEL(KEY_NEXTSONG),
-    LABEL(KEY_PLAYPAUSE),
-    LABEL(KEY_PREVIOUSSONG),
-    LABEL(KEY_STOPCD),
-    LABEL(KEY_RECORD),
-    LABEL(KEY_REWIND),
-    LABEL(KEY_PHONE),
-    LABEL(KEY_ISO),
-    LABEL(KEY_CONFIG),
-    LABEL(KEY_HOMEPAGE),
-    LABEL(KEY_REFRESH),
-    LABEL(KEY_EXIT),
-    LABEL(KEY_MOVE),
-    LABEL(KEY_EDIT),
-    LABEL(KEY_SCROLLUP),
-    LABEL(KEY_SCROLLDOWN),
-    LABEL(KEY_KPLEFTPAREN),
-    LABEL(KEY_KPRIGHTPAREN),
-    LABEL(KEY_NEW),
-    LABEL(KEY_REDO),
-    LABEL(KEY_F13),
-    LABEL(KEY_F14),
-    LABEL(KEY_F15),
-    LABEL(KEY_F16),
-    LABEL(KEY_F17),
-    LABEL(KEY_F18),
-    LABEL(KEY_F19),
-    LABEL(KEY_F20),
-    LABEL(KEY_F21),
-    LABEL(KEY_F22),
-    LABEL(KEY_F23),
-    LABEL(KEY_F24),
-    LABEL(KEY_PLAYCD),
-    LABEL(KEY_PAUSECD),
-    LABEL(KEY_PROG3),
-    LABEL(KEY_PROG4),
-    LABEL(KEY_DASHBOARD),
-    LABEL(KEY_SUSPEND),
-    LABEL(KEY_CLOSE),
-    LABEL(KEY_PLAY),
-    LABEL(KEY_FASTFORWARD),
-    LABEL(KEY_BASSBOOST),
-    LABEL(KEY_PRINT),
-    LABEL(KEY_HP),
-    LABEL(KEY_CAMERA),
-    LABEL(KEY_SOUND),
-    LABEL(KEY_QUESTION),
-    LABEL(KEY_EMAIL),
-    LABEL(KEY_CHAT),
-    LABEL(KEY_SEARCH),
-    LABEL(KEY_CONNECT),
-    LABEL(KEY_FINANCE),
-    LABEL(KEY_SPORT),
-    LABEL(KEY_SHOP),
-    LABEL(KEY_ALTERASE),
-    LABEL(KEY_CANCEL),
-    LABEL(KEY_BRIGHTNESSDOWN),
-    LABEL(KEY_BRIGHTNESSUP),
-    LABEL(KEY_MEDIA),
-    LABEL(KEY_SWITCHVIDEOMODE),
-    LABEL(KEY_KBDILLUMTOGGLE),
-    LABEL(KEY_KBDILLUMDOWN),
-    LABEL(KEY_KBDILLUMUP),
-    LABEL(KEY_SEND),
-    LABEL(KEY_REPLY),
-    LABEL(KEY_FORWARDMAIL),
-    LABEL(KEY_SAVE),
-    LABEL(KEY_DOCUMENTS),
-    LABEL(KEY_BATTERY),
-    LABEL(KEY_BLUETOOTH),
-    LABEL(KEY_WLAN),
-    LABEL(KEY_UWB),
-    LABEL(KEY_UNKNOWN),
-    LABEL(KEY_VIDEO_NEXT),
-    LABEL(KEY_VIDEO_PREV),
-    LABEL(KEY_BRIGHTNESS_CYCLE),
-    LABEL(KEY_BRIGHTNESS_AUTO),
-    LABEL(KEY_DISPLAY_OFF),
-    LABEL(KEY_WWAN),
-    LABEL(KEY_RFKILL),
-    LABEL(KEY_MICMUTE),
-    LABEL(BTN_MISC),
-    LABEL(BTN_0),
-    LABEL(BTN_1),
-    LABEL(BTN_2),
-    LABEL(BTN_3),
-    LABEL(BTN_4),
-    LABEL(BTN_5),
-    LABEL(BTN_6),
-    LABEL(BTN_7),
-    LABEL(BTN_8),
-    LABEL(BTN_9),
-    LABEL(BTN_MOUSE),
-    LABEL(BTN_LEFT),
-    LABEL(BTN_RIGHT),
-    LABEL(BTN_MIDDLE),
-    LABEL(BTN_SIDE),
-    LABEL(BTN_EXTRA),
-    LABEL(BTN_FORWARD),
-    LABEL(BTN_BACK),
-    LABEL(BTN_TASK),
-    LABEL(BTN_JOYSTICK),
-    LABEL(BTN_TRIGGER),
-    LABEL(BTN_THUMB),
-    LABEL(BTN_THUMB2),
-    LABEL(BTN_TOP),
-    LABEL(BTN_TOP2),
-    LABEL(BTN_PINKIE),
-    LABEL(BTN_BASE),
-    LABEL(BTN_BASE2),
-    LABEL(BTN_BASE3),
-    LABEL(BTN_BASE4),
-    LABEL(BTN_BASE5),
-    LABEL(BTN_BASE6),
-    LABEL(BTN_DEAD),
-    LABEL(BTN_GAMEPAD),
-    LABEL(BTN_SOUTH),
-    LABEL(BTN_EAST),
-    LABEL(BTN_C),
-    LABEL(BTN_NORTH),
-    LABEL(BTN_WEST),
-    LABEL(BTN_Z),
-    LABEL(BTN_TL),
-    LABEL(BTN_TR),
-    LABEL(BTN_TL2),
-    LABEL(BTN_TR2),
-    LABEL(BTN_SELECT),
-    LABEL(BTN_START),
-    LABEL(BTN_MODE),
-    LABEL(BTN_THUMBL),
-    LABEL(BTN_THUMBR),
-    LABEL(BTN_DIGI),
-    LABEL(BTN_TOOL_PEN),
-    LABEL(BTN_TOOL_RUBBER),
-    LABEL(BTN_TOOL_BRUSH),
-    LABEL(BTN_TOOL_PENCIL),
-    LABEL(BTN_TOOL_AIRBRUSH),
-    LABEL(BTN_TOOL_FINGER),
-    LABEL(BTN_TOOL_MOUSE),
-    LABEL(BTN_TOOL_LENS),
-    LABEL(BTN_TOOL_QUINTTAP),
-    LABEL(BTN_STYLUS3),
-    LABEL(BTN_TOUCH),
-    LABEL(BTN_STYLUS),
-    LABEL(BTN_STYLUS2),
-    LABEL(BTN_TOOL_DOUBLETAP),
-    LABEL(BTN_TOOL_TRIPLETAP),
-    LABEL(BTN_TOOL_QUADTAP),
-    LABEL(BTN_WHEEL),
-    LABEL(BTN_GEAR_DOWN),
-    LABEL(BTN_GEAR_UP),
-    LABEL(KEY_OK),
-    LABEL(KEY_SELECT),
-    LABEL(KEY_GOTO),
-    LABEL(KEY_CLEAR),
-    LABEL(KEY_POWER2),
-    LABEL(KEY_OPTION),
-    LABEL(KEY_INFO),
-    LABEL(KEY_TIME),
-    LABEL(KEY_VENDOR),
-    LABEL(KEY_ARCHIVE),
-    LABEL(KEY_PROGRAM),
-    LABEL(KEY_CHANNEL),
-    LABEL(KEY_FAVORITES),
-    LABEL(KEY_EPG),
-    LABEL(KEY_PVR),
-    LABEL(KEY_MHP),
-    LABEL(KEY_LANGUAGE),
-    LABEL(KEY_TITLE),
-    LABEL(KEY_SUBTITLE),
-    LABEL(KEY_ANGLE),
-    LABEL(KEY_ZOOM),
-    LABEL(KEY_MODE),
-    LABEL(KEY_KEYBOARD),
-    LABEL(KEY_SCREEN),
-    LABEL(KEY_PC),
-    LABEL(KEY_TV),
-    LABEL(KEY_TV2),
-    LABEL(KEY_VCR),
-    LABEL(KEY_VCR2),
-    LABEL(KEY_SAT),
-    LABEL(KEY_SAT2),
-    LABEL(KEY_CD),
-    LABEL(KEY_TAPE),
-    LABEL(KEY_RADIO),
-    LABEL(KEY_TUNER),
-    LABEL(KEY_PLAYER),
-    LABEL(KEY_TEXT),
-    LABEL(KEY_DVD),
-    LABEL(KEY_AUX),
-    LABEL(KEY_MP3),
-    LABEL(KEY_AUDIO),
-    LABEL(KEY_VIDEO),
-    LABEL(KEY_DIRECTORY),
-    LABEL(KEY_LIST),
-    LABEL(KEY_MEMO),
-    LABEL(KEY_CALENDAR),
-    LABEL(KEY_RED),
-    LABEL(KEY_GREEN),
-    LABEL(KEY_YELLOW),
-    LABEL(KEY_BLUE),
-    LABEL(KEY_CHANNELUP),
-    LABEL(KEY_CHANNELDOWN),
-    LABEL(KEY_FIRST),
-    LABEL(KEY_LAST),
-    LABEL(KEY_AB),
-    LABEL(KEY_NEXT),
-    LABEL(KEY_RESTART),
-    LABEL(KEY_SLOW),
-    LABEL(KEY_SHUFFLE),
-    LABEL(KEY_BREAK),
-    LABEL(KEY_PREVIOUS),
-    LABEL(KEY_DIGITS),
-    LABEL(KEY_TEEN),
-    LABEL(KEY_TWEN),
-    LABEL(KEY_VIDEOPHONE),
-    LABEL(KEY_GAMES),
-    LABEL(KEY_ZOOMIN),
-    LABEL(KEY_ZOOMOUT),
-    LABEL(KEY_ZOOMRESET),
-    LABEL(KEY_WORDPROCESSOR),
-    LABEL(KEY_EDITOR),
-    LABEL(KEY_SPREADSHEET),
-    LABEL(KEY_GRAPHICSEDITOR),
-    LABEL(KEY_PRESENTATION),
-    LABEL(KEY_DATABASE),
-    LABEL(KEY_NEWS),
-    LABEL(KEY_VOICEMAIL),
-    LABEL(KEY_ADDRESSBOOK),
-    LABEL(KEY_MESSENGER),
-    LABEL(KEY_DISPLAYTOGGLE),
-    LABEL(KEY_SPELLCHECK),
-    LABEL(KEY_LOGOFF),
-    LABEL(KEY_DOLLAR),
-    LABEL(KEY_EURO),
-    LABEL(KEY_FRAMEBACK),
-    LABEL(KEY_FRAMEFORWARD),
-    LABEL(KEY_CONTEXT_MENU),
-    LABEL(KEY_MEDIA_REPEAT),
-    LABEL(KEY_10CHANNELSUP),
-    LABEL(KEY_10CHANNELSDOWN),
-    LABEL(KEY_IMAGES),
-    LABEL(KEY_DEL_EOL),
-    LABEL(KEY_DEL_EOS),
-    LABEL(KEY_INS_LINE),
-    LABEL(KEY_DEL_LINE),
-    LABEL(KEY_FN),
-    LABEL(KEY_FN_ESC),
-    LABEL(KEY_FN_F1),
-    LABEL(KEY_FN_F2),
-    LABEL(KEY_FN_F3),
-    LABEL(KEY_FN_F4),
-    LABEL(KEY_FN_F5),
-    LABEL(KEY_FN_F6),
-    LABEL(KEY_FN_F7),
-    LABEL(KEY_FN_F8),
-    LABEL(KEY_FN_F9),
-    LABEL(KEY_FN_F10),
-    LABEL(KEY_FN_F11),
-    LABEL(KEY_FN_F12),
-    LABEL(KEY_FN_1),
-    LABEL(KEY_FN_2),
-    LABEL(KEY_FN_D),
-    LABEL(KEY_FN_E),
-    LABEL(KEY_FN_F),
-    LABEL(KEY_FN_S),
-    LABEL(KEY_FN_B),
-    LABEL(KEY_BRL_DOT1),
-    LABEL(KEY_BRL_DOT2),
-    LABEL(KEY_BRL_DOT3),
-    LABEL(KEY_BRL_DOT4),
-    LABEL(KEY_BRL_DOT5),
-    LABEL(KEY_BRL_DOT6),
-    LABEL(KEY_BRL_DOT7),
-    LABEL(KEY_BRL_DOT8),
-    LABEL(KEY_BRL_DOT9),
-    LABEL(KEY_BRL_DOT10),
-    LABEL(KEY_NUMERIC_0),
-    LABEL(KEY_NUMERIC_1),
-    LABEL(KEY_NUMERIC_2),
-    LABEL(KEY_NUMERIC_3),
-    LABEL(KEY_NUMERIC_4),
-    LABEL(KEY_NUMERIC_5),
-    LABEL(KEY_NUMERIC_6),
-    LABEL(KEY_NUMERIC_7),
-    LABEL(KEY_NUMERIC_8),
-    LABEL(KEY_NUMERIC_9),
-    LABEL(KEY_NUMERIC_STAR),
-    LABEL(KEY_NUMERIC_POUND),
-    LABEL(KEY_NUMERIC_A),
-    LABEL(KEY_NUMERIC_B),
-    LABEL(KEY_NUMERIC_C),
-    LABEL(KEY_NUMERIC_D),
-    LABEL(KEY_CAMERA_FOCUS),
-    LABEL(KEY_WPS_BUTTON),
-    LABEL(KEY_TOUCHPAD_TOGGLE),
-    LABEL(KEY_TOUCHPAD_ON),
-    LABEL(KEY_TOUCHPAD_OFF),
-    LABEL(KEY_CAMERA_ZOOMIN),
-    LABEL(KEY_CAMERA_ZOOMOUT),
-    LABEL(KEY_CAMERA_UP),
-    LABEL(KEY_CAMERA_DOWN),
-    LABEL(KEY_CAMERA_LEFT),
-    LABEL(KEY_CAMERA_RIGHT),
-    LABEL(KEY_ATTENDANT_ON),
-    LABEL(KEY_ATTENDANT_OFF),
-    LABEL(KEY_ATTENDANT_TOGGLE),
-    LABEL(KEY_LIGHTS_TOGGLE),
-    LABEL(BTN_DPAD_UP),
-    LABEL(BTN_DPAD_DOWN),
-    LABEL(BTN_DPAD_LEFT),
-    LABEL(BTN_DPAD_RIGHT),
-    LABEL(KEY_ALS_TOGGLE),
-    LABEL(KEY_BUTTONCONFIG),
-    LABEL(KEY_TASKMANAGER),
-    LABEL(KEY_JOURNAL),
-    LABEL(KEY_CONTROLPANEL),
-    LABEL(KEY_APPSELECT),
-    LABEL(KEY_SCREENSAVER),
-    LABEL(KEY_VOICECOMMAND),
-    LABEL(KEY_ASSISTANT),
-    LABEL(KEY_BRIGHTNESS_MIN),
-    LABEL(KEY_BRIGHTNESS_MAX),
-    LABEL(KEY_KBDINPUTASSIST_PREV),
-    LABEL(KEY_KBDINPUTASSIST_NEXT),
-    LABEL(KEY_KBDINPUTASSIST_PREVGROUP),
-    LABEL(KEY_KBDINPUTASSIST_NEXTGROUP),
-    LABEL(KEY_KBDINPUTASSIST_ACCEPT),
-    LABEL(KEY_KBDINPUTASSIST_CANCEL),
-    LABEL(KEY_RIGHT_UP),
-    LABEL(KEY_RIGHT_DOWN),
-    LABEL(KEY_LEFT_UP),
-    LABEL(KEY_LEFT_DOWN),
-    LABEL(KEY_ROOT_MENU),
-    LABEL(KEY_MEDIA_TOP_MENU),
-    LABEL(KEY_NUMERIC_11),
-    LABEL(KEY_NUMERIC_12),
-    LABEL(KEY_AUDIO_DESC),
-    LABEL(KEY_3D_MODE),
-    LABEL(KEY_NEXT_FAVORITE),
-    LABEL(KEY_STOP_RECORD),
-    LABEL(KEY_PAUSE_RECORD),
-    LABEL(KEY_VOD),
-    LABEL(KEY_UNMUTE),
-    LABEL(KEY_FASTREVERSE),
-    LABEL(KEY_SLOWREVERSE),
-    LABEL(KEY_DATA),
-    LABEL(KEY_ONSCREEN_KEYBOARD),
-    LABEL(BTN_TRIGGER_HAPPY),
-    LABEL(BTN_TRIGGER_HAPPY1),
-    LABEL(BTN_TRIGGER_HAPPY2),
-    LABEL(BTN_TRIGGER_HAPPY3),
-    LABEL(BTN_TRIGGER_HAPPY4),
-    LABEL(BTN_TRIGGER_HAPPY5),
-    LABEL(BTN_TRIGGER_HAPPY6),
-    LABEL(BTN_TRIGGER_HAPPY7),
-    LABEL(BTN_TRIGGER_HAPPY8),
-    LABEL(BTN_TRIGGER_HAPPY9),
-    LABEL(BTN_TRIGGER_HAPPY10),
-    LABEL(BTN_TRIGGER_HAPPY11),
-    LABEL(BTN_TRIGGER_HAPPY12),
-    LABEL(BTN_TRIGGER_HAPPY13),
-    LABEL(BTN_TRIGGER_HAPPY14),
-    LABEL(BTN_TRIGGER_HAPPY15),
-    LABEL(BTN_TRIGGER_HAPPY16),
-    LABEL(BTN_TRIGGER_HAPPY17),
-    LABEL(BTN_TRIGGER_HAPPY18),
-    LABEL(BTN_TRIGGER_HAPPY19),
-    LABEL(BTN_TRIGGER_HAPPY20),
-    LABEL(BTN_TRIGGER_HAPPY21),
-    LABEL(BTN_TRIGGER_HAPPY22),
-    LABEL(BTN_TRIGGER_HAPPY23),
-    LABEL(BTN_TRIGGER_HAPPY24),
-    LABEL(BTN_TRIGGER_HAPPY25),
-    LABEL(BTN_TRIGGER_HAPPY26),
-    LABEL(BTN_TRIGGER_HAPPY27),
-    LABEL(BTN_TRIGGER_HAPPY28),
-    LABEL(BTN_TRIGGER_HAPPY29),
-    LABEL(BTN_TRIGGER_HAPPY30),
-    LABEL(BTN_TRIGGER_HAPPY31),
-    LABEL(BTN_TRIGGER_HAPPY32),
-    LABEL(BTN_TRIGGER_HAPPY33),
-    LABEL(BTN_TRIGGER_HAPPY34),
-    LABEL(BTN_TRIGGER_HAPPY35),
-    LABEL(BTN_TRIGGER_HAPPY36),
-    LABEL(BTN_TRIGGER_HAPPY37),
-    LABEL(BTN_TRIGGER_HAPPY38),
-    LABEL(BTN_TRIGGER_HAPPY39),
-    LABEL(BTN_TRIGGER_HAPPY40),
-    LABEL(KEY_MAX),
-    LABEL_END,
-};
-static struct label rel_labels[] = {
-    LABEL(REL_X),
-    LABEL(REL_Y),
-    LABEL(REL_Z),
-    LABEL(REL_RX),
-    LABEL(REL_RY),
-    LABEL(REL_RZ),
-    LABEL(REL_HWHEEL),
-    LABEL(REL_DIAL),
-    LABEL(REL_WHEEL),
-    LABEL(REL_MISC),
-    LABEL(REL_MAX),
-    LABEL_END,
-};
-static struct label abs_labels[] = {
-    LABEL(ABS_X),
-    LABEL(ABS_Y),
-    LABEL(ABS_Z),
-    LABEL(ABS_RX),
-    LABEL(ABS_RY),
-    LABEL(ABS_RZ),
-    LABEL(ABS_THROTTLE),
-    LABEL(ABS_RUDDER),
-    LABEL(ABS_WHEEL),
-    LABEL(ABS_GAS),
-    LABEL(ABS_BRAKE),
-    LABEL(ABS_HAT0X),
-    LABEL(ABS_HAT0Y),
-    LABEL(ABS_HAT1X),
-    LABEL(ABS_HAT1Y),
-    LABEL(ABS_HAT2X),
-    LABEL(ABS_HAT2Y),
-    LABEL(ABS_HAT3X),
-    LABEL(ABS_HAT3Y),
-    LABEL(ABS_PRESSURE),
-    LABEL(ABS_DISTANCE),
-    LABEL(ABS_TILT_X),
-    LABEL(ABS_TILT_Y),
-    LABEL(ABS_TOOL_WIDTH),
-    LABEL(ABS_VOLUME),
-    LABEL(ABS_MISC),
-    LABEL(ABS_MT_SLOT),
-    LABEL(ABS_MT_TOUCH_MAJOR),
-    LABEL(ABS_MT_TOUCH_MINOR),
-    LABEL(ABS_MT_WIDTH_MAJOR),
-    LABEL(ABS_MT_WIDTH_MINOR),
-    LABEL(ABS_MT_ORIENTATION),
-    LABEL(ABS_MT_POSITION_X),
-    LABEL(ABS_MT_POSITION_Y),
-    LABEL(ABS_MT_TOOL_TYPE),
-    LABEL(ABS_MT_BLOB_ID),
-    LABEL(ABS_MT_TRACKING_ID),
-    LABEL(ABS_MT_PRESSURE),
-    LABEL(ABS_MT_DISTANCE),
-    LABEL(ABS_MT_TOOL_X),
-    LABEL(ABS_MT_TOOL_Y),
-    LABEL(ABS_MAX),
-    LABEL_END,
-};
-static struct label sw_labels[] = {
-    LABEL(SW_LID),
-    LABEL(SW_TABLET_MODE),
-    LABEL(SW_HEADPHONE_INSERT),
-    LABEL(SW_RFKILL_ALL),
-    LABEL(SW_MICROPHONE_INSERT),
-    LABEL(SW_DOCK),
-    LABEL(SW_LINEOUT_INSERT),
-    LABEL(SW_JACK_PHYSICAL_INSERT),
-    LABEL(SW_VIDEOOUT_INSERT),
-    LABEL(SW_CAMERA_LENS_COVER),
-    LABEL(SW_KEYPAD_SLIDE),
-    LABEL(SW_FRONT_PROXIMITY),
-    LABEL(SW_ROTATE_LOCK),
-    LABEL(SW_LINEIN_INSERT),
-    LABEL(SW_MUTE_DEVICE),
-    LABEL(SW_PEN_INSERTED),
-    LABEL(SW_MAX),
-    LABEL_END,
-};
-static struct label msc_labels[] = {
-    LABEL(MSC_SERIAL),
-    LABEL(MSC_PULSELED),
-    LABEL(MSC_GESTURE),
-    LABEL(MSC_RAW),
-    LABEL(MSC_SCAN),
-    LABEL(MSC_TIMESTAMP),
-    LABEL(MSC_MAX),
-    LABEL_END,
-};
-static struct label led_labels[] = {
-    LABEL(LED_NUML),
-    LABEL(LED_CAPSL),
-    LABEL(LED_SCROLLL),
-    LABEL(LED_COMPOSE),
-    LABEL(LED_KANA),
-    LABEL(LED_SLEEP),
-    LABEL(LED_SUSPEND),
-    LABEL(LED_MUTE),
-    LABEL(LED_MISC),
-    LABEL(LED_MAIL),
-    LABEL(LED_CHARGING),
-    LABEL(LED_MAX),
-    LABEL_END,
-};
-static struct label rep_labels[] = {
-    LABEL(REP_DELAY),
-    LABEL(REP_PERIOD),
-    LABEL(REP_MAX),
-    LABEL_END,
-};
-static struct label snd_labels[] = {
-    LABEL(SND_CLICK),
-    LABEL(SND_BELL),
-    LABEL(SND_TONE),
-    LABEL(SND_MAX),
-    LABEL_END,
-};
-static struct label mt_tool_labels[] = {
-    LABEL(MT_TOOL_FINGER),
-    LABEL(MT_TOOL_PEN),
-    LABEL(MT_TOOL_PALM),
-    LABEL(MT_TOOL_MAX),
-    LABEL_END,
-};
-static struct label ff_status_labels[] = {
-    LABEL(FF_STATUS_STOPPED),
-    LABEL(FF_STATUS_PLAYING),
-    LABEL(FF_STATUS_MAX),
-    LABEL_END,
-};
-static struct label ff_labels[] = {
-    LABEL(FF_RUMBLE),
-    LABEL(FF_PERIODIC),
-    LABEL(FF_CONSTANT),
-    LABEL(FF_SPRING),
-    LABEL(FF_FRICTION),
-    LABEL(FF_DAMPER),
-    LABEL(FF_INERTIA),
-    LABEL(FF_RAMP),
-    LABEL(FF_SQUARE),
-    LABEL(FF_TRIANGLE),
-    LABEL(FF_SINE),
-    LABEL(FF_SAW_UP),
-    LABEL(FF_SAW_DOWN),
-    LABEL(FF_CUSTOM),
-    LABEL(FF_GAIN),
-    LABEL(FF_AUTOCENTER),
-    LABEL(FF_MAX),
-    LABEL_END,
-};
diff --git a/toolbox/ls.c b/toolbox/ls.c
deleted file mode 100644
index 9a89dd4..0000000
--- a/toolbox/ls.c
+++ /dev/null
@@ -1,588 +0,0 @@
-#include <dirent.h>
-#include <errno.h>
-#include <grp.h>
-#include <limits.h>
-#include <pwd.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/sysmacros.h>
-#include <sys/types.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <selinux/selinux.h>
-
-// simple dynamic array of strings.
-typedef struct {
-    int count;
-    int capacity;
-    void** items;
-} strlist_t;
-
-#define STRLIST_INITIALIZER { 0, 0, NULL }
-
-/* Used to iterate over a strlist_t
- * _list   :: pointer to strlist_t object
- * _item   :: name of local variable name defined within the loop with
- *            type 'char*'
- * _stmnt  :: C statement executed in each iteration
- *
- * This macro is only intended for simple uses. Do not add or remove items
- * to/from the list during iteration.
- */
-#define  STRLIST_FOREACH(_list,_item,_stmnt) \
-    do { \
-        int _nn_##__LINE__ = 0; \
-        for (;_nn_##__LINE__ < (_list)->count; ++ _nn_##__LINE__) { \
-            char* _item = (char*)(_list)->items[_nn_##__LINE__]; \
-            _stmnt; \
-        } \
-    } while (0)
-
-static void dynarray_reserve_more( strlist_t *a, int count ) {
-    int old_cap = a->capacity;
-    int new_cap = old_cap;
-    const int max_cap = INT_MAX/sizeof(void*);
-    void** new_items;
-    int new_count = a->count + count;
-
-    if (count <= 0)
-        return;
-
-    if (count > max_cap - a->count)
-        abort();
-
-    new_count = a->count + count;
-
-    while (new_cap < new_count) {
-        old_cap = new_cap;
-        new_cap += (new_cap >> 2) + 4;
-        if (new_cap < old_cap || new_cap > max_cap) {
-            new_cap = max_cap;
-        }
-    }
-    new_items = realloc(a->items, new_cap*sizeof(void*));
-    if (new_items == NULL)
-        abort();
-
-    a->items = new_items;
-    a->capacity = new_cap;
-}
-
-void strlist_init( strlist_t *list ) {
-    list->count = list->capacity = 0;
-    list->items = NULL;
-}
-
-// append a new string made of the first 'slen' characters from 'str'
-// followed by a trailing zero.
-void strlist_append_b( strlist_t *list, const void* str, size_t  slen ) {
-    char *copy = malloc(slen+1);
-    memcpy(copy, str, slen);
-    copy[slen] = '\0';
-    if (list->count >= list->capacity)
-        dynarray_reserve_more(list, 1);
-    list->items[list->count++] = copy;
-}
-
-// append the copy of a given input string to a strlist_t.
-void strlist_append_dup( strlist_t *list, const char *str) {
-    strlist_append_b(list, str, strlen(str));
-}
-
-// note: strlist_done will free all the strings owned by the list.
-void strlist_done( strlist_t *list ) {
-    STRLIST_FOREACH(list, string, free(string));
-    free(list->items);
-    list->items = NULL;
-    list->count = list->capacity = 0;
-}
-
-static int strlist_compare_strings(const void* a, const void* b) {
-    const char *sa = *(const char **)a;
-    const char *sb = *(const char **)b;
-    return strcmp(sa, sb);
-}
-
-/* sort the strings in a given list (using strcmp) */
-void strlist_sort( strlist_t *list ) {
-    if (list->count > 0) {
-        qsort(list->items, (size_t)list->count, sizeof(void*), strlist_compare_strings);
-    }
-}
-
-
-// bits for flags argument
-#define LIST_LONG           (1 << 0)
-#define LIST_ALL            (1 << 1)
-#define LIST_RECURSIVE      (1 << 2)
-#define LIST_DIRECTORIES    (1 << 3)
-#define LIST_SIZE           (1 << 4)
-#define LIST_LONG_NUMERIC   (1 << 5)
-#define LIST_CLASSIFY       (1 << 6)
-#define LIST_MACLABEL       (1 << 7)
-#define LIST_INODE          (1 << 8)
-
-// fwd
-static int listpath(const char *name, int flags);
-
-static char mode2kind(mode_t mode)
-{
-    switch(mode & S_IFMT){
-    case S_IFSOCK: return 's';
-    case S_IFLNK: return 'l';
-    case S_IFREG: return '-';
-    case S_IFDIR: return 'd';
-    case S_IFBLK: return 'b';
-    case S_IFCHR: return 'c';
-    case S_IFIFO: return 'p';
-    default: return '?';
-    }
-}
-
-void strmode(mode_t mode, char *out)
-{
-    *out++ = mode2kind(mode);
-
-    *out++ = (mode & 0400) ? 'r' : '-';
-    *out++ = (mode & 0200) ? 'w' : '-';
-    if(mode & 04000) {
-        *out++ = (mode & 0100) ? 's' : 'S';
-    } else {
-        *out++ = (mode & 0100) ? 'x' : '-';
-    }
-    *out++ = (mode & 040) ? 'r' : '-';
-    *out++ = (mode & 020) ? 'w' : '-';
-    if(mode & 02000) {
-        *out++ = (mode & 010) ? 's' : 'S';
-    } else {
-        *out++ = (mode & 010) ? 'x' : '-';
-    }
-    *out++ = (mode & 04) ? 'r' : '-';
-    *out++ = (mode & 02) ? 'w' : '-';
-    if(mode & 01000) {
-        *out++ = (mode & 01) ? 't' : 'T';
-    } else {
-        *out++ = (mode & 01) ? 'x' : '-';
-    }
-    *out = 0;
-}
-
-static void user2str(uid_t uid, char *out, size_t out_size)
-{
-    struct passwd *pw = getpwuid(uid);
-    if(pw) {
-        strlcpy(out, pw->pw_name, out_size);
-    } else {
-        snprintf(out, out_size, "%d", uid);
-    }
-}
-
-static void group2str(gid_t gid, char *out, size_t out_size)
-{
-    struct group *gr = getgrgid(gid);
-    if(gr) {
-        strlcpy(out, gr->gr_name, out_size);
-    } else {
-        snprintf(out, out_size, "%d", gid);
-    }
-}
-
-static int show_total_size(const char *dirname, DIR *d, int flags)
-{
-    struct dirent *de;
-    char tmp[1024];
-    struct stat s;
-    int sum = 0;
-
-    /* run through the directory and sum up the file block sizes */
-    while ((de = readdir(d)) != 0) {
-        if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0)
-            continue;
-        if (de->d_name[0] == '.' && (flags & LIST_ALL) == 0)
-            continue;
-
-        if (strcmp(dirname, "/") == 0)
-            snprintf(tmp, sizeof(tmp), "/%s", de->d_name);
-        else
-            snprintf(tmp, sizeof(tmp), "%s/%s", dirname, de->d_name);
-
-        if (lstat(tmp, &s) < 0) {
-            fprintf(stderr, "stat failed on %s: %s\n", tmp, strerror(errno));
-            rewinddir(d);
-            return -1;
-        }
-
-        sum += s.st_blocks / 2;
-    }
-
-    printf("total %d\n", sum);
-    rewinddir(d);
-    return 0;
-}
-
-static int listfile_size(const char *path, const char *filename, struct stat *s,
-                         int flags)
-{
-    if(!s || !path) {
-        return -1;
-    }
-
-    /* blocks are 512 bytes, we want output to be KB */
-    if ((flags & LIST_SIZE) != 0) {
-        printf("%lld ", (long long)s->st_blocks / 2);
-    }
-
-    if ((flags & LIST_CLASSIFY) != 0) {
-        char filetype = mode2kind(s->st_mode);
-        if (filetype != 'l') {
-            printf("%c ", filetype);
-        } else {
-            struct stat link_dest;
-            if (!stat(path, &link_dest)) {
-                printf("l%c ", mode2kind(link_dest.st_mode));
-            } else {
-                fprintf(stderr, "stat '%s' failed: %s\n", path, strerror(errno));
-                printf("l? ");
-            }
-        }
-    }
-
-    printf("%s\n", filename);
-
-    return 0;
-}
-
-static int listfile_long(const char *path, struct stat *s, int flags)
-{
-    char date[32];
-    char mode[16];
-    char user[32];
-    char group[32];
-    const char *name;
-
-    if(!s || !path) {
-        return -1;
-    }
-
-    /* name is anything after the final '/', or the whole path if none*/
-    name = strrchr(path, '/');
-    if(name == 0) {
-        name = path;
-    } else {
-        name++;
-    }
-
-    strmode(s->st_mode, mode);
-    if (flags & LIST_LONG_NUMERIC) {
-        snprintf(user, sizeof(user), "%u", s->st_uid);
-        snprintf(group, sizeof(group), "%u", s->st_gid);
-    } else {
-        user2str(s->st_uid, user, sizeof(user));
-        group2str(s->st_gid, group, sizeof(group));
-    }
-
-    strftime(date, 32, "%Y-%m-%d %H:%M", localtime((const time_t*)&s->st_mtime));
-    date[31] = 0;
-
-// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
-// MMMMMMMM UUUUUUUU GGGGGGGGG XXXXXXXX YYYY-MM-DD HH:MM NAME (->LINK)
-
-    switch(s->st_mode & S_IFMT) {
-    case S_IFBLK:
-    case S_IFCHR:
-        printf("%s %-8s %-8s %3d, %3d %s %s\n",
-               mode, user, group,
-               major(s->st_rdev), minor(s->st_rdev),
-               date, name);
-        break;
-    case S_IFREG:
-        printf("%s %-8s %-8s %8lld %s %s\n",
-               mode, user, group, (long long)s->st_size, date, name);
-        break;
-    case S_IFLNK: {
-        char linkto[256];
-        ssize_t len;
-
-        len = readlink(path, linkto, 256);
-        if(len < 0) return -1;
-
-        if(len > 255) {
-            linkto[252] = '.';
-            linkto[253] = '.';
-            linkto[254] = '.';
-            linkto[255] = 0;
-        } else {
-            linkto[len] = 0;
-        }
-
-        printf("%s %-8s %-8s          %s %s -> %s\n",
-               mode, user, group, date, name, linkto);
-        break;
-    }
-    default:
-        printf("%s %-8s %-8s          %s %s\n",
-               mode, user, group, date, name);
-
-    }
-    return 0;
-}
-
-static int listfile_maclabel(const char *path, struct stat *s)
-{
-    char mode[16];
-    char user[32];
-    char group[32];
-    char *maclabel = NULL;
-    const char *name;
-
-    if(!s || !path) {
-        return -1;
-    }
-
-    /* name is anything after the final '/', or the whole path if none*/
-    name = strrchr(path, '/');
-    if(name == 0) {
-        name = path;
-    } else {
-        name++;
-    }
-
-    lgetfilecon(path, &maclabel);
-    if (!maclabel) {
-        return -1;
-    }
-
-    strmode(s->st_mode, mode);
-    user2str(s->st_uid, user, sizeof(user));
-    group2str(s->st_gid, group, sizeof(group));
-
-    switch(s->st_mode & S_IFMT) {
-    case S_IFLNK: {
-        char linkto[256];
-        ssize_t len;
-
-        len = readlink(path, linkto, sizeof(linkto));
-        if(len < 0) return -1;
-
-        if((size_t)len > sizeof(linkto)-1) {
-            linkto[sizeof(linkto)-4] = '.';
-            linkto[sizeof(linkto)-3] = '.';
-            linkto[sizeof(linkto)-2] = '.';
-            linkto[sizeof(linkto)-1] = 0;
-        } else {
-            linkto[len] = 0;
-        }
-
-        printf("%s %-8s %-8s          %s %s -> %s\n",
-               mode, user, group, maclabel, name, linkto);
-        break;
-    }
-    default:
-        printf("%s %-8s %-8s          %s %s\n",
-               mode, user, group, maclabel, name);
-
-    }
-
-    free(maclabel);
-
-    return 0;
-}
-
-static int listfile(const char *dirname, const char *filename, int flags)
-{
-    struct stat s;
-
-    if ((flags & (LIST_LONG | LIST_SIZE | LIST_CLASSIFY | LIST_MACLABEL | LIST_INODE)) == 0) {
-        printf("%s\n", filename);
-        return 0;
-    }
-
-    char tmp[4096];
-    const char* pathname = filename;
-
-    if (dirname != NULL) {
-        snprintf(tmp, sizeof(tmp), "%s/%s", dirname, filename);
-        pathname = tmp;
-    } else {
-        pathname = filename;
-    }
-
-    if(lstat(pathname, &s) < 0) {
-        fprintf(stderr, "lstat '%s' failed: %s\n", pathname, strerror(errno));
-        return -1;
-    }
-
-    if(flags & LIST_INODE) {
-        printf("%8llu ", (unsigned long long)s.st_ino);
-    }
-
-    if ((flags & LIST_MACLABEL) != 0) {
-        return listfile_maclabel(pathname, &s);
-    } else if ((flags & LIST_LONG) != 0) {
-        return listfile_long(pathname, &s, flags);
-    } else /*((flags & LIST_SIZE) != 0)*/ {
-        return listfile_size(pathname, filename, &s, flags);
-    }
-}
-
-static int listdir(const char *name, int flags)
-{
-    char tmp[4096];
-    DIR *d;
-    struct dirent *de;
-    strlist_t  files = STRLIST_INITIALIZER;
-
-    d = opendir(name);
-    if(d == 0) {
-        fprintf(stderr, "opendir failed, %s\n", strerror(errno));
-        return -1;
-    }
-
-    if ((flags & LIST_SIZE) != 0) {
-        show_total_size(name, d, flags);
-    }
-
-    while((de = readdir(d)) != 0){
-        if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, "..")) continue;
-        if(de->d_name[0] == '.' && (flags & LIST_ALL) == 0) continue;
-
-        strlist_append_dup(&files, de->d_name);
-    }
-
-    strlist_sort(&files);
-    STRLIST_FOREACH(&files, filename, listfile(name, filename, flags));
-    strlist_done(&files);
-
-    if (flags & LIST_RECURSIVE) {
-        strlist_t subdirs = STRLIST_INITIALIZER;
-
-        rewinddir(d);
-
-        while ((de = readdir(d)) != 0) {
-            struct stat s;
-            int err;
-
-            if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
-                continue;
-            if (de->d_name[0] == '.' && (flags & LIST_ALL) == 0)
-                continue;
-
-            if (!strcmp(name, "/"))
-                snprintf(tmp, sizeof(tmp), "/%s", de->d_name);
-            else
-                snprintf(tmp, sizeof(tmp), "%s/%s", name, de->d_name);
-
-            /*
-             * If the name ends in a '/', use stat() so we treat it like a
-             * directory even if it's a symlink.
-             */
-            if (tmp[strlen(tmp)-1] == '/')
-                err = stat(tmp, &s);
-            else
-                err = lstat(tmp, &s);
-
-            if (err < 0) {
-                perror(tmp);
-                closedir(d);
-                return -1;
-            }
-
-            if (S_ISDIR(s.st_mode)) {
-                strlist_append_dup(&subdirs, tmp);
-            }
-        }
-        strlist_sort(&subdirs);
-        STRLIST_FOREACH(&subdirs, path, {
-            printf("\n%s:\n", path);
-            listdir(path, flags);
-        });
-        strlist_done(&subdirs);
-    }
-
-    closedir(d);
-    return 0;
-}
-
-static int listpath(const char *name, int flags)
-{
-    struct stat s;
-    int err;
-
-    /*
-     * If the name ends in a '/', use stat() so we treat it like a
-     * directory even if it's a symlink.
-     */
-    if (name[strlen(name)-1] == '/')
-        err = stat(name, &s);
-    else
-        err = lstat(name, &s);
-
-    if (err < 0) {
-        perror(name);
-        return -1;
-    }
-
-    if ((flags & LIST_DIRECTORIES) == 0 && S_ISDIR(s.st_mode)) {
-        if (flags & LIST_RECURSIVE)
-            printf("\n%s:\n", name);
-        return listdir(name, flags);
-    } else {
-        /* yeah this calls stat() again*/
-        return listfile(NULL, name, flags);
-    }
-}
-
-int ls_main(int argc, char **argv)
-{
-    int flags = 0;
-
-    if(argc > 1) {
-        int i;
-        int err = 0;
-        strlist_t  files = STRLIST_INITIALIZER;
-
-        for (i = 1; i < argc; i++) {
-            if (argv[i][0] == '-') {
-                /* an option ? */
-                const char *arg = argv[i]+1;
-                while (arg[0]) {
-                    switch (arg[0]) {
-                    case 'l': flags |= LIST_LONG; break;
-                    case 'n': flags |= LIST_LONG | LIST_LONG_NUMERIC; break;
-                    case 's': flags |= LIST_SIZE; break;
-                    case 'R': flags |= LIST_RECURSIVE; break;
-                    case 'd': flags |= LIST_DIRECTORIES; break;
-                    case 'Z': flags |= LIST_MACLABEL; break;
-                    case 'a': flags |= LIST_ALL; break;
-                    case 'F': flags |= LIST_CLASSIFY; break;
-                    case 'i': flags |= LIST_INODE; break;
-                    default:
-                        fprintf(stderr, "%s: Unknown option '-%c'. Aborting.\n", "ls", arg[0]);
-                        exit(1);
-                    }
-                    arg++;
-                }
-            } else {
-                /* not an option ? */
-                strlist_append_dup(&files, argv[i]);
-            }
-        }
-
-        if (files.count > 0) {
-            STRLIST_FOREACH(&files, path, {
-                if (listpath(path, flags) != 0) {
-                    err = EXIT_FAILURE;
-                }
-            });
-            strlist_done(&files);
-            return err;
-        }
-    }
-
-    // list working directory if no files or directories were specified
-    return listpath(".", flags);
-}
diff --git a/toolbox/setprop.c b/toolbox/setprop.c
deleted file mode 100644
index 63ad2b4..0000000
--- a/toolbox/setprop.c
+++ /dev/null
@@ -1,18 +0,0 @@
-#include <stdio.h>
-
-#include <cutils/properties.h>
-
-int setprop_main(int argc, char *argv[])
-{
-    if(argc != 3) {
-        fprintf(stderr,"usage: setprop <key> <value>\n");
-        return 1;
-    }
-
-    if(property_set(argv[1], argv[2])){
-        fprintf(stderr,"could not set property\n");
-        return 1;
-    }
-
-    return 0;
-}
diff --git a/toolbox/start.c b/toolbox/start.c
deleted file mode 100644
index 6c8a3f2..0000000
--- a/toolbox/start.c
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <cutils/properties.h>
-
-int start_main(int argc, char *argv[])
-{
-    if(argc > 1) {
-        property_set("ctl.start", argv[1]);
-    } else {
-        /* defaults to starting the common services stopped by stop.c */
-        property_set("ctl.start", "netd");
-        property_set("ctl.start", "surfaceflinger");
-        property_set("ctl.start", "zygote");
-        property_set("ctl.start", "zygote_secondary");
-    }
-
-    return 0;
-}
diff --git a/toolbox/stop.c b/toolbox/stop.c
deleted file mode 100644
index 5e3ce3c..0000000
--- a/toolbox/stop.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-
-#include <cutils/properties.h>
-
-int stop_main(int argc, char *argv[])
-{
-    if(argc > 1) {
-        property_set("ctl.stop", argv[1]);
-    } else{
-        /* defaults to stopping the common services */
-        property_set("ctl.stop", "zygote_secondary");
-        property_set("ctl.stop", "zygote");
-        property_set("ctl.stop", "surfaceflinger");
-        property_set("ctl.stop", "netd");
-    }
-
-    return 0;
-}
diff --git a/toybox/Android.mk b/toybox/Android.mk
deleted file mode 100755
index 0fb345d..0000000
--- a/toybox/Android.mk
+++ /dev/null
@@ -1,599 +0,0 @@
-#
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-ifneq ($(wildcard external/toybox/Android.mk),)
-
-ifeq ($(TW_USE_TOOLBOX), true)
-
-LOCAL_PATH := external/toybox
-
-#
-# To update:
-#
-
-#  git remote add toybox https://github.com/landley/toybox.git
-#  git fetch toybox
-#  git merge toybox/master
-#  mm -j32
-#  # (Make any necessary Android.mk changes and test the new toybox.)
-#  git push aosp HEAD:master  # Push directly, avoiding gerrit.
-#  git push aosp HEAD:refs/for/master  # Push to gerrit.
-#
-#  # Now commit any necessary Android.mk changes like normal:
-#  repo start post-sync .
-#  git commit -a
-
-
-#
-# To add a toy:
-#
-
-#  make menuconfig
-#  # (Select the toy you want to add.)
-#  make clean && make  # Regenerate the generated files.
-#  # Edit LOCAL_SRC_FILES below to add the toy.
-#  # If you just want to use it as "toybox x" rather than "x", you can stop now.
-#  # If you want this toy to have a symbolic link in /system/bin, add the toy to ALL_TOOLS.
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-    lib/args.c \
-    lib/dirtree.c \
-    lib/getmountlist.c \
-    lib/help.c \
-    lib/interestingtimes.c \
-    lib/lib.c \
-    lib/llist.c \
-    lib/net.c \
-    lib/portability.c \
-    lib/xwrap.c \
-    main.c \
-    toys/android/getenforce.c \
-    toys/android/getprop.c \
-    toys/android/load_policy.c \
-    toys/android/restorecon.c \
-    toys/android/runcon.c \
-    toys/android/setenforce.c \
-    toys/android/setprop.c \
-    toys/lsb/hostname.c \
-    toys/lsb/killall.c \
-    toys/lsb/md5sum.c \
-    toys/lsb/mknod.c \
-    toys/lsb/mktemp.c \
-    toys/lsb/mount.c \
-    toys/lsb/pidof.c \
-    toys/lsb/seq.c \
-    toys/lsb/sync.c \
-    toys/lsb/umount.c \
-    toys/other/acpi.c \
-    toys/other/base64.c \
-    toys/other/blkid.c \
-    toys/other/blockdev.c \
-    toys/other/bzcat.c \
-    toys/other/chcon.c \
-    toys/other/chroot.c \
-    toys/other/clear.c \
-    toys/other/dos2unix.c \
-    toys/other/fallocate.c \
-    toys/other/free.c \
-    toys/other/freeramdisk.c \
-    toys/other/fsfreeze.c \
-    toys/other/help.c \
-    toys/other/inotifyd.c \
-    toys/other/insmod.c \
-    toys/other/losetup.c \
-    toys/other/lsattr.c \
-    toys/other/lsmod.c \
-    toys/other/lsusb.c \
-    toys/other/makedevs.c \
-    toys/other/mkswap.c \
-    toys/other/modinfo.c \
-    toys/other/mountpoint.c \
-    toys/other/nbd_client.c \
-    toys/other/partprobe.c \
-    toys/other/pivot_root.c \
-    toys/other/pmap.c \
-    toys/other/printenv.c \
-    toys/other/pwdx.c \
-    toys/other/readlink.c \
-    toys/other/realpath.c \
-    toys/other/rev.c \
-    toys/other/rmmod.c \
-    toys/other/setsid.c \
-    toys/other/stat.c \
-    toys/other/swapoff.c \
-    toys/other/swapon.c \
-    toys/other/sysctl.c \
-    toys/other/tac.c \
-    toys/other/taskset.c \
-    toys/other/timeout.c \
-    toys/other/truncate.c \
-    toys/other/usleep.c \
-    toys/other/vconfig.c \
-    toys/other/vmstat.c \
-    toys/other/which.c \
-    toys/other/yes.c \
-    toys/pending/dd.c \
-    toys/pending/expr.c \
-    toys/pending/more.c \
-    toys/pending/route.c \
-    toys/pending/tar.c \
-    toys/pending/tr.c \
-    toys/pending/traceroute.c \
-    toys/posix/basename.c \
-    toys/posix/cal.c \
-    toys/posix/cat.c \
-    toys/posix/chgrp.c \
-    toys/posix/chmod.c \
-    toys/posix/cksum.c \
-    toys/posix/cmp.c \
-    toys/posix/comm.c \
-    toys/posix/cp.c \
-    toys/posix/cpio.c \
-    toys/posix/cut.c \
-    toys/posix/date.c \
-    toys/posix/df.c \
-    toys/posix/dirname.c \
-    toys/posix/du.c \
-    toys/posix/echo.c \
-    toys/posix/env.c \
-    toys/posix/expand.c \
-    toys/posix/false.c \
-    toys/posix/find.c \
-    toys/posix/grep.c \
-    toys/posix/head.c \
-    toys/posix/id.c \
-    toys/posix/kill.c \
-    toys/posix/ln.c \
-    toys/posix/ls.c \
-    toys/posix/mkdir.c \
-    toys/posix/mkfifo.c \
-    toys/posix/nice.c \
-    toys/posix/nl.c \
-    toys/posix/nohup.c \
-    toys/posix/od.c \
-    toys/posix/paste.c \
-    toys/posix/patch.c \
-    toys/posix/printf.c \
-    toys/posix/pwd.c \
-    toys/posix/renice.c \
-    toys/posix/rm.c \
-    toys/posix/rmdir.c \
-    toys/posix/sed.c \
-    toys/posix/sleep.c \
-    toys/posix/sort.c \
-    toys/posix/split.c \
-    toys/posix/strings.c \
-    toys/posix/tail.c \
-    toys/posix/tee.c \
-    toys/posix/time.c \
-    toys/posix/touch.c \
-    toys/posix/true.c \
-    toys/posix/tty.c \
-    toys/posix/uname.c \
-    toys/posix/uniq.c \
-    toys/posix/wc.c \
-    toys/posix/xargs.c
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -eq 26; echo $$?),0)
-# Android 8.0 had some tools in different paths
-LOCAL_SRC_FILES += \
-    toys/pending/dmesg.c
-else
-LOCAL_SRC_FILES += \
-    toys/lsb/dmesg.c
-endif
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
-# there are some conflicts here with AOSP-7.[01] and CM-14.[01]
-# the following items have been removed for compatibility
-# ifconfig, netcat, netstat, rfkill, switch_root
-LOCAL_STATIC_LIBRARIES := libcrypto_static
-
-LOCAL_C_INCLUDES += \
-    external/boringssl/include \
-    bionic/libc/dns/include
-
-LOCAL_SRC_FILES += \
-    lib/linestack.c \
-    lib/password.c \
-    toys/other/flock.c \
-    toys/other/hwclock.c \
-    toys/other/ionice.c \
-    toys/other/lspci.c \
-    toys/other/readahead.c \
-    toys/other/reset.c \
-    toys/other/uptime.c \
-    toys/other/xxd.c \
-    toys/pending/arp.c \
-    toys/pending/diff.c \
-    toys/pending/lsof.c \
-    toys/pending/telnet.c \
-    toys/pending/test.c \
-    toys/pending/watch.c \
-    toys/posix/ps.c \
-    toys/posix/ulimit.c
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 27; echo $$?),0)
-LOCAL_SRC_FILES += \
-    toys/pending/xzcat.c
-endif
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25; echo $$?),0)
-# Android 8.0/8.1 had some tools in different paths
-LOCAL_SRC_FILES += \
-    toys/net/ftpget.c
-else
-LOCAL_SRC_FILES += \
-    toys/pending/ftpget.c
-endif
-
-# Account for master branch changes pulld into CM14.1
-ifneq ($(CM_BUILD),)
-LOCAL_SRC_FILES += \
-    toys/android/log.c \
-    toys/android/sendevent.c \
-    toys/android/start.c \
-    toys/net/ifconfig.c \
-    toys/net/netcat.c \
-    toys/net/netstat.c \
-    toys/net/rfkill.c \
-    toys/net/tunctl.c \
-    toys/other/setfattr.c \
-    toys/pending/chrt.c \
-    toys/pending/fdisk.c \
-    toys/pending/getfattr.c \
-    toys/pending/host.c \
-    toys/pending/resize.c \
-    toys/posix/file.c
-else
-LOCAL_SRC_FILES += \
-    toys/other/switch_root.c
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25; echo $$?),0)
-# Android 8.0 had some tools in different paths
-LOCAL_SRC_FILES += \
-    toys/android/log.c \
-    toys/android/sendevent.c \
-    toys/android/start.c \
-    toys/net/ifconfig.c \
-    toys/net/microcom.c \
-    toys/net/netcat.c \
-    toys/net/netstat.c \
-    toys/net/rfkill.c \
-    toys/net/tunctl.c \
-    toys/pending/getfattr.c \
-    toys/pending/modprobe.c \
-    toys/posix/file.c \
-    toys/posix/uudecode.c \
-    toys/posix/uuencode.c
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 26; echo $$?),0)
-# Android 8.1 had some tools in different paths
-LOCAL_SRC_FILES += \
-    toys/other/chrt.c \
-    toys/pending/gzip.c
-else
-LOCAL_SRC_FILES += \
-    toys/pending/chrt.c
-endif
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27; echo $$?),0)
-# Android 9.0
-LOCAL_SRC_FILES += \
-    toys/other/setfattr.c \
-    toys/pending/fmt.c \
-    toys/pending/stty.c
-else
-LOCAL_SRC_FILES += \
-    toys/pending/setfattr.c
-endif
-LOCAL_SHARED_LIBRARIES += liblog
-else
-LOCAL_SRC_FILES += \
-    toys/other/ifconfig.c \
-    toys/other/netcat.c \
-    toys/other/rfkill.c \
-    toys/pending/netstat.c
-endif
-endif
-else
-LOCAL_SRC_FILES += \
-    toys/other/ifconfig.c \
-    toys/other/netcat.c \
-    toys/other/rfkill.c \
-    toys/other/switch_root.c \
-    toys/pending/hwclock.c \
-    toys/pending/netstat.c \
-    toys/pending/pgrep.c \
-    toys/pending/top.c
-endif
-
-LOCAL_CFLAGS += \
-    -std=c99 \
-    -std=gnu11 \
-    -Os \
-    -Wno-char-subscripts \
-    -Wno-sign-compare \
-    -Wno-string-plus-int \
-    -Wno-uninitialized \
-    -Wno-unused-parameter \
-    -funsigned-char \
-    -ffunction-sections -fdata-sections \
-    -fno-asynchronous-unwind-tables \
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
-    toybox_version := $(shell git -C $(LOCAL_PATH) rev-parse --short=12 HEAD 2>/dev/null)-android
-    LOCAL_CFLAGS += -DTOYBOX_VERSION='"$(toybox_version)"'
-else
-    toybox_version := $(shell sed 's/#define.*TOYBOX_VERSION.*"\(.*\)"/\1/p;d' $(LOCAL_PATH)/main.c)
-    LOCAL_CFLAGS += -DTOYBOX_VERSION=\"$(toybox_version)\"
-endif
-
-LOCAL_CLANG := true
-
-LOCAL_SHARED_LIBRARIES += libcutils libselinux
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 26; echo $$?),0)
-LOCAL_CFLAGS += \
-    -Wno-gnu-variable-sized-type-not-at-end \
-    -Wno-missing-field-initializers
-
-LOCAL_SHARED_LIBRARIES += libz
-endif
-
-LOCAL_MODULE := toybox_recovery
-LOCAL_MODULE_STEM := toybox
-LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-LOCAL_MODULE_TAGS := optional
-
-# dupes: dd df du ls mount renice
-# useless?: freeramdisk fsfreeze install makedevs mkfifo nbd-client
-#           partprobe pivot_root pwdx rev rfkill switch_root tty vconfig
-# prefer BSD netcat instead?: nc netcat
-# prefer efs2progs instead?: blkid chattr lsattr
-
-ALL_TOOLS := \
-    acpi \
-    basename \
-    blkid \
-    blockdev \
-    bzcat \
-    cal \
-    cat \
-    chcon \
-    chgrp \
-    chmod \
-    chown \
-    chroot \
-    cksum \
-    clear \
-    comm \
-    cmp \
-    cp \
-    cpio \
-    cut \
-    date \
-    dirname \
-    dmesg \
-    dos2unix \
-    echo \
-    env \
-    expand \
-    expr \
-    fallocate \
-    false \
-    find \
-    free \
-    getenforce \
-    groups \
-    head \
-    hostname \
-    hwclock \
-    id \
-    ifconfig \
-    inotifyd \
-    insmod \
-    kill \
-    load_policy \
-    ln \
-    logname \
-    losetup \
-    lsmod \
-    lsusb \
-    md5sum \
-    mkdir \
-    mknod \
-    mkswap \
-    mktemp \
-    modinfo \
-    more \
-    mountpoint \
-    mv \
-    netstat \
-    nice \
-    nl \
-    nohup \
-    od \
-    paste \
-    patch \
-    pgrep \
-    pidof \
-    pkill \
-    pmap \
-    printenv \
-    printf \
-    pwd \
-    readlink \
-    realpath \
-    restorecon \
-    rm \
-    rmdir \
-    rmmod \
-    route \
-    runcon \
-    sed \
-    seq \
-    setenforce \
-    setprop \
-    setsid \
-    sha1sum \
-    sleep \
-    sort \
-    split \
-    stat \
-    strings \
-    swapoff \
-    swapon \
-    sync \
-    sysctl \
-    tac \
-    tail \
-    tar \
-    taskset \
-    tee \
-    time \
-    timeout \
-    touch \
-    tr \
-    true \
-    truncate \
-    umount \
-    uname \
-    uniq \
-    unix2dos \
-    usleep \
-    vmstat \
-    wc \
-    which \
-    whoami \
-    xargs \
-    yes
-
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
-ALL_TOOLS += \
-    arp \
-    base64 \
-    chattr \
-    df \
-    diff \
-    flock \
-    freeramdisk \
-    fsfreeze \
-    fstype \
-    ftpget \
-    ftpput \
-    help \
-    install \
-    ionice \
-    iorenice \
-    iotop \
-    killall \
-    ls \
-    lsattr \
-    lsof \
-    lspci \
-    makedevs \
-    mkfifo \
-    mount \
-    nbd-client \
-    nc \
-    netcat \
-    nproc \
-    partprobe \
-    pivot_root \
-    ps \
-    pwdx \
-    readahead \
-    renice \
-    reset \
-    rev \
-    rfkill \
-    sha224sum \
-    sha256sum \
-    sha384sum \
-    sha512sum \
-    telnet \
-    test \
-    top \
-    traceroute \
-    traceroute6 \
-    tty \
-    tunctl \
-    ulimit \
-    uptime \
-    vconfig \
-    watch \
-    xxd
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -le 27; echo $$?),0)
-ALL_TOOLS += \
-    getprop \
-    xzcat
-endif
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 24; echo $$?),0)
-ALL_TOOLS += \
-    du \
-    gzip \
-    gunzip \
-    zcat
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25; echo $$?),0)
-ALL_TOOLS += \
-    fmt \
-    start \
-    stop \
-    stty
-endif
-ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 28; echo $$?),0)
-ALL_TOOLS += \
-    dd
-endif
-endif
-# Account for master branch changes pulld into CM14.1
-ifneq ($(CM_BUILD),)
-ALL_TOOLS += \
-    chrt \
-    fdisk \
-    file \
-    getfattr \
-    host \
-    log \
-    resize \
-    setfattr
-endif
-endif
-
-# Install the symlinks.
-# LOCAL_POST_INSTALL_CMD := $(hide) $(foreach t,$(ALL_TOOLS),ln -sf toybox $(TARGET_RECOVERY_ROOT_OUT)/sbin/$(t);)
-LOCAL_POST_INSTALL_CMD := $(foreach t,$(ALL_TOOLS),ln -sf toybox $(TARGET_RECOVERY_ROOT_OUT)/sbin/$(t);)
-
-
-include $(BUILD_EXECUTABLE)
-
-# Make /sbin/toolbox launchers for each tool
-SYMLINKS := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/sbin/,$(ALL_TOOLS))
-$(SYMLINKS): TOYBOX_BINARY := $(LOCAL_MODULE_STEM)
-$(SYMLINKS): $(LOCAL_INSTALLED_MODULE) $(LOCAL_PATH)/Android.mk
-	@echo "Symlink: $@ -> $(TOYBOX_BINARY)"
-	@mkdir -p $(dir $@)
-	@rm -rf $@
-	$(hide) ln -sf $(TOYBOX_BINARY) $@
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := toybox_symlinks
-LOCAL_MODULE_TAGS := optional
-LOCAL_ADDITIONAL_DEPENDENCIES := $(SYMLINKS)
-include $(BUILD_PHONY_PACKAGE)
-
-endif
-
-endif