NetBSD Wiki/examples/
proplib
Proplib is an API/lib to create, handle and store property lists. 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). Here's a little example code to show some of the basics:
This will create a dictionary and store it as an xml file on the disk:
int
main(void)
{
prop_dictionary_t d;
bool r;
d = prop_dictionary_create();
if (d == NULL)
goto error;
r = prop_dictionary_set_cstring(d, "name", "Adam");
if (!r)
goto error;
r = prop_dictionary_set_uint32(d, "year", 1986);
if (!r)
goto error;
r = prop_dictionary_externalize_to_file(d, "test.plist");
if (!r)
goto error;
return EXIT_SUCCESS;
error :
fprintf(stderr, "error\n");
return EXIT_FAILURE;
}
And this will read it and display the values:
int
main(void)
{
prop_dictionary_t d;
uint32_t year;
char *name;
bool r;
d = prop_dictionary_internalize_from_file("test.plist");
if (d == NULL)
goto error;
r = prop_dictionary_get_cstring(d, "name", &name);
if (!r)
goto error;
r = prop_dictionary_get_uint32(d, "year", &year);
if (!r)
goto error;
printf("name: %s, year: %u\n", name, year);
return EXIT_SUCCESS;
error :
fprintf(stderr, "error\n");
return EXIT_FAILURE;
}
Add a comment