Skip to content
Snippets Groups Projects
Select Git revision
  • af43cd033c64384c521a9cb1fb68660d7799435c
  • master default protected
  • android-7.1.2_r28_klist
  • oreo-mr1-iot-release
  • sdk-release
  • pie-cts-dev
  • pie-cts-release
  • pie-vts-release
  • nougat-iot-release
  • pie-gsi
  • pie-platform-release
  • pie-r2-release
  • pie-r2-s1-release
  • pie-release
  • pie-dev
  • oreo-m4-s4-release
  • o-mr1-iot-preview-8
  • oreo-m2-s2-release
  • oreo-m2-s1-release
  • oreo-m6-s2-release
  • oreo-m6-s3-release
  • android-o-mr1-iot-release-1.0.4
  • android-9.0.0_r8
  • android-9.0.0_r7
  • android-9.0.0_r6
  • android-9.0.0_r5
  • android-8.1.0_r46
  • android-8.1.0_r45
  • android-n-iot-release-smart-display-r2
  • android-vts-8.1_r5
  • android-cts-8.1_r8
  • android-cts-8.0_r12
  • android-cts-7.1_r20
  • android-cts-7.0_r24
  • android-cts-6.0_r31
  • android-o-mr1-iot-release-1.0.3
  • android-cts-9.0_r1
  • android-8.1.0_r43
  • android-8.1.0_r42
  • android-n-iot-release-smart-display
  • android-p-preview-5
41 results

watchprops.c

Blame
  • watchprops.c 2.11 KiB
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <errno.h>
    
    #include <cutils/properties.h>
    #include <cutils/hashmap.h>
    
    #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
    #include <sys/_system_properties.h>
    
    static int str_hash(void *key)
    {
        return hashmapHash(key, strlen(key));
    }
    
    static bool str_equals(void *keyA, void *keyB)
    {
        return strcmp(keyA, keyB) == 0;
    }
    
    static void announce(char *name, char *value)
    {
        unsigned char *x;
        
        for(x = (unsigned char *)value; *x; x++) {
            if((*x < 32) || (*x > 127)) *x = '.';
        }
    
        fprintf(stderr,"%10d %s = '%s'\n", (int) time(0), name, value);
    }
    
    static void add_to_watchlist(Hashmap *watchlist, const char *name,
            const prop_info *pi)
    {
        char *key = strdup(name);
        unsigned *value = malloc(sizeof(unsigned));
        if (!key || !value)
            exit(1);
    
        *value = __system_property_serial(pi);
        hashmapPut(watchlist, key, value);
    }
    
    static void populate_watchlist(const prop_info *pi, void *cookie)
    {
        Hashmap *watchlist = cookie;
        char name[PROP_NAME_MAX];
        char value_unused[PROP_VALUE_MAX];
    
        __system_property_read(pi, name, value_unused);
        add_to_watchlist(watchlist, name, pi);
    }
    
    static void update_watchlist(const prop_info *pi, void *cookie)
    {
        Hashmap *watchlist = cookie;
        char name[PROP_NAME_MAX];
        char value[PROP_VALUE_MAX];
        unsigned *serial;
    
        __system_property_read(pi, name, value);
        serial = hashmapGet(watchlist, name);
        if (!serial) {
            add_to_watchlist(watchlist, name, pi);
            announce(name, value);
        } else {
            unsigned tmp = __system_property_serial(pi);
            if (*serial != tmp) {
                *serial = tmp;