1: Proplib is an API/lib to create, handle and store property lists.
2: It was created by Apple but NetBSD also have a clean room implementation in the system, and it's mostly used for implementing sysctl interfaces. It's a somehow limited implementation to make it faster/smaller (maybe extended in the future as demands grow).
3: Here's a little example code to show some of the basics:
4:
5: This will create a dictionary and store it as an xml file on the disk:
6:
7: int
8: main(void)
9: {
10: prop_dictionary_t d;
11: bool r;
12:
13: d = prop_dictionary_create();
14:
15: if (d == NULL)
16: goto error;
17:
18: r = prop_dictionary_set_cstring(d, "name", "Adam");
19: if (!r)
20: goto error;
21: r = prop_dictionary_set_uint32(d, "year", 1986);
22: if (!r)
23: goto error;
24:
25: r = prop_dictionary_externalize_to_file(d, "test.plist");
26: if (!r)
27: goto error;
28:
29: return EXIT_SUCCESS;
30:
31: error :
32: fprintf(stderr, "error\n");
33: return EXIT_FAILURE;
34: }
35:
36: And this will read it and display the values:
37:
38: int
39: main(void)
40: {
41: prop_dictionary_t d;
42: uint32_t year;
43: char *name;
44: bool r;
45:
46: d = prop_dictionary_internalize_from_file("test.plist");
47: if (d == NULL)
48: goto error;
49:
50: r = prop_dictionary_get_cstring(d, "name", &name);
51: if (!r)
52: goto error;
53: r = prop_dictionary_get_uint32(d, "year", &year);
54: if (!r)
55: goto error;
56:
57: printf("name: %s, year: %u\n", name, year);
58:
59: return EXIT_SUCCESS;
60:
61: error :
62: fprintf(stderr, "error\n");
63: return EXIT_FAILURE;
64: }
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb