Switch RebootType to an enum class.

RebootType's shutdown enumerator collides with the shutdown socket
function, which causes problems when <sys/socket.h> gets included
transitively. Switch RebootType into an enum class, to namespace its
enumerators.

Test: treehugger
Change-Id: Ib5e8667df363acb28771430fd43000d381dc8620
diff --git a/cryptfs.cpp b/cryptfs.cpp
index f2f0f18..78295f8 100644
--- a/cryptfs.cpp
+++ b/cryptfs.cpp
@@ -193,19 +193,19 @@
 
 extern struct fstab *fstab;
 
-enum RebootType {reboot, recovery, shutdown};
-static void cryptfs_reboot(enum RebootType rt)
+enum class RebootType {reboot, recovery, shutdown};
+static void cryptfs_reboot(RebootType rt)
 {
-  switch(rt) {
-      case reboot:
+  switch (rt) {
+      case RebootType::reboot:
           property_set(ANDROID_RB_PROPERTY, "reboot");
           break;
 
-      case recovery:
+      case RebootType::recovery:
           property_set(ANDROID_RB_PROPERTY, "reboot,recovery");
           break;
 
-      case shutdown:
+      case RebootType::shutdown:
           property_set(ANDROID_RB_PROPERTY, "shutdown");
           break;
     }
@@ -1455,7 +1455,7 @@
                 } else {
                     /* Let's hope that a reboot clears away whatever is keeping
                        the mount busy */
-                    cryptfs_reboot(reboot);
+                    cryptfs_reboot(RebootType::reboot);
                 }
             } else {
                 SLOGE("Failed to mount decrypted data");
@@ -2656,7 +2656,7 @@
         if (rc == ENABLE_INPLACE_ERR_DEV) {
             /* Hack for b/17898962 */
             SLOGE("cryptfs_enable: crypto block dev failure. Must reboot...\n");
-            cryptfs_reboot(reboot);
+            cryptfs_reboot(RebootType::reboot);
         }
 
         if (!rc) {
@@ -2891,7 +2891,7 @@
 
     if (onlyCreateHeader) {
         sleep(2);
-        cryptfs_reboot(reboot);
+        cryptfs_reboot(RebootType::reboot);
     }
 
     if (how == CRYPTO_ENABLE_INPLACE && (!no_ui || rebootEncryption)) {
@@ -2978,11 +2978,11 @@
             return 0;
           } else {
             sleep(2); /* Give the UI a chance to show 100% progress */
-            cryptfs_reboot(reboot);
+            cryptfs_reboot(RebootType::reboot);
           }
         } else {
             sleep(2); /* Partially encrypted, ensure writes flushed to ssd */
-            cryptfs_reboot(shutdown);
+            cryptfs_reboot(RebootType::shutdown);
         }
     } else {
         char value[PROPERTY_VALUE_MAX];
@@ -2998,7 +2998,7 @@
             if (!write_bootloader_message(options, &err)) {
                 SLOGE("could not write bootloader message: %s", err.c_str());
             }
-            cryptfs_reboot(recovery);
+            cryptfs_reboot(RebootType::recovery);
         } else {
             /* set property to trigger dialog */
             property_set("vold.encrypt_progress", "error_partially_encrypted");
@@ -3028,7 +3028,7 @@
      * vold to restart the system.
      */
     SLOGE("Error enabling encryption after framework is shutdown, no data changed, restarting system");
-    cryptfs_reboot(reboot);
+    cryptfs_reboot(RebootType::reboot);
 
     /* shouldn't get here */
     property_set("vold.encrypt_progress", "error_shutting_down");