Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8df0d9c3 authored by Tanguy Pruvot's avatar Tanguy Pruvot Committed by Ricardo Cerqueira
Browse files

RECOVERY_PRE_COMMAND_CLEAR_REASON and extended reboot arguments

fix the 2 new warnings created by our 4-lines recovery patch ;p

Allow also to override toolbox reboot applet, for bootmenu

Change-Id: I975af19a8f295d1e341c7433f96f669db611f89c
parent 26e7a088
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -145,8 +145,11 @@ ifneq ($(TARGET_RECOVERY_PRE_COMMAND),)
    LOCAL_CFLAGS += -DRECOVERY_PRE_COMMAND='$(TARGET_RECOVERY_PRE_COMMAND)'
endif

LOCAL_C_INCLUDES := $(libcutils_c_includes) $(KERNEL_HEADERS)
ifeq ($(TARGET_RECOVERY_PRE_COMMAND_CLEAR_REASON),true)
    LOCAL_CFLAGS += -DRECOVERY_PRE_COMMAND_CLEAR_REASON
endif

LOCAL_C_INCLUDES := $(libcutils_c_includes) $(KERNEL_HEADERS)
LOCAL_STATIC_LIBRARIES := liblog
LOCAL_CFLAGS += $(targetSmpFlag)
include $(BUILD_STATIC_LIBRARY)
+23 −9
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <cutils/android_reboot.h>
@@ -103,12 +104,16 @@ static void remount_ro(void)

int android_reboot(int cmd, int flags, char *arg)
{
    int ret;
    int ret = 0;
    int reason = -1;

#ifdef RECOVERY_PRE_COMMAND
    if (cmd == ANDROID_RB_RESTART2) {
        if (!strncmp((char *)arg,"recovery",8))
            system( RECOVERY_PRE_COMMAND );
    if (cmd == (int) ANDROID_RB_RESTART2) {
        if (arg && strlen(arg) > 0) {
            char cmd[PATH_MAX];
            sprintf(cmd, RECOVERY_PRE_COMMAND " %s", arg);
            system(cmd);
        }
    }
#endif

@@ -120,22 +125,31 @@ int android_reboot(int cmd, int flags, char *arg)

    switch (cmd) {
        case ANDROID_RB_RESTART:
            ret = reboot(RB_AUTOBOOT);
            reason = RB_AUTOBOOT;
            break;

        case ANDROID_RB_POWEROFF:
            ret = reboot(RB_POWER_OFF);
            break;
            return ret;

        case ANDROID_RB_RESTART2:
            ret = __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,
                           LINUX_REBOOT_CMD_RESTART2, arg);
            // REBOOT_MAGIC
            break;

        default:
            ret = -1;
            return -1;
    }

#ifdef RECOVERY_PRE_COMMAND_CLEAR_REASON
    reason = RB_AUTOBOOT;
#endif

    if (reason != -1)
        ret = reboot(reason);
    else
        ret = __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,
                           LINUX_REBOOT_CMD_RESTART2, arg);

    return ret;
}
+8 −1
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ TOOLS := \
	rm \
	mkdir \
	rmdir \
	reboot \
	getevent \
	sendevent \
	date \
@@ -82,6 +81,14 @@ LOCAL_SRC_FILES:= \
	toolbox.c \
	$(patsubst %,%.c,$(TOOLS))

TOOLS += reboot

ifeq ($(BOARD_USES_BOOTMENU),true)
	LOCAL_SRC_FILES += ../../../external/bootmenu/libreboot/reboot.c
else
	LOCAL_SRC_FILES += reboot.c
endif

LOCAL_SHARED_LIBRARIES := libcutils libc libusbhost

LOCAL_C_INCLUDES := bionic/libc/bionic