+static int dump(const char *js, jsmntok_t *t, size_t count, int indent, /*char *js_sv,*/ map_t *map) {
+ int i, j, k;
+ if (count == 0) {
+ return 0;
+ }
+ /* We may want to do strtol() here to get numeric value */
+ if (t->type == JSMN_PRIMITIVE) {
+ if(js_sv == "height")
+ {
+ map->height = (int)strtol(js+t->start, (char **)js+t->end, 10);
+ printf("h:[%d]\n", map->height);
+ }else if(js_sv == "width")
+ {
+ map->width = (int)strtol(js+t->start, (char **)js+t->end, 10);
+ printf("w:[%d]\n", map->width);
+ }
+ return 1;
+ /* We may use strndup() to fetch string value */
+ } else if (t->type == JSMN_STRING) {
+ //printf("'%.*s'", t->end - t->start, js+t->start);
+ if (jsoneq(js, t, "height") == 0 && indent==1)
+ {
+ js_sv="height";//strdup(js+t->start);//, t->end - t->start);
+ printf("%s\n", js_sv);
+ }else if (jsoneq(js, t, "width") == 0 && indent==1)
+ {
+ js_sv="width";//strdup(js+t->start);//, t->end - t->start);
+ printf("%s\n", js_sv);
+ }else js_sv=NULL;
+ return 1;
+ } else if (t->type == JSMN_OBJECT) {
+ //printf("\n");
+ j = 0;
+ for (i = 0; i < t->size; i++) {
+ //for (k = 0; k < indent; k++) printf("\t");
+ j += dump(js, t+1+j, count-j, indent+1, map);
+ //printf(": ");
+ j += dump(js, t+1+j, count-j, indent+1, map);
+ //printf("\n");
+ }
+ return j+1;
+ } else if (t->type == JSMN_ARRAY) {
+ j = 0;
+ //printf("==\n");
+ for (i = 0; i < t->size; i++) {
+ //for (k = 0; k < indent-1; k++) printf("\t");
+ //printf("\t-");
+ j += dump(js, t+1+j, count-j, indent+1, map);
+ //printf("==\n");
+ }
+ return j+1;
+ }
+ return 0;
+}
+
+int loadmap(char *mn, map_t *map)
+{