X-Git-Url: http://www.project-moonshot.org/gitweb/?p=trust_router.git;a=blobdiff_plain;f=common%2Ftr_constraint.c;h=78c88f35718a4dccdc749936fb101bd64ed3ac99;hp=bfdf399bee39dea249aaa852b8e18dead06f080f;hb=32792249a45039b0a0e332091a499956498b55ca;hpb=34802d5d6365fa47ceab128bb5f10e10ba35a29e diff --git a/common/tr_constraint.c b/common/tr_constraint.c index bfdf399..78c88f3 100644 --- a/common/tr_constraint.c +++ b/common/tr_constraint.c @@ -33,6 +33,7 @@ */ #include #include +#include #include #include @@ -278,3 +279,35 @@ TR_CONSTRAINT_SET *tr_constraint_set_intersect( TID_REQ *request, tid_req_cleanup_json( request, result_array); return (TR_CONSTRAINT_SET *) result_array; } + + +int tr_constraint_set_get_match_strings( + TID_REQ *request, + TR_CONSTRAINT_SET *constraints, + const char *constraint_type, + tr_const_string **output, + size_t *output_len) +{ + json_t *cset = (json_t *) constraints; + json_t *member, *matches, *value;; + size_t index, array_size; + assert (output && output_len); + *output = NULL; + *output_len = 0; + if (json_array_size(cset) != 1) { + tr_debug("Constraint set for get_match_strings has more than one member\n"); + return -1; + } + member = json_array_get(cset, 0); + matches = json_object_get(member, constraint_type); + if (!matches) + return -1; + array_size = json_array_size(matches); + if (array_size == 0) + return -1; + *output = talloc_array_ptrtype(request, *output, array_size); + json_array_foreach( matches, index, value) + (*output)[index] = json_string_value(value); + *output_len = array_size; + return 0; +}