recovery: Fix the argument parsing from COMMAND_FILE.

Commit f0ed159f488c57c4ede0503443eb62fadfe0a831 didn't ensure mounting
COMMAND_FILE (i.e. /cache) prior to reading. Also the first argument in
COMMAND_FILE should not be dropped (unlike the first "recovery" argument
in BCB message).

Bug: 33431888
Test: Push /cache/recovery/command and recovery imag parses the
      arguments successfully.

Change-Id: Ica3157a0bb03a2355315123354617eaf3fff15a4
diff --git a/recovery.cpp b/recovery.cpp
index 5f16075..e16f28c 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -350,9 +350,12 @@
   // --- if that doesn't work, try the command file (if we have /cache).
   if (argc == 1 && has_cache) {
     std::string content;
-    if (android::base::ReadFileToString(COMMAND_FILE, &content)) {
+    if (ensure_path_mounted(COMMAND_FILE) == 0 &&
+        android::base::ReadFileToString(COMMAND_FILE, &content)) {
       std::vector<std::string> tokens = android::base::Split(content, "\n");
-      for (auto it = tokens.begin() + 1; it != tokens.end(); it++) {
+      // All the arguments in COMMAND_FILE are needed (unlike the BCB message,
+      // COMMAND_FILE doesn't use filename as the first argument).
+      for (auto it = tokens.begin(); it != tokens.end(); it++) {
         // Skip empty and '\0'-filled tokens.
         if (!it->empty() && (*it)[0] != '\0') args.push_back(std::move(*it));
       }