• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/libubox/tests/test-blobmsg-parse.c

  1 #include <stdio.h>
  2 #include <stdint.h>
  3 #include <stddef.h>
  4 #include <libgen.h>
  5 
  6 #include "blobmsg.h"
  7 
  8 enum {
  9         FOO_MESSAGE,
 10         FOO_LIST,
 11         FOO_TESTDATA,
 12         __FOO_MAX
 13 };
 14 
 15 static const struct blobmsg_policy foo_policy[] = {
 16         [FOO_MESSAGE] = {
 17                 .name = "message",
 18                 .type = BLOBMSG_TYPE_STRING,
 19         },
 20         [FOO_LIST] = {
 21                 .name = "list",
 22                 .type = BLOBMSG_TYPE_ARRAY,
 23         },
 24         [FOO_TESTDATA] = {
 25                 .name = "testdata",
 26                 .type = BLOBMSG_TYPE_TABLE,
 27         },
 28 };
 29 
 30 static void dump_result(const char *fn, int r, const char *filename, struct blob_attr **tb)
 31 {
 32         fprintf(stdout, "%s: %s: %c%c%c (%d)\n", basename((char *) filename), fn,
 33                 tb[FOO_MESSAGE] ? 'M' : '.',
 34                 tb[FOO_LIST] ? 'L' : '.',
 35                 tb[FOO_TESTDATA] ? 'T' : '.',
 36                 r);
 37 }
 38 
 39 static void test_blobmsg(const char *filename)
 40 {
 41 #define BUF_LEN 256
 42         int r = 0;
 43         size_t len = 0;
 44         FILE *fd = NULL;
 45         char *buf = NULL;
 46         struct blob_attr *tb[__FOO_MAX];
 47 
 48         fd = fopen(filename, "r");
 49         if (!fd) {
 50                 fprintf(stderr, "unable to open %s\n", filename);
 51                 return;
 52         }
 53 
 54         buf = malloc(BUF_LEN+1);
 55         if (!buf)
 56                 return;
 57 
 58         len = fread(buf, 1, BUF_LEN, fd);
 59         fclose(fd);
 60 
 61         r = blobmsg_parse(foo_policy, ARRAY_SIZE(foo_policy), tb, buf, len);
 62         dump_result("blobmsg_parse", r, filename, tb);
 63 
 64         r = blobmsg_parse_array(foo_policy, ARRAY_SIZE(foo_policy), tb, buf, len);
 65         dump_result("blobmsg_parse_array", r, filename, tb);
 66 
 67         free(buf);
 68 }
 69 
 70 int main(int argc, char *argv[])
 71 {
 72         if (argc != 2) {
 73                 fprintf(stderr, "Usage: %s <blobmsg.bin>\n", argv[0]);
 74                 return 3;
 75         }
 76 
 77         test_blobmsg(argv[1]);
 78 
 79         return 0;
 80 }
 81 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt