updater: Add testcase for package_extract_dir().
Test: recovery_component_test passes. Change-Id: I3af4707bc42c7331ca961be8b967a53de82ea25b
This commit is contained in:
@@ -454,28 +454,32 @@ Value* SetProgressFn(const char* name, State* state, int argc, Expr* argv[]) {
|
||||
return StringValue(frac_str);
|
||||
}
|
||||
|
||||
// package_extract_dir(package_path, destination_path)
|
||||
Value* PackageExtractDirFn(const char* name, State* state,
|
||||
int argc, Expr* argv[]) {
|
||||
if (argc != 2) {
|
||||
return ErrorAbort(state, kArgsParsingFailure, "%s() expects 2 args, got %d", name, argc);
|
||||
}
|
||||
// package_extract_dir(package_dir, dest_dir)
|
||||
// Extracts all files from the package underneath package_dir and writes them to the
|
||||
// corresponding tree beneath dest_dir. Any existing files are overwritten.
|
||||
// Example: package_extract_dir("system", "/system")
|
||||
//
|
||||
// Note: package_dir needs to be a relative path; dest_dir needs to be an absolute path.
|
||||
Value* PackageExtractDirFn(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);
|
||||
}
|
||||
const std::string& zip_path = args[0];
|
||||
const std::string& dest_path = args[1];
|
||||
std::vector<std::string> args;
|
||||
if (!ReadArgs(state, 2, argv, &args)) {
|
||||
return ErrorAbort(state, kArgsParsingFailure, "%s() Failed to parse the argument(s)", name);
|
||||
}
|
||||
const std::string& zip_path = args[0];
|
||||
const std::string& dest_path = args[1];
|
||||
|
||||
ZipArchiveHandle za = ((UpdaterInfo*)(state->cookie))->package_zip;
|
||||
ZipArchiveHandle za = static_cast<UpdaterInfo*>(state->cookie)->package_zip;
|
||||
|
||||
// To create a consistent system image, never use the clock for timestamps.
|
||||
struct utimbuf timestamp = { 1217592000, 1217592000 }; // 8/1/2008 default
|
||||
// To create a consistent system image, never use the clock for timestamps.
|
||||
constexpr struct utimbuf timestamp = { 1217592000, 1217592000 }; // 8/1/2008 default
|
||||
|
||||
bool success = ExtractPackageRecursive(za, zip_path, dest_path, ×tamp, sehandle);
|
||||
bool success = ExtractPackageRecursive(za, zip_path, dest_path, ×tamp, sehandle);
|
||||
|
||||
return StringValue(success ? "t" : "");
|
||||
return StringValue(success ? "t" : "");
|
||||
}
|
||||
|
||||
// package_extract_file(package_file[, dest_file])
|
||||
|
||||
Reference in New Issue
Block a user