recovery: Update recovery from CM.

Change-Id: Ibda5ba8bbfc93ef6ff565128b63adc2991218a70
diff --git a/recovery.c b/recovery.c
index bb4c1be..963c724 100644
--- a/recovery.c
+++ b/recovery.c
@@ -61,6 +61,7 @@
 static const char *LAST_LOG_FILE = "/cache/recovery/last_log";
 static const char *SDCARD_ROOT = "/sdcard";
 static int allow_display_toggle = 1;
+static int poweroff = 0;
 static const char *SDCARD_PACKAGE_FILE = "/sdcard/update.zip";
 static const char *TEMPORARY_LOG_FILE = "/tmp/recovery.log";
 static const char *SIDELOAD_TEMP_DIR = "/tmp/sideload";
@@ -707,6 +708,7 @@
 
         switch (chosen_item) {
             case ITEM_REBOOT:
+                poweroff=0;
                 return;
 
             case ITEM_WIPE_DATA:
@@ -751,6 +753,9 @@
             case ITEM_ADVANCED:
                 show_advanced_menu();
                 break;
+            case ITEM_POWEROFF:
+                poweroff=1;
+                return;
         }
     }
 }
@@ -782,6 +787,9 @@
             return nandroid_main(argc, argv);
         if (strstr(argv[0], "reboot"))
             return reboot_main(argc, argv);
+        if (strstr(argv[0], "poweroff")){
+            return reboot_main(argc, argv);
+        }
         if (strstr(argv[0], "setprop"))
             return setprop_main(argc, argv);
 		return busybox_driver(argc, argv);
@@ -939,9 +947,12 @@
 
     // Otherwise, get ready to boot the main system...
     finish_recovery(send_intent);
-    ui_print("Rebooting...\n");
+    if(!poweroff)
+        ui_print("Rebooting...\n");
+    else
+        ui_print("Shutting down...\n");
     sync();
-    reboot(RB_AUTOBOOT);
+    reboot((!poweroff) ? RB_AUTOBOOT : RB_POWER_OFF);
     return EXIT_SUCCESS;
 }