Imported Upstream version 0.1.0+git20131207+e452e83
[deb_libhybris.git] / hybris / utils / getprop.c
1 /*
2 * Copyright (c) 2008 The Android Open Source Project
3 * 2013 Canonical Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 */
18
19 #include <stdio.h>
20 #include <stdlib.h>
21 #include <string.h>
22
23 #include <hybris/properties/properties.h>
24
25 typedef struct {
26 int count;
27 char** items;
28 } list_t;
29
30 static void record_prop(const char* key, const char* name, void* opaque)
31 {
32 list_t *list = (list_t *) opaque;
33
34 char temp[PROP_VALUE_MAX + PROP_NAME_MAX + 16];
35 snprintf(temp, sizeof(temp), "[%s]: [%s]", key, name);
36 list->items = realloc(list->items, (list->count + 1) * sizeof(char **));
37 list->items[list->count++] = strdup(temp);
38 }
39
40 static void list_properties(void)
41 {
42 int n;
43
44 list_t list;
45 memset(&list, 0, sizeof(list_t));
46
47 /* Record properties in the string list */
48 if (property_list(record_prop, &list) < 0)
49 return;
50
51 for (n = 0; n < list.count; n++) {
52 printf("%s\n", (char *) list.items[n]);
53 }
54 }
55
56 int main(int argc, char *argv[])
57 {
58 int n = 0;
59
60 if (argc == 1) {
61 list_properties();
62 } else {
63 char value[PROP_VALUE_MAX];
64 char *default_value;
65 if (argc > 2) {
66 default_value = argv[2];
67 } else {
68 default_value = "";
69 }
70
71 property_get(argv[1], value, default_value);
72 printf("%s\n", value);
73 }
74 return 0;
75 }