bump updater API version to 3; deprecate firmware update command

Remove support for the HTC-specific "firmware" update command and the
corresponding edify function write_firmware_update().  This
functionality is now done by an edify extension library that lives in
vendor/htc.

Change-Id: I80858951ff10ed8dfff98aefb796bef009e05efb
diff --git a/updater/install.c b/updater/install.c
index 934acaa..852b393 100644
--- a/updater/install.c
+++ b/updater/install.c
@@ -703,44 +703,6 @@
     return result;
 }
 
-// write_firmware_image(file, partition)
-//
-//    partition is "radio" or "hboot"
-//    file is not used until after updater exits
-//
-// TODO: this should live in some HTC-specific library
-char* WriteFirmwareImageFn(const char* name, State* state,
-                           int argc, Expr* argv[]) {
-    char* result = NULL;
-
-    char* partition;
-    char* filename;
-    if (ReadArgs(state, argv, 2, &filename, &partition) < 0) {
-        return NULL;
-    }
-
-    if (strlen(partition) == 0) {
-        ErrorAbort(state, "partition argument to %s can't be empty", name);
-        goto done;
-    }
-    if (strlen(filename) == 0) {
-        ErrorAbort(state, "file argument to %s can't be empty", name);
-        goto done;
-    }
-
-    FILE* cmd = ((UpdaterInfo*)(state->cookie))->cmd_pipe;
-    fprintf(cmd, "firmware %s %s\n", partition, filename);
-
-    printf("will write %s firmware from %s\n", partition, filename);
-    result = partition;
-
-done:
-    if (result != partition) free(partition);
-    free(filename);
-    return result;
-}
-
-
 extern int applypatch(int argc, char** argv);
 
 // apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1:patch, ...)
@@ -888,7 +850,6 @@
     RegisterFunction("getprop", GetPropFn);
     RegisterFunction("file_getprop", FileGetPropFn);
     RegisterFunction("write_raw_image", WriteRawImageFn);
-    RegisterFunction("write_firmware_image", WriteFirmwareImageFn);
 
     RegisterFunction("apply_patch", ApplyPatchFn);
     RegisterFunction("apply_patch_check", ApplyPatchFn);
diff --git a/updater/updater.c b/updater/updater.c
index 1aa277c..2d16dee 100644
--- a/updater/updater.c
+++ b/updater/updater.c
@@ -39,9 +39,11 @@
     }
 
     char* version = argv[1];
-    if ((version[0] != '1' && version[0] != '2') || version[1] != '\0') {
-        // We support version "1" or "2".
-        fprintf(stderr, "wrong updater binary API; expected 1 or 2, got %s\n",
+    if ((version[0] != '1' && version[0] != '2' && version[0] != '3') ||
+        version[1] != '\0') {
+        // We support version 1, 2, or 3.
+        fprintf(stderr, "wrong updater binary API; expected 1, 2, or 3; "
+                        "got %s\n",
                 argv[1]);
         return 2;
     }
@@ -100,6 +102,7 @@
     UpdaterInfo updater_info;
     updater_info.cmd_pipe = cmd_pipe;
     updater_info.package_zip = &za;
+    updater_info.version = atoi(version);
 
     State state;
     state.cookie = &updater_info;
diff --git a/updater/updater.h b/updater/updater.h
index 22fbfd2..bd60dc1 100644
--- a/updater/updater.h
+++ b/updater/updater.h
@@ -23,6 +23,7 @@
 typedef struct {
     FILE* cmd_pipe;
     ZipArchive* package_zip;
+    int version;
 } UpdaterInfo;
 
 #endif