am 0dc9087b: am 208ce6f9: am deaaf79a: Share more code with the default recovery image.

* commit '0dc9087bb7b63b715ef85ac309d90b27a3709bc4':
  Share more code with the default recovery image.
diff --git a/recovery/Android.mk b/recovery/Android.mk
index b19a472..dbe4afc 100644
--- a/recovery/Android.mk
+++ b/recovery/Android.mk
@@ -3,6 +3,7 @@
 LOCAL_PATH := $(call my-dir)
 
 include $(CLEAR_VARS)
+LOCAL_CLANG := true
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := librecovery_updater_fugu
 LOCAL_SRC_FILES := recovery_updater.c fw_version_check.c
@@ -12,7 +13,7 @@
 
 
 include $(CLEAR_VARS)
-
+LOCAL_CLANG := true
 LOCAL_MODULE_TAGS := optional
 LOCAL_C_INCLUDES += bootable/recovery
 LOCAL_SRC_FILES := recovery_ui.cpp
diff --git a/recovery/recovery_ui.cpp b/recovery/recovery_ui.cpp
index e05caf3..f35f792 100644
--- a/recovery/recovery_ui.cpp
+++ b/recovery/recovery_ui.cpp
@@ -33,24 +33,13 @@
 #include "ui.h"
 #include "screen_ui.h"
 
-static const char* HEADERS[] = { "Use hardware button to move cursor; long-press to select item.",
-                                 "",
-                                 NULL };
-
-// these strings are never actually displayed
-static const char* ITEMS[] =  {"reboot system now",
-                               "apply update from ADB",
-                               "wipe data/factory reset",
-                               "wipe cache partition",
-                               "view recovery logs",
-                               NULL };
-
 #define kFBDevice "/dev/graphics/fb0"
+
 #define FBIO_PSB_SET_RGBX       _IOWR('F', 0x42, struct fb_var_screeninfo)
 #define FBIO_PSB_SET_RMODE      _IOWR('F', 0x43, struct fb_var_screeninfo)
 
 class FuguUI : public ScreenRecoveryUI {
-public:
+  public:
     FuguUI() :
         up_keys(0),
         next_key_pos(0),
@@ -66,34 +55,27 @@
     }
 
     void SetupDisplayMode() {
-        int fb_dev = open(kFBDevice, O_RDWR);
-        int res;
-        uint32_t i;
         printf("opening fb %s\n", kFBDevice);
-        if (fb_dev < 0) {
-            fprintf(stderr, "FAIL: failed to open \"%s\" (errno = %d)\n", kFBDevice, errno);
+        int fb_dev = open(kFBDevice, O_RDWR);
+        if (fb_dev == -1) {
+            fprintf(stderr, "FAIL: failed to open \"%s\": %s\n", kFBDevice, strerror(errno));
             return;
         }
 
         struct fb_var_screeninfo current_mode;
-
-        res = ioctl(fb_dev, FBIO_PSB_SET_RMODE, &current_mode);
-        if (res) {
-            fprintf(stderr,
-                "FAIL: unable to set RGBX mode on display controller (errno = %d)\n",
-                errno);
+        if (ioctl(fb_dev, FBIO_PSB_SET_RMODE, &current_mode) == -1) {
+            fprintf(stderr, "FAIL: unable to set RGBX mode on display controller: %s\n",
+                    strerror(errno));
             return;
         }
 
-        res = ioctl(fb_dev, FBIOGET_VSCREENINFO, &current_mode);
-        if (res) {
-            fprintf(stderr, "FAIL: unable to get mode, err %d\n", res);
+        if (ioctl(fb_dev, FBIOGET_VSCREENINFO, &current_mode) == -1) {
+            fprintf(stderr, "FAIL: unable to get mode: %s\n", strerror(errno));
             return;
         }
 
-        res = ioctl(fb_dev, FBIOBLANK, FB_BLANK_POWERDOWN);
-        if (res) {
-            fprintf(stderr, "FAIL: unable to blank display, err %d\n", res);
+        if (ioctl(fb_dev, FBIOBLANK, FB_BLANK_POWERDOWN) == -1) {
+            fprintf(stderr, "FAIL: unable to blank display: %s\n", strerror(errno));
             return;
         }
 
@@ -105,24 +87,19 @@
         current_mode.blue.offset = 16;
         current_mode.blue.length = 8;
 
-        res = ioctl(fb_dev, FBIOPUT_VSCREENINFO, &current_mode);
-        if (res) {
-            fprintf(stderr, "FAIL: unable to set mode, err %d\n", res);
+        if (ioctl(fb_dev, FBIOPUT_VSCREENINFO, &current_mode) == -1) {
+            fprintf(stderr, "FAIL: unable to set mode: %s\n", strerror(errno));
             return;
         }
 
-        /* set our display controller for RGBX */
-        res = ioctl(fb_dev, FBIO_PSB_SET_RGBX, &current_mode);
-        if (res) {
-            fprintf(stderr,
-                "FAIL: unable to set RGBX mode on display controller (errno = %d)\n",
-                errno);
+        if (ioctl(fb_dev, FBIO_PSB_SET_RGBX, &current_mode) == -1) {
+            fprintf(stderr, "FAIL: unable to set RGBX mode on display controller: %s\n",
+                    strerror(errno));
             return;
         }
 
-        res = ioctl(fb_dev, FBIOBLANK, FB_BLANK_UNBLANK);
-        if (res) {
-            fprintf(stderr, "FAIL: unable to unblank display, err %d\n", res);
+        if (ioctl(fb_dev, FBIOBLANK, FB_BLANK_UNBLANK) == -1) {
+            fprintf(stderr, "FAIL: unable to unblank display: %s\n", strerror(errno));
             return;
         }
     }
@@ -163,7 +140,7 @@
         long_press = is_long_press;
     }
 
-    void KeyLongPress(int key) override {
+    void KeyLongPress(int /*key*/) override {
         pthread_mutex_lock(&long_mu);
         pending_select = true;
         pthread_mutex_unlock(&long_mu);
@@ -192,7 +169,7 @@
         }
     }
 
-private:
+  private:
     static const int kKeyBufferSize = 100;
 
     int up_keys;
@@ -207,52 +184,28 @@
 
 class FuguDevice : public Device {
   public:
-    FuguDevice() : ui(new FuguUI) {
+    FuguDevice() : Device(new FuguUI) {
     }
 
-    RecoveryUI* GetUI() override { return ui; }
-
     int HandleMenuKey(int key, int visible) override {
-        static int running = 0;
-
         if (visible) {
             switch (key) {
                 case KEY_ENTER:
                     return kInvokeItem;
-                    break;
 
                 case KEY_UP:
                     return kHighlightUp;
-                    break;
 
                 case KEY_DOWN:
                 case KEY_CONNECT:   // the Fugu hardware button
                     return kHighlightDown;
-                    break;
             }
         }
 
         return kNoAction;
     }
-
-    BuiltinAction InvokeMenuItem(int menu_position) override {
-        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 READ_RECOVERY_LASTLOG;
-          default: return NO_ACTION;
-        }
-    }
-
-    const char* const* GetMenuHeaders() override { return HEADERS; }
-    const char* const* GetMenuItems() override { return ITEMS; }
-
-  private:
-    RecoveryUI* ui;
 };
 
 Device* make_device() {
-    return new FuguDevice();
+    return new FuguDevice;
 }
diff --git a/recovery/recovery_updater.c b/recovery/recovery_updater.c
index 75dd635..3b0158e 100644
--- a/recovery/recovery_updater.c
+++ b/recovery/recovery_updater.c
@@ -18,6 +18,8 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>