#include <libubox/blobmsg_json.h>
#include <libubox/avl-cmp.h>
+#include <json-c/json.h>
#include "../procd.h"
[SERVICE_VAL_DATA] = { "data", BLOBMSG_TYPE_TABLE },
};
-static struct avl_tree validators;
+static AVL_TREE(validators, avl_strcmp, true, NULL);
void
service_validate_dump_all(struct blob_buf *b, char *p, char *s)
if (s && strcmp(s, v->type))
continue;
- o = json_object_object_get(r, v->package);
+ json_object_object_get_ex(r, v->package, &o);
if (!o) {
o = json_object_new_object();
json_object_object_add(r, v->package, o);
}
- t = json_object_object_get(o, v->type);
+ json_object_object_get_ex(o, v->type, &t);
if (!t) {
t = json_object_new_object();
json_object_object_add(o, v->type, t);
json_object_object_add(t, vr->option, json_object_new_string(vr->rule));
}
blobmsg_add_object(b, r);
+ json_object_put(r);
}
void
list_for_each_entry_safe(v, n, &s->validators, list) {
struct vrule *vr, *a;
- avl_for_each_element_safe(&v->rules, vr, avl, a) {
- avl_delete(&v->rules, &vr->avl);
+ avl_remove_all_elements(&v->rules, vr, avl, a)
free(vr);
- }
+
avl_delete(&validators, &v->avl);
list_del(&v->list);
free(v);
free(vr);
}
}
-
-void
-service_validate_init(void)
-{
- avl_init(&validators, avl_strcmp, true, NULL);
-}