Cleanup ReadValueArgs in /device

Test: mma
Change-Id: I2c36530c37f002e38f4d5bc3d9d424c8db0a9d90
diff --git a/recovery/recovery_updater.cpp b/recovery/recovery_updater.cpp
index ee05901..fa23078 100644
--- a/recovery/recovery_updater.cpp
+++ b/recovery/recovery_updater.cpp
@@ -25,6 +25,10 @@
 #include <fcntl.h>
 #include <cutils/properties.h>
 #include <sys/mman.h>
+
+#include <string>
+#include <vector>
+
 #include "fw_version_check.h"
 #include "edify/expr.h"
 
@@ -284,7 +288,6 @@
 
 Value* FlashIfwiFuguFn(const char *name, State * state, int argc, Expr * argv[]) {
 	Value *ret = NULL;
-	char *filename = NULL;
 	unsigned char *buffer = NULL;
 	int ifwi_size;
 	FILE *f = NULL;
@@ -293,32 +296,33 @@
 		ErrorAbort(state, "%s() expected 1 arg, got %d", name, argc);
 		return NULL;
 	}
-	if (ReadArgs(state, argv, 1, &filename) < 0) {
+	std::vector<std::string> args;
+	if (!ReadArgs(state, 1, argv, &args)) {
 		ErrorAbort(state, "%s() invalid args ", name);
 		return NULL;
 	}
-
-	if (filename == NULL || strlen(filename) == 0) {
+	const std::string& filename = args[0];
+	if (filename.empty()) {
 		ErrorAbort(state, "filename argument to %s can't be empty", name);
-		goto done;
+		return nullptr;
 	}
 
-	if ((f = fopen(filename,"rb")) == NULL) {
-		ErrorAbort(state, "Unable to open file %s: %s ", filename, strerror(errno));
-		goto done;
+	if ((f = fopen(filename.c_str(),"rb")) == NULL) {
+		ErrorAbort(state, "Unable to open file %s: %s ", filename.c_str(), strerror(errno));
+		return nullptr;
 	}
 
 	fseek(f, 0, SEEK_END);
 	ifwi_size = ftell(f);
 	if (ifwi_size < 0) {
 		ErrorAbort(state, "Unable to get ifwi_size ");
-		goto done;
+		return nullptr;
 	};
 	fseek(f, 0, SEEK_SET);
 
 	if ((buffer = reinterpret_cast<unsigned char *>(malloc(ifwi_size))) == NULL) {
 		ErrorAbort(state, "Unable to alloc ifwi flash buffer of size %d", ifwi_size);
-		goto done;
+		return nullptr;
 	}
 	fread(buffer, ifwi_size, 1, f);
 	fclose(f);
@@ -326,15 +330,11 @@
 	if(flash_ifwi_scu_emmc(buffer, ifwi_size) !=0) {
 		ErrorAbort(state, "Unable to flash ifwi in emmc");
 		free(buffer);
-		goto done;
+		return nullptr;
 	};
 
 	free(buffer);
-	ret = StringValue(strdup(""));
-
-done:
-	if (filename)
-		free(filename);
+	ret = StringValue("");
 
 	return ret;
 }