{
char *err;
int intval;
+ long long llval;
switch (type) {
case BLOBMSG_TYPE_STRING:
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;
}
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;
mark:
ret = true;
if (diff)
- bitfield_set(diff, i);
+ uci_bitfield_set(diff, i);
else
return ret;
}