Loading updater/Android.mk +10 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,16 @@ LOCAL_STATIC_LIBRARIES += libapplypatch libedify libmtdutils libminzip libz LOCAL_STATIC_LIBRARIES += libmincrypt libbz LOCAL_STATIC_LIBRARIES += libcutils liblog libstdc++ libc LOCAL_STATIC_LIBRARIES += libselinux tune2fs_static_libraries := \ libext2_com_err \ libext2_blkid \ libext2_quota \ libext2_uuid_static \ libext2_e2p \ libext2fs LOCAL_STATIC_LIBRARIES += libtune2fs $(tune2fs_static_libraries) LOCAL_C_INCLUDES += external/e2fsprogs/misc LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. # Each library in TARGET_RECOVERY_UPDATER_LIBS should have a function Loading updater/install.c +33 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ #include "mtdutils/mtdutils.h" #include "updater.h" #include "install.h" #include "tune2fs.h" #ifdef USE_EXT4 #include "make_ext4fs.h" Loading Loading @@ -1539,6 +1540,37 @@ Value* EnableRebootFn(const char* name, State* state, int argc, Expr* argv[]) { return StringValue(strdup("t")); } Value* Tune2FsFn(const char* name, State* state, int argc, Expr* argv[]) { if (argc == 0) { return ErrorAbort(state, "%s() expects args, got %d", name, argc); } char** args = ReadVarArgs(state, argc, argv); if (args == NULL) { return ErrorAbort(state, "%s() could not read args", name); } int i; char** args2 = malloc(sizeof(char*) * (argc+1)); // Tune2fs expects the program name as its args[0] args2[0] = strdup(name); for (i = 0; i < argc; ++i) { args2[i + 1] = args[i]; } int result = tune2fs_main(argc + 1, args2); for (i = 0; i < argc; ++i) { free(args[i]); } free(args); free(args2[0]); free(args2); if (result != 0) { return ErrorAbort(state, "%s() returned error code %d", name, result); } return StringValue(strdup("t")); } void RegisterInstallFunctions() { RegisterFunction("mount", MountFn); RegisterFunction("is_mounted", IsMountedFn); Loading Loading @@ -1589,4 +1621,5 @@ void RegisterInstallFunctions() { RegisterFunction("set_stage", SetStageFn); RegisterFunction("enable_reboot", EnableRebootFn); RegisterFunction("tune2fs", Tune2FsFn); } Loading
updater/Android.mk +10 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,16 @@ LOCAL_STATIC_LIBRARIES += libapplypatch libedify libmtdutils libminzip libz LOCAL_STATIC_LIBRARIES += libmincrypt libbz LOCAL_STATIC_LIBRARIES += libcutils liblog libstdc++ libc LOCAL_STATIC_LIBRARIES += libselinux tune2fs_static_libraries := \ libext2_com_err \ libext2_blkid \ libext2_quota \ libext2_uuid_static \ libext2_e2p \ libext2fs LOCAL_STATIC_LIBRARIES += libtune2fs $(tune2fs_static_libraries) LOCAL_C_INCLUDES += external/e2fsprogs/misc LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. # Each library in TARGET_RECOVERY_UPDATER_LIBS should have a function Loading
updater/install.c +33 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ #include "mtdutils/mtdutils.h" #include "updater.h" #include "install.h" #include "tune2fs.h" #ifdef USE_EXT4 #include "make_ext4fs.h" Loading Loading @@ -1539,6 +1540,37 @@ Value* EnableRebootFn(const char* name, State* state, int argc, Expr* argv[]) { return StringValue(strdup("t")); } Value* Tune2FsFn(const char* name, State* state, int argc, Expr* argv[]) { if (argc == 0) { return ErrorAbort(state, "%s() expects args, got %d", name, argc); } char** args = ReadVarArgs(state, argc, argv); if (args == NULL) { return ErrorAbort(state, "%s() could not read args", name); } int i; char** args2 = malloc(sizeof(char*) * (argc+1)); // Tune2fs expects the program name as its args[0] args2[0] = strdup(name); for (i = 0; i < argc; ++i) { args2[i + 1] = args[i]; } int result = tune2fs_main(argc + 1, args2); for (i = 0; i < argc; ++i) { free(args[i]); } free(args); free(args2[0]); free(args2); if (result != 0) { return ErrorAbort(state, "%s() returned error code %d", name, result); } return StringValue(strdup("t")); } void RegisterInstallFunctions() { RegisterFunction("mount", MountFn); RegisterFunction("is_mounted", IsMountedFn); Loading Loading @@ -1589,4 +1621,5 @@ void RegisterInstallFunctions() { RegisterFunction("set_stage", SetStageFn); RegisterFunction("enable_reboot", EnableRebootFn); RegisterFunction("tune2fs", Tune2FsFn); }