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

Commit be34e566 authored by Elliott Hughes's avatar Elliott Hughes Committed by android-build-merger
Browse files

Merge "Support arbitrary-length properties in property_list." am: c8121ba0

am: 92aab6db

Change-Id: Ie67332e2942d4113efb2c45cc01b1b2e1489fc4b
parents f8f1f485 92aab6db
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -98,7 +98,7 @@ cc_library {
                "ashmem-dev.c",
                "klog.cpp",
                "partition_utils.c",
                "properties.c",
                "properties.cpp",
                "qtaguid.c",
                "trace-dev.c",
                "uevent.c",
+12 −14
Original line number Diff line number Diff line
@@ -112,9 +112,7 @@ int property_set(const char *key, const char *value) {
}

int property_get(const char *key, char *value, const char *default_value) {
    int len;

    len = __system_property_get(key, value);
    int len = __system_property_get(key, value);
    if (len > 0) {
        return len;
    }
@@ -126,21 +124,21 @@ int property_get(const char *key, char *value, const char *default_value) {
    return len;
}

struct property_list_callback_data {
    void (*propfn)(const char *key, const char *value, void *cookie);
struct callback_data {
    void (*callback)(const char* name, const char* value, void* cookie);
    void* cookie;
};

static void property_list_callback(const prop_info *pi, void *cookie) {
    char name[PROP_NAME_MAX];
    char value[PROP_VALUE_MAX];
    struct property_list_callback_data *data = cookie;
static void trampoline(void* raw_data, const char* name, const char* value) {
    callback_data* data = reinterpret_cast<callback_data*>(raw_data);
    data->callback(name, value, data->cookie);
}

    __system_property_read(pi, name, value);
    data->propfn(name, value, data->cookie);
static void property_list_callback(const prop_info* pi, void* data) {
    __system_property_read_callback(pi, trampoline, data);
}

int property_list(void (*propfn)(const char *key, const char *value, void *cookie), void *cookie) {
    struct property_list_callback_data data = {propfn, cookie};
int property_list(void (*fn)(const char* name, const char* value, void* cookie), void* cookie) {
    callback_data data = { fn, cookie };
    return __system_property_foreach(property_list_callback, &data);
}