Add command line capabilities

Allows sending openrecoveryscript commands to TWRP via shell.
This may be handy for visually impaired users, for various one
click utilities to drive TWRP commands from a computer, for using
TWRP when a catastrophic hardware failure like a shattered screen
prevents you from being able to use touch, or even on devices like
a TV stick where touch and USB mouse input is unavailable.

This patch also includes a few minor changes to openrecoveryscript
including proper support for rebooting via the script and for
decrypting the device via the command line.

Change-Id: I796ad168efdd2da9c25334ac93d1079daaa7b0bc
diff --git a/gui/console.cpp b/gui/console.cpp
index b1f16c4..897c582 100644
--- a/gui/console.cpp
+++ b/gui/console.cpp
@@ -28,6 +28,7 @@
 
 static std::vector<std::string> gConsole;
 static std::vector<std::string> gConsoleColor;
+static FILE* ors_file;
 
 extern "C" void __gui_print(const char *color, char *buf)
 {
@@ -57,6 +58,10 @@
 		gConsole.push_back(start);
 		gConsoleColor.push_back(color);
 	}
+	if (ors_file) {
+		fprintf(ors_file, "%s\n", buf);
+		fflush(ors_file);
+	}
 }
 
 extern "C" void gui_print(const char *fmt, ...)
@@ -89,6 +94,11 @@
 	return;
 }
 
+extern "C" void gui_set_FILE(FILE* f)
+{
+	ors_file = f;
+}
+
 GUIConsole::GUIConsole(xml_node<>* node) : GUIObject(node)
 {
 	xml_attribute<>* attr;