blob: allow values to be added to blobmsg using multiple different types, but suppres...
[project/uci.git] / ucimap-example.c
index 9b315d0..6f06451 100644 (file)
@@ -56,7 +56,7 @@ network_parse_ip(void *section, struct uci_optmap *om, union ucimap_data *data,
        if (!target)
                return -1;
 
-       *data->data = target;
+       data->ptr = target;
        for (i = 0; i < 4; i++)
                target[i] = (char) tmp[i];
 
@@ -67,7 +67,7 @@ static int
 network_format_ip(void *section, struct uci_optmap *om, union ucimap_data *data, char **str)
 {
        static char buf[16];
-       unsigned char *ip = (unsigned char *) data->data[0];
+       unsigned char *ip = (unsigned char *) data->ptr;
 
        if (ip) {
                sprintf(buf, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
@@ -132,6 +132,8 @@ static struct ucimap_section_data *
 network_allocate(struct uci_map *map, struct uci_sectionmap *sm, struct uci_section *s)
 {
        struct uci_network *p = malloc(sizeof(struct uci_network));
+       if (!p)
+               return NULL;
        memset(p, 0, sizeof(struct uci_network));
        return &p->map;
 }
@@ -149,7 +151,6 @@ static struct my_optmap network_interface_options[] = {
                .map = {
                        UCIMAP_OPTION(struct uci_network, proto),
                        .type = UCIMAP_STRING,
-                       .name = "proto",
                        .data.s.maxlen = 32,
                }
        },
@@ -157,14 +158,12 @@ static struct my_optmap network_interface_options[] = {
                .map = {
                        UCIMAP_OPTION(struct uci_network, ifname),
                        .type = UCIMAP_STRING,
-                       .name = "ifname"
                }
        },
        {
                .map = {
                        UCIMAP_OPTION(struct uci_network, ipaddr),
                        .type = UCIMAP_CUSTOM,
-                       .name = "ipaddr",
                        .parse = network_parse_ip,
                        .format = network_format_ip,
                        .free = network_free_ip,
@@ -174,14 +173,12 @@ static struct my_optmap network_interface_options[] = {
                .map = {
                        UCIMAP_OPTION(struct uci_network, enabled),
                        .type = UCIMAP_BOOL,
-                       .name = "enabled",
                }
        },
        {
                .map = {
                        UCIMAP_OPTION(struct uci_network, test),
                        .type = UCIMAP_INT,
-                       .name = "test"
                }
        },
        {
@@ -244,6 +241,8 @@ int main(int argc, char **argv)
 
        INIT_LIST_HEAD(&ifs);
        ctx = uci_alloc_context();
+       if (!ctx)
+               return -1;
        ucimap_init(&network_map);
 
        if ((argc >= 2) && !strcmp(argv[1], "-s")) {