Move reboot() from common.h into otautil/sysutil.h.

This breaks the dependency on common.h (which belongs to
recovery/librecovery) from librecovery_ui. reboot() is now owned by
libotautil, which is expected to be a leaf node to be depended on.

With the change, recovery and updater also share the same reboot() code
now.

Test: mmma -j bootable/recovery
Change-Id: I1cc5d702cfe49302048db33d31c9c87ddc97ac71
diff --git a/Android.mk b/Android.mk
index acff24a..abe1b83 100644
--- a/Android.mk
+++ b/Android.mk
@@ -65,6 +65,7 @@
 
 LOCAL_STATIC_LIBRARIES := \
     libminui \
+    libotautil \
     libbase
 
 ifneq ($(TARGET_RECOVERY_UI_MARGIN_HEIGHT),)
diff --git a/common.h b/common.h
index 33c5ba0..de536fd 100644
--- a/common.h
+++ b/common.h
@@ -48,6 +48,4 @@
 
 bool is_ro_debuggable();
 
-bool reboot(const std::string& command);
-
 #endif  // RECOVERY_COMMON_H
diff --git a/otautil/Android.bp b/otautil/Android.bp
index 0be019c..b058f7b 100644
--- a/otautil/Android.bp
+++ b/otautil/Android.bp
@@ -48,6 +48,7 @@
 
             static_libs: [
                 "libselinux",
+                "libcutils",
             ],
         },
     },
diff --git a/otautil/include/otautil/sysutil.h b/otautil/include/otautil/sysutil.h
index 52f6d20..649f8ff 100644
--- a/otautil/include/otautil/sysutil.h
+++ b/otautil/include/otautil/sysutil.h
@@ -50,4 +50,8 @@
   std::vector<MappedRange> ranges_;
 };
 
+// Wrapper function to trigger a reboot, by additionally handling quiescent reboot mode. The
+// command should start with "reboot," (e.g. "reboot,bootloader" or "reboot,").
+bool reboot(const std::string& command);
+
 #endif  // _OTAUTIL_SYSUTIL
diff --git a/otautil/sysutil.cpp b/otautil/sysutil.cpp
index e6385c4..ab15130 100644
--- a/otautil/sysutil.cpp
+++ b/otautil/sysutil.cpp
@@ -28,8 +28,10 @@
 
 #include <android-base/file.h>
 #include <android-base/logging.h>
+#include <android-base/properties.h>
 #include <android-base/strings.h>
 #include <android-base/unique_fd.h>
+#include <cutils/android_reboot.h>
 
 bool MemMapping::MapFD(int fd) {
   struct stat sb;
@@ -201,3 +203,11 @@
   };
   ranges_.clear();
 }
+
+bool reboot(const std::string& command) {
+  std::string cmd = command;
+  if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
+    cmd += ",quiescent";
+  }
+  return android::base::SetProperty(ANDROID_RB_PROPERTY, cmd);
+}
diff --git a/recovery.cpp b/recovery.cpp
index d8f56b8..7219771 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -70,6 +70,7 @@
 #include "otautil/dirutil.h"
 #include "otautil/error_code.h"
 #include "otautil/paths.h"
+#include "otautil/sysutil.h"
 #include "roots.h"
 #include "rotate_logs.h"
 #include "screen_ui.h"
@@ -177,14 +178,6 @@
     return android::base::GetBoolProperty("ro.debuggable", false);
 }
 
-bool reboot(const std::string& command) {
-    std::string cmd = command;
-    if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
-        cmd += ",quiescent";
-    }
-    return android::base::SetProperty(ANDROID_RB_PROPERTY, cmd);
-}
-
 // command line args come from, in decreasing precedence:
 //   - the actual command line
 //   - the bootloader control block (one per line, after "recovery")
diff --git a/ui.cpp b/ui.cpp
index 3c9ded7..8983d76 100644
--- a/ui.cpp
+++ b/ui.cpp
@@ -36,14 +36,12 @@
 #include <android-base/file.h>
 #include <android-base/logging.h>
 #include <android-base/parseint.h>
-#include <android-base/properties.h>
 #include <android-base/strings.h>
-#include <cutils/android_reboot.h>
 #include <minui/minui.h>
 
-#include "common.h"
-#include "roots.h"
 #include "device.h"
+#include "otautil/sysutil.h"
+#include "roots.h"
 
 static constexpr int UI_WAIT_KEY_TIMEOUT_SEC = 120;
 static constexpr const char* BRIGHTNESS_FILE = "/sys/class/leds/lcd-backlight/brightness";
diff --git a/updater/install.cpp b/updater/install.cpp
index b41d48c..bd22467 100644
--- a/updater/install.cpp
+++ b/updater/install.cpp
@@ -48,7 +48,6 @@
 #include <android-base/strings.h>
 #include <applypatch/applypatch.h>
 #include <bootloader_message/bootloader_message.h>
-#include <cutils/android_reboot.h>
 #include <ext4_utils/wipe.h>
 #include <openssl/sha.h>
 #include <selinux/label.h>
@@ -62,6 +61,7 @@
 #include "otautil/error_code.h"
 #include "otautil/mounts.h"
 #include "otautil/print_sha1.h"
+#include "otautil/sysutil.h"
 #include "updater/updater.h"
 
 // Send over the buffer to recovery though the command pipe.
@@ -874,11 +874,7 @@
     return StringValue("");
   }
 
-  std::string reboot_cmd = "reboot," + property;
-  if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
-    reboot_cmd += ",quiescent";
-  }
-  android::base::SetProperty(ANDROID_RB_PROPERTY, reboot_cmd);
+  reboot("reboot," + property);
 
   sleep(5);
   return ErrorAbort(state, kRebootFailure, "%s() failed to reboot", name);