X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=blob.c;h=c8e5dc90c80a342a4bf5bdce0a11d23f0a25a71f;hp=98c8d8a13a1ec627fe55c2510163d49c56088aed;hb=b342283d2dda28083322e99ffae874ba92839c74;hpb=160a9e13133aee87d8efcc838a2157073d5616d3 diff --git a/blob.c b/blob.c index 98c8d8a..c8e5dc9 100644 --- a/blob.c +++ b/blob.c @@ -25,6 +25,7 @@ uci_attr_to_blob(struct blob_buf *b, const char *str, { char *err; int intval; + long long llval; switch (type) { case BLOBMSG_TYPE_STRING: @@ -47,6 +48,13 @@ uci_attr_to_blob(struct blob_buf *b, const char *str, blobmsg_add_u32(b, name, intval); break; + case BLOBMSG_TYPE_INT64: + llval = strtoll(str, &err, 0); + if (*err) + return false; + + blobmsg_add_u64(b, name, llval); + break; default: return false; } @@ -105,11 +113,16 @@ __uci_element_to_blob(struct blob_buf *b, struct uci_element *e, types |= 1 << attr->type; if (attr->type == BLOBMSG_TYPE_ARRAY) { - if (!p->info) - continue; + int element_type = 0; + + if (p->info) + element_type = p->info[i].type; + + if (!element_type) + element_type = BLOBMSG_TYPE_STRING; array = blobmsg_open_array(b, attr->name); - uci_array_to_blob(b, o, p->info[i].type); + uci_array_to_blob(b, o, element_type); blobmsg_close_array(b, array); ret++; continue;