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;
}