X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=blobmsg.h;h=e9e0e6e08ed4c0a03eee3a54accdf5f83fd7c052;hp=1e497f77041784882b00ce40e2aade7c232f3c3d;hb=b3a6939f386f5a8f7b307211b15b939167d92a10;hpb=ef9b6b92df223e783a365f34998bc0f299b977f2 diff --git a/blobmsg.h b/blobmsg.h index 1e497f7..e9e0e6e 100644 --- a/blobmsg.h +++ b/blobmsg.h @@ -65,7 +65,12 @@ static inline int blobmsg_type(const struct blob_attr *attr) static inline void *blobmsg_data(const struct blob_attr *attr) { struct blobmsg_hdr *hdr = (struct blobmsg_hdr *) blob_data(attr); - return (char *) hdr + blobmsg_hdrlen(be16_to_cpu(hdr->namelen)); + char *data = blob_data(attr); + + if (blob_is_extended(attr)) + data += blobmsg_hdrlen(be16_to_cpu(hdr->namelen)); + + return data; } static inline int blobmsg_data_len(const struct blob_attr *attr) @@ -78,6 +83,11 @@ static inline int blobmsg_data_len(const struct blob_attr *attr) return blob_len(attr) - (end - start); } +static inline int blobmsg_len(const struct blob_attr *attr) +{ + return blobmsg_data_len(attr); +} + bool blobmsg_check_attr(const struct blob_attr *attr, bool name); bool blobmsg_check_attr_list(const struct blob_attr *attr, int type); int blobmsg_parse(const struct blobmsg_policy *policy, int policy_len,