1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdio.h>
2a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner#include <stdlib.h>
3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <cutils/properties.h>
5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <sys/system_properties.h>
7a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner#include "dynarray.h"
8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
9a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turnerstatic void record_prop(const char* key, const char* name, void* opaque)
10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
11a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    strlist_t* list = opaque;
12a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    char temp[PROP_VALUE_MAX + PROP_NAME_MAX + 16];
13a95abdd8ed69bff64f272f21cfad9c3d4b006c4cBrian Muramatsu    snprintf(temp, sizeof temp, "[%s]: [%s]", key, name);
14a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    strlist_append_dup(list, temp);
15a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner}
16a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner
17a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turnerstatic void list_properties(void)
18a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner{
19a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    strlist_t  list[1] = { STRLIST_INITIALIZER };
20a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner
21a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    /* Record properties in the string list */
22a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    (void)property_list(record_prop, list);
23a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner
24a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    /* Sort everything */
25a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    strlist_sort(list);
26a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner
27a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    /* print everything */
28a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    STRLIST_FOREACH(list, str, printf("%s\n", str));
29a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner
30a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    /* voila */
31a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner    strlist_done(list);
32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectint __system_property_wait(prop_info *pi);
35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectint getprop_main(int argc, char *argv[])
37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    int n = 0;
39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    if (argc == 1) {
41a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner        list_properties();
42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    } else {
43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        char value[PROPERTY_VALUE_MAX];
44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        char *default_value;
45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        if(argc > 2) {
46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            default_value = argv[2];
47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        } else {
48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            default_value = "";
49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        }
50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        property_get(argv[1], value, default_value);
52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        printf("%s\n", value);
53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
54dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return 0;
55dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
56