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

Commit 52eddbac authored by Elliott Hughes's avatar Elliott Hughes
Browse files

Move dumpstate to calling getprop.

There's no obvious reason for reinventing the wheel like this (given that
dumpstate already spends most of its time calling out to other utilities),
and I keep having to come and fix this code.

(This time the problem being that there's no longer a limit on system
property names.)

Bug: http://b/33926793
Test: ran dumpstate
Merged-In: I08281680df5aabfdb39228abf8c2aab089cc8b9e
Change-Id: I08281680df5aabfdb39228abf8c2aab089cc8b9e
parent d9f506fd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -948,7 +948,7 @@ static void dumpstate(const std::string& screenshot_path, const std::string& ver
#endif
    dump_file("INTERRUPTS (2)", "/proc/interrupts");

    print_properties();
    run_command("SYSTEM PROPERTIES", 5, "getprop", NULL);

    run_command("VOLD DUMP", 10, "vdc", "dump", NULL);
    run_command("SECURE CONTAINERS", 10, "vdc", "asec", "list", NULL);
+0 −3
Original line number Diff line number Diff line
@@ -142,9 +142,6 @@ void send_broadcast(const std::string& action, const std::vector<std::string>& a
/* updates the overall progress of dumpstate by the given weight increment */
void update_progress(int weight);

/* prints all the system properties */
void print_properties();

/** opens a socket and returns its file descriptor */
int open_socket(const char *service);

+0 −34
Original line number Diff line number Diff line
@@ -885,40 +885,6 @@ void send_broadcast(const std::string& action, const std::vector<std::string>& a
    run_command_always(NULL, DROP_ROOT, REDIRECT_TO_STDERR, 20, am_args);
}

size_t num_props = 0;
static char* props[2000];

static void print_prop(const char *key, const char *name, void *user) {
    (void) user;
    if (num_props < sizeof(props) / sizeof(props[0])) {
        char buf[PROPERTY_KEY_MAX + PROPERTY_VALUE_MAX + 10];
        snprintf(buf, sizeof(buf), "[%s]: [%s]\n", key, name);
        props[num_props++] = strdup(buf);
    }
}

static int compare_prop(const void *a, const void *b) {
    return strcmp(*(char * const *) a, *(char * const *) b);
}

/* prints all the system properties */
void print_properties() {
    const char* title = "SYSTEM PROPERTIES";
    DurationReporter duration_reporter(title);
    printf("------ %s ------\n", title);
    ON_DRY_RUN_RETURN();
    size_t i;
    num_props = 0;
    property_list(print_prop, NULL);
    qsort(&props, num_props, sizeof(props[0]), compare_prop);

    for (i = 0; i < num_props; ++i) {
        fputs(props[i], stdout);
        free(props[i]);
    }
    printf("\n");
}

int open_socket(const char *service) {
    int s = android_get_control_socket(service);
    if (s < 0) {