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