- /* read the file */
- root = json_object_from_file(filename);
- if (!root) {
- fprintf(stderr, "reading file %s produced null\n", filename);
- exit(1);
+ switch (json_object_get_type(object)) {
+ case json_type_object:
+ case json_type_array:
+ /* check recursive */
+ here.upper = upper;
+ while (upper) {
+ if (upper->object == object)
+ return 0;
+ upper = upper->upper;
+ }
+ here.object = object;
+ switch (json_object_get_type(object)) {
+ case json_type_object:
+ ji = json_object_iter_begin(object);
+ jn = json_object_iter_end(object);
+ while (!json_object_iter_equal(&ji, &jn)) {
+ if (!is_tree(json_object_iter_peek_value(&ji), &here))
+ return 0;
+ json_object_iter_next(&ji);
+ }
+ break;
+ case json_type_array:
+ i = 0;
+ n = (int)json_object_array_length(object);
+ while (i != n) {
+ if (!is_tree(json_object_array_get_idx(object, i), &here))
+ return 0;
+ i++;
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;