Merge CM's bootable/recovery... I'll fork it later.

Change-Id: Ic3e72090a34aef2827c60cb6c0428b4fae129a65
diff --git a/utilities/Android.mk b/utilities/Android.mk
old mode 100644
new mode 100755
index 251c9e6..79201a3
--- a/utilities/Android.mk
+++ b/utilities/Android.mk
@@ -42,7 +42,7 @@
 LOCAL_SRC_FILES := $(LOCAL_MODULE)
 include $(BUILD_PREBUILT)
 
-ifeq ($BOARD_HAS_LARGE_FILESYSTEM,true)
+ifeq ($(BOARD_HAS_LARGE_FILESYSTEM),true)
 include $(CLEAR_VARS)
 LOCAL_MODULE := mke2fs
 LOCAL_MODULE_TAGS := eng
@@ -52,4 +52,38 @@
 include $(BUILD_PREBUILT)
 endif
 
+ifeq ($(BOARD_USES_RECOVERY_CHARGEMODE),true)
+include $(CLEAR_VARS)
+LOCAL_MODULE := choice_fn
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := power_test
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := offmode_charging
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := detect_key
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+endif
+
 endif
diff --git a/utilities/choice_fn b/utilities/choice_fn
new file mode 100755
index 0000000..9af6061
--- /dev/null
+++ b/utilities/choice_fn
Binary files differ
diff --git a/utilities/detect_key b/utilities/detect_key
new file mode 100755
index 0000000..ebf5ec2
--- /dev/null
+++ b/utilities/detect_key
Binary files differ
diff --git a/utilities/fix_permissions b/utilities/fix_permissions
old mode 100644
new mode 100755
diff --git a/utilities/mke2fs b/utilities/mke2fs
old mode 100644
new mode 100755
Binary files differ
diff --git a/utilities/offmode_charging b/utilities/offmode_charging
new file mode 100755
index 0000000..48da64c
--- /dev/null
+++ b/utilities/offmode_charging
Binary files differ
diff --git a/utilities/parted b/utilities/parted
old mode 100644
new mode 100755
Binary files differ
diff --git a/utilities/power_test b/utilities/power_test
new file mode 100755
index 0000000..7cbb171
--- /dev/null
+++ b/utilities/power_test
Binary files differ
diff --git a/utilities/sdparted b/utilities/sdparted
old mode 100644
new mode 100755
index 13e62f4..74e24a6
--- a/utilities/sdparted
+++ b/utilities/sdparted
@@ -546,12 +546,29 @@
 
 SDSIZE=
 SDSIZEMB=
-if [ -z "$SDPATH" ]
+SDINFO=$(cat /etc/fstab | grep /sdcard | awk '{print $1}')
+if [ -L "$SDINFO" ]
 then
-    SDPATH="/dev/block/mmcblk0"
+	SDPATH=$(ls -l $SDINFO | awk '{print $11}')
 else
-    echo Found SDPATH=$SDPATH
+	SDPATH=$SDINFO
 fi
+# we may now have an SDPATH, let's make sure its on mmcblkX or mmcblkXp1
+CHECK_SDPATH1=$(echo $SDPATH | grep mmcblk.$)
+CHECK_SDPATH2=$(echo $SDPATH | grep mmcblk.p1$)
+if [ -z "$CHECK_SDPATH1" ]
+then
+	if [ -z "$CHECK_SDPATH2" ]
+	then
+		echo fail1
+		unset SDPATH
+	else
+		LEN=${#SDPATH}
+		BLKLEN=$(expr $LEN - 2)
+		SDPATH=${SDPATH:0:$BLKLEN}
+	fi
+fi
+
 
 FATSIZE=
 FATTYPE="fat32"