summaryrefslogtreecommitdiffstats
path: root/updater/install.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'updater/install.cpp')
-rw-r--r--updater/install.cpp37
1 files changed, 22 insertions, 15 deletions
diff --git a/updater/install.cpp b/updater/install.cpp
index efc96c454..25f6a9106 100644
--- a/updater/install.cpp
+++ b/updater/install.cpp
@@ -66,7 +66,7 @@
// Send over the buffer to recovery though the command pipe.
static void uiPrint(State* state, const std::string& buffer) {
- UpdaterInfo* ui = reinterpret_cast<UpdaterInfo*>(state->cookie);
+ UpdaterInfo* ui = static_cast<UpdaterInfo*>(state->cookie);
// "line1\nline2\n" will be split into 3 tokens: "line1", "line2" and "".
// So skip sending empty strings to UI.
@@ -117,6 +117,7 @@ static int make_parents(char* name) {
}
// mount(fs_type, partition_type, location, mount_point)
+// mount(fs_type, partition_type, location, mount_point, mount_options)
//
// fs_type="ext4" partition_type="EMMC" location=device
Value* MountFn(const char* name, State* state, int argc, Expr* argv[]) {
@@ -252,7 +253,6 @@ static int exec_cmd(const char* path, char* const argv[]) {
return WEXITSTATUS(status);
}
-
// format(fs_type, partition_type, location, fs_size, mount_point)
//
// fs_type="ext4" partition_type="EMMC" location=device fs_size=<bytes> mount_point=<location>
@@ -301,14 +301,13 @@ Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) {
if (fs_type == "ext4") {
int status = make_ext4fs(location.c_str(), size, mount_point.c_str(), sehandle);
if (status != 0) {
- printf("%s: make_ext4fs failed (%d) on %s",
- name, status, location.c_str());
+ printf("%s: make_ext4fs failed (%d) on %s", name, status, location.c_str());
return StringValue("");
}
return StringValue(location);
} else if (fs_type == "f2fs") {
if (size < 0) {
- printf("fs_size can't be negative for f2fs: %s", fs_size.c_str());
+ printf("%s: fs_size can't be negative for f2fs: %s", name, fs_size.c_str());
return StringValue("");
}
std::string num_sectors = std::to_string(size / 512);
@@ -318,8 +317,7 @@ Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) {
num_sectors.c_str(), nullptr};
int status = exec_cmd(f2fs_path, (char* const*)f2fs_argv);
if (status != 0) {
- printf("%s: mkfs.f2fs failed (%d) on %s",
- name, status, location.c_str());
+ printf("%s: mkfs.f2fs failed (%d) on %s", name, status, location.c_str());
return StringValue("");
}
return StringValue(location);
@@ -365,8 +363,14 @@ Value* RenameFn(const char* name, State* state, int argc, Expr* argv[]) {
return StringValue(dst_name);
}
+// delete([filename, ...])
+// Deletes all the filenames listed. Returns the number of files successfully deleted.
+//
+// delete_recursive([dirname, ...])
+// Recursively deletes dirnames and all their contents. Returns the number of directories
+// successfully deleted.
Value* DeleteFn(const char* name, State* state, int argc, Expr* argv[]) {
- std::vector<std::string> paths;
+ std::vector<std::string> paths(argc);
for (int i = 0; i < argc; ++i) {
if (!Evaluate(state, argv[i], &paths[i])) {
return nullptr;
@@ -382,7 +386,7 @@ Value* DeleteFn(const char* name, State* state, int argc, Expr* argv[]) {
}
}
- return StringValue(android::base::StringPrintf("%d", success));
+ return StringValue(std::to_string(success));
}
@@ -860,9 +864,13 @@ Value* GetPropFn(const char* name, State* state, int argc, Expr* argv[]) {
// file_getprop(file, key)
//
// interprets 'file' as a getprop-style file (key=value pairs, one
-// per line. # comment lines,blank lines, lines without '=' ignored),
+// per line. # comment lines, blank lines, lines without '=' ignored),
// and returns the value for 'key' (or "" if it isn't defined).
Value* FileGetPropFn(const char* name, State* state, int argc, Expr* argv[]) {
+ if (argc != 2) {
+ return ErrorAbort(state, kArgsParsingFailure, "%s() expects 2 args, got %d", name, argc);
+ }
+
std::vector<std::string> args;
if (!ReadArgs(state, 2, argv, &args)) {
return ErrorAbort(state, kArgsParsingFailure, "%s() Failed to parse the argument(s)", name);
@@ -876,11 +884,10 @@ Value* FileGetPropFn(const char* name, State* state, int argc, Expr* argv[]) {
filename.c_str(), strerror(errno));
}
-#define MAX_FILE_GETPROP_SIZE 65536
-
+ constexpr off_t MAX_FILE_GETPROP_SIZE = 65536;
if (st.st_size > MAX_FILE_GETPROP_SIZE) {
- return ErrorAbort(state, kFileGetPropFailure, "%s too large for %s (max %d)",
- filename.c_str(), name, MAX_FILE_GETPROP_SIZE);
+ return ErrorAbort(state, kFileGetPropFailure, "%s too large for %s (max %lld)",
+ filename.c_str(), name, static_cast<long long>(MAX_FILE_GETPROP_SIZE));
}
std::string buffer(st.st_size, '\0');
@@ -913,7 +920,7 @@ Value* FileGetPropFn(const char* name, State* state, int argc, Expr* argv[]) {
}
// trim whitespace between key and '='
- std::string str = android::base::Trim(line.substr(0, equal_pos - 1));
+ std::string str = android::base::Trim(line.substr(0, equal_pos));
// not the key we're looking for
if (key != str) continue;