File:  [NetBSD Developer Wiki] / wikisrc / examples / proplib.mdwn
Revision 1.2: download - view: text, annotated - select for diffs
Fri May 13 08:47:34 2011 UTC (9 years, 5 months ago) by wiki
Branches: MAIN
CVS tags: HEAD
web commit by jym: Format for C output. Fix main() prototype.

    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