Annotation of wikisrc/examples/proplib.mdwn, revision 1.1

1.1     ! wiki        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()
        !             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: 
        !            37: And this will read it and display the values:
        !            38: 
        !            39: int
        !            40: main()
        !            41: {
        !            42:    prop_dictionary_t d;
        !            43:    uint32_t year;
        !            44:    char *name;
        !            45:    bool r;
        !            46: 
        !            47:    d = prop_dictionary_internalize_from_file("test.plist");
        !            48:    if (d == NULL)
        !            49:        goto error;
        !            50: 
        !            51:    r = prop_dictionary_get_cstring(d, "name", &name);
        !            52:    if (!r)
        !            53:        goto error;
        !            54:    r = prop_dictionary_get_uint32(d, "year", &year);
        !            55:    if (!r)
        !            56:        goto error;
        !            57: 
        !            58:    printf("name: %s, year: %u\n", name, year);
        !            59: 
        !            60:    return EXIT_SUCCESS;
        !            61: 
        !            62: error :
        !            63:    fprintf(stderr, "error\n");
        !            64:    return EXIT_FAILURE;
        !            65: }

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb