am e944944f: Merge "Add "Apply update from sdcard" to default recovery image."

* commit 'e944944fa58f66dad5483b6ee1ea9a2c0f9bedd2':
  Add "Apply update from sdcard" to default recovery image.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c0833f2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,14 @@
+The Recovery Image
+==================
+
+Quick turn-around testing
+-------------------------
+
+    mm -j
+    m ramdisk-nodeps
+    m recoveryimage-nodeps
+    adb reboot bootloader
+
+    # To boot into the new recovery image
+    # without flashing the recovery partition:
+    fastboot boot $ANDROID_PRODUCT_OUT/recovery.img
diff --git a/default_device.cpp b/default_device.cpp
index 97806ac..ed601f6 100644
--- a/default_device.cpp
+++ b/default_device.cpp
@@ -20,19 +20,24 @@
 #include "device.h"
 #include "screen_ui.h"
 
-static const char* HEADERS[] = { "Volume up/down to move highlight;",
-                                 "enter button to select.",
-                                 "",
-                                 NULL };
+static const char* HEADERS[] = {
+    "Volume up/down to move highlight.",
+    "Power button to select.",
+    "",
+    NULL
+};
 
-static const char* ITEMS[] =  {"reboot system now",
-                               "apply update from ADB",
-                               "wipe data/factory reset",
-                               "wipe cache partition",
-                               "reboot to bootloader",
-                               "power down",
-                               "view recovery logs",
-                               NULL };
+static const char* ITEMS[] = {
+    "Reboot system now",
+    "Reboot to bootloader",
+    "Apply update from ADB",
+    "Apply update from SD card",
+    "Wipe data/factory reset",
+    "Wipe cache partition",
+    "View recovery logs",
+    "Power off",
+    NULL
+};
 
 class DefaultDevice : public Device {
   public:
@@ -65,12 +70,13 @@
     BuiltinAction InvokeMenuItem(int menu_position) {
         switch (menu_position) {
           case 0: return REBOOT;
-          case 1: return APPLY_ADB_SIDELOAD;
-          case 2: return WIPE_DATA;
-          case 3: return WIPE_CACHE;
-          case 4: return REBOOT_BOOTLOADER;
-          case 5: return SHUTDOWN;
+          case 1: return REBOOT_BOOTLOADER;
+          case 2: return APPLY_ADB_SIDELOAD;
+          case 3: return APPLY_EXT;
+          case 4: return WIPE_DATA;
+          case 5: return WIPE_CACHE;
           case 6: return READ_RECOVERY_LASTLOG;
+          case 7: return SHUTDOWN;
           default: return NO_ACTION;
         }
     }
diff --git a/recovery.cpp b/recovery.cpp
index 0760613..641f36f 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -512,7 +512,7 @@
 
     const char** new_headers = (const char**)malloc((count+1) * sizeof(char*));
     const char** h = new_headers;
-    *(h++) = "Android system recovery <" EXPAND(RECOVERY_API_VERSION) "e>";
+    *(h++) = "Android system recovery (API " EXPAND(RECOVERY_API_VERSION) ")";
     *(h++) = recovery_version;
     *(h++) = "";
     for (p = headers; *p; ++p, ++h) *h = *p;
@@ -877,7 +877,11 @@
                 break;
 
             case Device::APPLY_EXT: {
-                ensure_path_mounted(SDCARD_ROOT);
+                if (ensure_path_mounted(SDCARD_ROOT) != 0) {
+                    ui->Print("\n-- Couldn't mount %s.\n", SDCARD_ROOT);
+                    break;
+                }
+
                 char* path = browse_directory(SDCARD_ROOT, device);
                 if (path == NULL) {
                     ui->Print("\n-- No package file selected.\n", path);
@@ -910,7 +914,7 @@
                     } else if (!ui->IsTextVisible()) {
                         return Device::NO_ACTION;  // reboot if logs aren't visible
                     } else {
-                        ui->Print("\nInstall from sdcard complete.\n");
+                        ui->Print("\nInstall from SD card complete.\n");
                     }
                 }
                 break;