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

Commit f14af80a authored by Elliott Hughes's avatar Elliott Hughes
Browse files

recovery: Properly detect userdebug or eng builds

The recovery system behaves a little bit differently on userdebug or
eng builds by presenting error reports to the user in the ui.
This is controlled by checking the build fingerprint for the string
:userdebug/ or :eng/. But with AOSP version numbers most AOSP
builds blows the 92 char limit of ro.build.fingerprint and therefore
the property is not set, so this condition will always be evaluated
to false, for most builds.

Instead of depending on the flaky ro.build.fingerprint this change
uses ro.debuggable.

Change-Id: I74bc00c655ac596aaf4b488ecea58f0a8de9c26b
parent 99e084ca
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -61,9 +61,7 @@ stop_adbd() {

static void
maybe_restart_adbd() {
    char value[PROPERTY_VALUE_MAX+1];
    int len = property_get("ro.debuggable", value, NULL);
    if (len == 1 && value[0] == '1') {
    if (is_ro_debuggable()) {
        ui->Print("Restarting adbd...\n");
        set_usb_driver(true);
        property_set("ctl.start", "adbd");
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#ifndef RECOVERY_COMMON_H
#define RECOVERY_COMMON_H

#include <stdbool.h>
#include <stdio.h>
#include <stdarg.h>

@@ -46,6 +47,8 @@ FILE* fopen_path(const char *path, const char *mode);

void ui_print(const char* format, ...);

bool is_ro_debuggable();

#ifdef __cplusplus
}
#endif
+6 −3
Original line number Diff line number Diff line
@@ -161,6 +161,11 @@ fopen_path(const char *path, const char *mode) {
    return fp;
}

bool is_ro_debuggable() {
    char value[PROPERTY_VALUE_MAX+1];
    return (property_get("ro.debuggable", value, NULL) == 1 && value[0] == '1');
}

// close a file, log an error if the error indicator is set
static void
check_and_fclose(FILE *fp, const char *name) {
@@ -954,9 +959,7 @@ main(int argc, char **argv) {
            // If this is an eng or userdebug build, then automatically
            // turn the text display on if the script fails so the error
            // message is visible.
            char buffer[PROPERTY_VALUE_MAX+1];
            property_get("ro.build.fingerprint", buffer, "");
            if (strstr(buffer, ":userdebug/") || strstr(buffer, ":eng/")) {
            if (is_ro_debuggable()) {
                ui->ShowText(true);
            }
        }