Revert "Enable multiple consoles"

This reverts commit caafe5c6204bc2066e6201a67ecd7cd1b3f8d015.

Bug: None
Change-Id: Iea2a80003d996ce542393242f87dc658ac6d01c9
Tracked-On: https://jira01.devtools.intel.com/browse/BP-289
Signed-off-by: Viorel Suman <viorel.suman@intel.com>
diff --git a/init/init.cpp b/init/init.cpp
index 704597d..bac27df 100644
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -74,7 +74,8 @@
 
 static char qemu[32];
 
-std::vector<std::string> console_names;
+int have_console;
+std::string console_name = "/dev/console";
 static time_t process_needs_restart;
 
 const char *ENV[32];
@@ -297,23 +298,38 @@
 
 static int console_init_action(const std::vector<std::string>& args)
 {
-    std::vector<std::string> consoles;
-    std::string c_prop = property_get("ro.boot.console");
-    if (c_prop.empty()) {
-        // Property is missing, so check the system console by default.
-        consoles.emplace_back(DEFAULT_CONSOLE);
-    } else {
-        consoles = android::base::Split(c_prop, ":");
+    std::string console = property_get("ro.boot.console");
+    if (!console.empty()) {
+        console_name = "/dev/" + console;
     }
 
-    for (const auto& c : consoles) {
-        std::string console = "/dev/" + c;
-        int fd = open(console.c_str(), O_RDWR | O_CLOEXEC);
-        if (fd != -1) {
-            console_names.emplace_back(c);
-            close(fd);
-        }
+    int fd = open(console_name.c_str(), O_RDWR | O_CLOEXEC);
+    if (fd >= 0)
+        have_console = 1;
+    close(fd);
+
+    fd = open("/dev/tty0", O_WRONLY | O_CLOEXEC);
+    if (fd >= 0) {
+        const char *msg;
+            msg = "\n"
+        "\n"
+        "\n"
+        "\n"
+        "\n"
+        "\n"
+        "\n"  // console is 40 cols x 30 lines
+        "\n"
+        "\n"
+        "\n"
+        "\n"
+        "\n"
+        "\n"
+        "\n"
+        "             A N D R O I D ";
+        write(fd, msg, strlen(msg));
+        close(fd);
     }
+
     return 0;
 }
 
diff --git a/init/init.h b/init/init.h
index c844489..b6a095b 100644
--- a/init/init.h
+++ b/init/init.h
@@ -18,17 +18,16 @@
 #define _INIT_INIT_H
 
 #include <string>
-#include <vector>
 
 class Action;
 class Service;
 
 #define COMMAND_RETRY_TIMEOUT 5
-#define DEFAULT_CONSOLE "console"
 
 extern const char *ENV[32];
 extern bool waiting_for_exec;
-extern std::vector<std::string> console_names;
+extern int have_console;
+extern std::string console_name;
 extern struct selabel_handle *sehandle;
 extern struct selabel_handle *sehandle_prop;
 
diff --git a/init/readme.txt b/init/readme.txt
index 7d453c6..ef85ccf 100644
--- a/init/readme.txt
+++ b/init/readme.txt
@@ -115,11 +115,6 @@
 Options are modifiers to services.  They affect how and when init
 runs the service.
 
-console [<console>]
-  This service needs a console. The optional second parameter chooses a
-  specific console instead of the default "/dev/console". The leading "/dev/"
-  should be omitted, so "/dev/tty0" would be specified as just "console tty0".
-
 critical
   This is a device-critical service. If it exits more than four times in
   four minutes, the device will reboot into recovery mode.
diff --git a/init/service.cpp b/init/service.cpp
index e7bbf7b..bdecc32 100644
--- a/init/service.cpp
+++ b/init/service.cpp
@@ -172,7 +172,6 @@
 
 bool Service::HandleConsole(const std::vector<std::string>& args, std::string* err) {
     flags_ |= SVC_CONSOLE;
-    console_ = args.size() > 1 ? args[1] : DEFAULT_CONSOLE;
     return true;
 }
 
@@ -283,7 +282,7 @@
     constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max();
     static const Map option_handlers = {
         {"class",       {1,     1,    &Service::HandleClass}},
-        {"console",     {0,     1,    &Service::HandleConsole}},
+        {"console",     {0,     0,    &Service::HandleConsole}},
         {"critical",    {0,     0,    &Service::HandleCritical}},
         {"disabled",    {0,     0,    &Service::HandleDisabled}},
         {"group",       {1,     NR_SVC_SUPP_GIDS + 1, &Service::HandleGroup}},
@@ -330,7 +329,7 @@
     }
 
     bool needs_console = (flags_ & SVC_CONSOLE);
-    if (needs_console && console_names.empty()) {
+    if (needs_console && !have_console) {
         ERROR("service '%s' requires console\n", name_.c_str());
         flags_ |= SVC_DISABLED;
         return false;
@@ -607,12 +606,10 @@
 }
 
 void Service::OpenConsole() const {
-    int fd = -1;
-    if (std::find(console_names.begin(), console_names.end(), console_) != console_names.end()) {
-        std::string c_path = "/dev/" + console_;
-        fd = open(c_path.c_str(), O_RDWR);
+    int fd;
+    if ((fd = open(console_name.c_str(), O_RDWR)) < 0) {
+        fd = open("/dev/null", O_RDWR);
     }
-    if (fd == -1) fd = open("/dev/null", O_RDWR);
     ioctl(fd, TIOCSCTTY, 0);
     dup2(fd, 0);
     dup2(fd, 1);
diff --git a/init/service.h b/init/service.h
index b003ca0..35abde9 100644
--- a/init/service.h
+++ b/init/service.h
@@ -129,7 +129,6 @@
 
     std::string name_;
     std::string classname_;
-    std::string console_;
 
     unsigned flags_;
     pid_t pid_;