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

Commit 23ccc625 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
Change-Id: I08281680df5aabfdb39228abf8c2aab089cc8b9e
parent 061fc6a2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1059,7 +1059,7 @@ static void dumpstate() {
#endif
    DumpFile("INTERRUPTS (2)", "/proc/interrupts");

    print_properties();
    RunCommand("SYSTEM PROPERTIES", {"getprop"});

    RunCommand("VOLD DUMP", {"vdc", "dump"});
    RunCommand("SECURE CONTAINERS", {"vdc", "asec", "list"});
+0 −3
Original line number Diff line number Diff line
@@ -363,9 +363,6 @@ int dump_file_from_fd(const char *title, const char *path, int fd);
int dump_files(const std::string& title, const char* dir, bool (*skip)(const char* path),
               int (*dump_from_fd)(const char* title, const char* path, int fd));

/* 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
@@ -710,40 +710,6 @@ void Dumpstate::RunDumpsys(const std::string& title, const std::vector<std::stri
    RunCommand(title, dumpsys, options);
}

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);
    if (PropertiesHelper::IsDryRun()) 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) {